博主的第一篇文章,寫的不完善的地方,請大家多擔待.
做程序員已經好久了,從來都是只索取不奉獻。遇到問題都是在網上找別人分享的博客來參考,自己卻沒有分享過。慚愧~
本文主要針對MySQL主主集群配置方案,且服務器的環境為Centos7
首先使用如下命令來清理之前操作系統自帶的mysql安裝:yum -y remove mysql mysql-server mysql-libs mysql-devel
然后使用如下命令:rpm -qa | grep mysql* 查找
1.rpm文件下載路徑:
http://releases.galeracluster.com/centos/7/x86_64/
下載時最好下載對應最新的安裝包,我下載的是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 后面的值為多少就表示目前集群有多少個節點.
原創博客,轉載請注明出處!http://blog.csdn.net/yangchuan_csdn91/article/details/52689981?locationNum=2