1. 程式人生 > >Galera Cluster for MySQL 叢集備忘(Centos7)

Galera Cluster for MySQL 叢集備忘(Centos7)

博主的第一篇文章,寫的不完善的地方,請大家多擔待.

做程式設計師已經好久了,從來都是隻索取不奉獻。遇到問題都是在網上找別人分享的部落格來參考,自己卻沒有分享過。慚愧~

本文主要針對MySQL主主叢集配置方案,且伺服器的環境為Centos7

1.rpm檔案下載路徑:

下載時最好下載對應最新的安裝包,我下載的是5.6版本的

  使用 (yum install -y 包名)命令進行安裝 ,安裝MySQL時可能會安裝失敗,不用擔心,依次安裝所有的

包,如果還是安裝失敗,等其他安裝包安裝好以後,重新安裝一遍

2.mysql 首次啟動

 使用命令:service mysql start --skip-grant-tables  開啟mysql服務

 也就是使用safe模式啟動,登入的時候不用輸入密碼

 使用命令: mysql  登入

 新增使用者名稱、密碼和對應資料庫的使用者名稱、密碼許可權

  mysql> use mysql;

  mysql> update user set password=PASSWORD("密碼") where USER="使用者名稱"

  mysql> quit

  使用命令: service mysql  restart

  重啟mysql服務,使用建立的使用者名稱和密碼登入.

  再次進入的時候回提示你設定密碼

  mysql> SET PASSWORD=PASSWORD("密碼")

  給對應需要訪問MySQL的使用者名稱和密碼進行授權,如果沒有授權,是無法遠端連線MySQL的

  授權指定埠使用者連線mysql資料庫的命令:

   mysql>GRANT ALL PRIVILEGES ON *.* TO '使用者名稱'@'192.168.168.72' IDENTIFIED BY '密碼' WITH    GRANT OPTION; 

   授權無埠限制的使用者登入mysql資料庫:

 mysql>GRANT ALL PRIVILEGES ON *.* TO '使用者名稱'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;

3.Mysql相關環境設定

Galera 訪問預設為4567埠

MySQL訪問預設為3306埠

開啟防火牆命令:

systemctl stop firewalld.service(停止防火牆)

systemctl disable firewalld.service(禁止開機啟動)

firewall-cmd --zone=public --add-port=80/tcp --permanent (開啟埠)

firewall-cmd --zone=public --remove-port=80/tcp --permanent (刪除埠)

firewall-cmd --zone=public --query-port=80/tcp  --permanent (查詢是否有該埠)

firewall-cmd --reload (防火牆重設)

firewall-cmd --list-all (檢視所有埠)

開啟4444 4567 4568 9200 9300  3306埠

設定MySQL開機啟動:chkconfig mysql on

去掉Postfix,這個可能跟MySQL配置有衝突: yum remove postfix -y

4.Mysql配置檔案設定

拷貝wsrep.cnf 檔案(/usr/share/doc/mysql-wsrep-server) /etc/my.cnf.d/下: 

cp -r /usr/share/doc/mysql-wsrep-server/wsrep.cnf  /etc/my.cnf.d/

編輯/etc/my.cnf:

vi  /etc/my.cnf 

新增一行: !includedir  /etc/my.cnf.d/

修改wsrep.cnf: 

vi  /etc/my.cnf.d/wsrep,cnf     (能詳細指定埠號的,最好指定詳細的埠號)

#MySQL伺服器的ID,必須是唯一的

server-id=101

#galera叢集的名字,必須是統一的

wsrep_cluster_name='yangchuan'

#wsrep提供者,必須配置

wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so  (.so檔案的路徑在哪,就配置成哪)

#wsrep節點的ID,必須是唯一的

wsrep_node_name = node1

#叢集中的其他節點地址,可以使用主機名或IP

wsrep_cluster_address=gcomm://192.168.168.232:4567,192.168.168.72:4567,

#本機節點地址,可以使用主機名或IP

wsrep_node_address='192.168.168.102:4567'

#指定wsrep啟動埠號

wsrep_node_incoming_address='192.168.168.102:4567'

#一個逗號分割的節點串作為狀態轉移源,比如wsrep_sst_donor=node5,node3,如果node5可用,用node5,不可

#node3,如果node3不可用,最後的逗號表明讓提供商自己選擇一個最優的。

wsrep_sst_donor='node1,node2,node3,'

#執行緒數量。參考設定:1.CPU核心數*2以上;2.其它寫節點連線總數的1/4.

wsrep_slave_threads=16

#xtrabackup使用的使用者名稱密碼(最好能和mysql資料庫的使用者名稱密碼一致)

wsrep_sst_auth=root:123456

其餘配置暫不用修改,有需要配置的,最好了解清楚以後修改.


5.mysql 叢集啟動

0節點啟動方式一定是空地址啟動,不用指向其他節點:

Service mysql start --wsrep-cluster-address=”gcomm://”

其餘節點直接修改好配置使用service mysql start啟動就可以了

其餘節點配置方式主要是修改wsrep_cluster_address=”gcomm://192.168.168.112 ”

配置方式遵循,1節點指向0節點地址,2節點指向1節點地址,依次類推.

如果節點斷開,啟動之前先執行:mysqld_safe --wsrep-recover

 會出現"Revovered position …… :38719(比較這個數字,選擇最大值的 那個資料庫伺服器作為0節點啟動,個人覺得應該就是資料庫最多的那個作為0節點啟動)"

6.相關注意事項:

galera叢集是主主叢集配置,資料會同時寫入

建議叢集最少配置3個節點,也就是3臺伺服器,避免出現"腦裂",斷開其中一個,剩下兩臺還可以繼續使用

嚴禁在叢集斷開的時候,在單臺數據庫上進行新增資料的操作,後期想重新連線起來會比較麻煩

叢集配置好了以後使用命令: mysql> show status like ''wsrep%";

檢視配置的情況:


wsrep_cluster_size 後面的值為多少就表示目前叢集有多少個節點.

原創部落格,轉載請註明出處!