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 後面的值為多少就表示目前叢集有多少個節點.
原創部落格,轉載請註明出處!