mysql 集群+主從同步


 

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版本安裝准備

 [root@ygy130 ~]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 

[root@yu131 yy]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 

3.創建文件夾

(分如下3個類來創建對應的文件夾)

數據結點存放數據,: [root@ygy130 ~]# mkdir /var/lib/mysql

管理節點: [root@ygy130 ~]# mkdir /var/lib/mysql-cluster     SQL節點:可不用  文件夾授權

進程DIR:     [root@ygy130 ~]# mkdir /var/run/mysqld   

[root@yu131 yy]# mkdir /var/run/mysqld

4.安裝mysql集群軟件包

 [root@ygy130 ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 

[root@ygy130 ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

[root@yu131 yy]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 

[root@yu131 yy]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

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

5.賦權限

  [root@ygy130 ~]# chown mysql:mysql -R /var/lib/mysql

 [root@ygy130 ~]#  chown mysql:mysql -R /var/lib/mysql-cluster/

 [root@ygy130 ~]# chown mysql:mysql -R  /usr/mysql-cluster/

 [root@ygy130 ~]#  chown mysql:mysql -R /var/run/mysqld/

 [root@ygy130 ~]# chown mysql:mysql -R /usr/mysql-cluster/

[root@yu131 yy]# chown mysql:mysql -R /var/run/mysqld

 

 搭建mysql集群

[root@ygy130 ~]# 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節點配置文檔 + 主從同步

[root@ygy130 ~]# 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

[root@yu131 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啟動

 [root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[root@ygy130 ~]# ndbd --initial              第一次啟動加--initial  

[root@yu131 yy]# ndbd --initial

啟動SQL結點服務

[root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

[root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

 

設置密碼及相關mysql設置

[root@ygy130 ~]# cat /home/yy/.mysql_secret

[root@ygy130 ~]# mysql_secure_installation

[root@yu131 yy]# cat  /root/.mysql_secret 

[root@yu131 yy]# mysql_secure_installation

查看mysql 集群狀態:

[root@ygy130 ~]# ndb_mgm

130

mysql> grant replication slave on *.* to slave@192.168.31.131 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;

 

 

關閉服務

[root@ygy130 ~]#  ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> shutdown

ndb_mgm> exit

[root@ygy130 ~]# ps -axu | grep  ndbd           #查看不到,說明數據節點已經被關

[root@ygy130 ~]# kill -9 pid號

[root@yu131 yy]# ps -axu | grep  ndbd           #查看不到,說明數據節點已經被關

[root@yu131 yy]# kill -9 pid號

啟動服務

[root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[root@ygy130 ~]# ndbd

[root@yu131 yy]#  ndbd

[root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

[root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

 

備注:集群做了數據庫的同步,沒有做數據庫表的同步,具體還是沒有理解這樣做的意義,如果集群不能主從同步,那么之前畫的那個圖就不准確。

  因此這里自定義加的數據庫表的同步:采用主從同步的方式。

  后期做成M-s s-M,這樣無論修改哪一邊的數據,都能同步了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM