mysql 叢集+主從同步

來源:互聯網
上載者:User

標籤:com   資料庫表   地理位置   manage   安裝mysql   defaults   表示   速度   dex   

 

SQL節點: 給上層應用程式層提供sql訪問。

管理節點(MGM):  管理整個叢集。 啟動,關閉叢集。 通過ndb_mgmd命令啟動叢集

儲存/資料節點: 儲存cluster中的資料。  資料節點,可以提供副本。實現資料冗餘。

NDB引擎:是一種 “記憶體中”的儲存引擎 , 它具有可用性高和資料一致性好的特點。

 

缺陷

  • 基於記憶體,資料庫的規模受叢集總記憶體的大小限制
  • 基於記憶體,斷電後資料可能會有資料丟失,這點還需要通過測實驗證。
  • 多個節點通過網路實現通訊和資料同步、查詢等操作,因此整體性受網路速度影響,因此速度也比較慢

2.2 優點

  • 多個節點之間可以分布在不同的地理位置,因此也是一個實現分散式資料庫的方案。
  • 擴充性很好,增加節點即可實現資料庫叢集的擴充。
  • 冗餘性很好,多個節點上都有完整的資料庫資料,因此任何一個節點宕機都不會造成服務中斷。

Mysql cluster的:http://dev.mysql.com/downloads/cluster/

在我們做的實驗中mysql cluster叢集各機器角色如下分配:

mysql管理結點:xuegod63.cn   IP:192.168.31.130

mysql 資料結點:xuegod63.cn   IP:192.168.31.130

mysql 資料結點:xuegod64.cn   IP:192.168.31.131

msyql SQL結點:xuegod63.cn   IP:192.168.31.130

msyql SQL結點:xuegod64.cn   IP:192.168.31.131

將MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar上傳到130,131主機

實戰:MySQL叢集搭建

1.mysql舊版本清除

yum -y remove mysql

rpm -qa | grep mysql*

對於找到的2個剩餘mysql包,請按照如下的命令格式予以刪除:

rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

2.mysql cluster版本安裝準備

 [[email protected] ~]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 

[[email protected] yy]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 

3.建立檔案夾

(分如下3個類來建立對應的檔案夾)

資料結點存放資料,: [[email protected] ~]# mkdir /var/lib/mysql

管理節點: [[email protected] ~]# mkdir /var/lib/mysql-cluster     SQL節點:可不用  檔案夾授權

進程DIR:     [[email protected] ~]# mkdir /var/run/mysqld   

[[email protected] yy]# mkdir /var/run/mysqld

4.安裝mysql叢集軟體包

 [[email protected] ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 

[[email protected] ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

[[email protected] yy]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 

[[email protected] yy]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

注意:當安裝完畢MySQL-Cluster-server-gpl包後,將出現如下提示資訊,提醒我們整個cluster安裝後的初次超級賬戶密碼存在/root/.mysql_secret這個檔案當中。

5.賦許可權

  [[email protected] ~]# chown mysql:mysql -R /var/lib/mysql

 [[email protected] ~]#  chown mysql:mysql -R /var/lib/mysql-cluster/

 [[email protected] ~]# chown mysql:mysql -R  /usr/mysql-cluster/

 [[email protected] ~]#  chown mysql:mysql -R /var/run/mysqld/

 [[email protected] ~]# chown mysql:mysql -R /usr/mysql-cluster/

[[email protected] yy]# chown mysql:mysql -R /var/run/mysqld

 

 搭建mysql叢集

[[email protected] ~]# vim /var/lib/mysql-cluster/config.ini 

[ndbd default]
NoOfReplicas=2    #資料寫入數量。2表示兩份
DataMemory=200M
IndexMemory=100M  #索引給100M


[ndb_mgmd]
id=1
datadir=/var/lib/mysql-cluster   # 管理結點的日誌

HostName=192.168.31.130    #管理結點的IP地址。本機IP
###### data node options:
[ndbd]
HostName=192.168.31.130
DataDir=/var/lib/mysql          #mysql資料存放區路徑

id=2
[ndbd]
HostName=192.168.31.131  
DataDir=/var/lib/mysql 
id=3
# SQL node options: #關於SQL結點
[mysqld]
HostName=192.168.31.130
id=4
[mysqld]
HostName=192.168.31.131
id=5

~
資料節點+SQL節點配置文檔 + 主從同步

[[email protected] ~]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql              #mysql資料存放區路徑  資料節點(配置要加)

ndbcluster                #啟動ndb引擎

ndb-connectstring=192.168.31.130    # 管理節點IP地址 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.31.130       #管理節點IP地址
[mysqld]
log-bin=mysql-bin-master         #配置主從同步
server-id = 10

[[email protected] yy]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
ndbcluster
ndb-connectstring=192.168.31.130
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.31.130
[mysqld]
log-bin=mysql-bin-slave
server-id = 11
~

MySQL Cluster啟動

 [[email protected] ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[[email protected] ~]# ndbd --initial              第一次啟動加--initial  

[[email protected] yy]# ndbd --initial

啟動SQL結點服務

[[email protected] yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

[[email protected] ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

 

設定密碼及相關mysql設定

[[email protected] ~]# cat /home/yy/.mysql_secret

[[email protected] ~]# mysql_secure_installation

[[email protected] yy]# cat  /root/.mysql_secret 

[[email protected] yy]# mysql_secure_installation

查看mysql 叢集狀態:

[[email protected] ~]# ndb_mgm

130

mysql> grant replication slave on *.* to [email protected] identified by "123456";

mysql> flush privileges;

131

mysql>change master to master_host=‘192.168.31.130‘,master_user=‘slave‘,master_password=‘123456‘;

mysql> start slave; 

mysql> show slave status\G  查看狀態

130

 mysql> create database yy;

mysql> use yy

 mysql> create table tt(id int);

mysql> insert into tt values(11);

131

mysql> use yy

mysql> select * from tt;

 

 

關閉服務

[[email protected] ~]#  ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> shutdown

ndb_mgm> exit

[[email protected] ~]# ps -axu | grep  ndbd           #查看不到,說明資料節點已經被關

[[email protected] ~]# kill -9 pid號

[[email protected] yy]# ps -axu | grep  ndbd           #查看不到,說明資料節點已經被關

[[email protected] yy]# kill -9 pid號

啟動服務

[[email protected] ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[[email protected] ~]# ndbd

[[email protected] yy]#  ndbd

[[email protected] yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

[[email protected] ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

 

備忘:叢集做了資料庫的同步,沒有做資料庫表的同步,具體還是沒有理解這樣做的意義,如果叢集不能主從同步,那麼之前畫的那個圖就不準確。

  因此這裡自訂加的資料庫表的同步:採用主從同步的方式。

  後期做成M-s s-M,這樣無論修改哪一邊的資料,都能同步了。

 

 

 

mysql 叢集+主從同步

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.