mysql ——MHA
一、實(shí)驗(yàn)環(huán)境:
- rhel6.5 selinux關(guān)閉,防火墻關(guān)閉
- server1:172.25.54.4 mha-manager
- server2:172.25.54.1 master mysql-5.7.17 mha-node
- server3:172.25.54.2 master slave mysql-5.7.17 mha-node
- server4:172.25.54.3 master slave mysql-5.7.17 mha-node
若以前做過數(shù)據(jù)庫實(shí)驗(yàn),需要清理數(shù)據(jù)庫數(shù)據(jù)
//清理以前數(shù)據(jù)庫的數(shù)據(jù)/etc/init.d/mysqld startrm -rf /var/lib/mysql/*> /var/log/mysqld.log/etc/init.d/mysqld restart在配置MHA之前,我們需要實(shí)現(xiàn)基于GTID的主從復(fù)制
Server1為主庫,server2、3為從庫
修改配置文件 /etc/my.cnf
vim /etc/my.cnf
啟動mysql流程:
[root@server2 ~]# /etc/init.d/mysqld restart [root@server2 ~]# cat /var/log/mysqld.log | grep password 2018-08-08T08:51:19.321424Z 1 [Note] A temporary password is generated for root@localhost: u/Klif/g3sFi [root@server2 ~]# mysql_secure_installation //初始化設(shè)置二、Master配置:
[root@server2 ~]# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 //授予slaves replication權(quán)限 mysql> grant replication slave on *.* to 'tutu'@'172.25.54.%' identified by '5820hhXM!@#';三、Slave配置
[root@server3 ~]# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12mysql> change master to master_host='172.25.54.1',master_user='tutu',master_password='5820hhXM!@#', MASTER_AUTO_POSITION=1;mysql> start slave;mysql> show slave status\G;Slave_IO_Running: Yes ##表示mysql連接成功Slave_SQL_Running: Yes若出現(xiàn)Slave_SQL_Running為No的情況(即master與slave的數(shù)據(jù)不同步)
解決如下
三、MHA manager配置
需要的安裝包:
mha4mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56-0.el6.noarch.rpm
perl-Config-Tiny-2.12-7.1.el6.noarch.rpm
perl-Email-Date-Format-1.002-5.el6.noarch.rpm
perl-Log-Dispatch-2.27-1.el6.noarch.rpm
perl-Mail-Sender-0.8.16-3.el6.noarch.rpm
perl-Mail-Sendmail-0.79-12.el6.noarch.rpm
perl-MIME-Lite-3.027-2.el6.noarch.rpm
perl-MIME-Types-1.28-2.el6.noarch.rpm
perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm
mha高可用文件配置
[root@server4 ~]# mkdir /etc/masterha [root@server4 ~]#vim /etc/masterha/mah.conf ------------------------------------------------ [server default] manager_workdir=/etc/masterha //設(shè)置manager的工作目錄 manager_log=/etc/masterha/mha.log //設(shè)置manager的日志 master_binlog_dir=/var/lib/mysql //設(shè)置master 保存binlog的位置,以便MHA可以找到master的日志 user=root //監(jiān)控用戶 password="5820Hh!@#" //設(shè)置mysql中root用戶的密碼,這個密碼是前文中創(chuàng)建監(jiān)控用戶的那個密碼 ping_interval=1 //設(shè)置監(jiān)控主庫,發(fā)送ping包的時間間隔,默認(rèn)是3秒,嘗試三次沒有回應(yīng)的時候自動進(jìn)行railover remote_workdir=/tmp //設(shè)置遠(yuǎn)端mysql在發(fā)生切換時binlog的保存位置 repl_user=tutu //設(shè)置復(fù)制環(huán)境中的復(fù)制用戶名 repl_password="5820Hh!@#" //設(shè)置復(fù)制用戶的密碼 ssh_user=root //設(shè)置ssh的登錄用戶名[server1] hostname=172.25.54.1 port=3306[server2] hostname=172.25.54.2 port=3306 candidate_master=1 //設(shè)置為候選master check_repl_delay=0 //默認(rèn)情況下如果一個slave落后master 100M的relay logs的話,MHA將不會選擇該slave作為一個新的master[server3] hostname=172.25.54.3 port=3306 #no_master=1配置ssh免密連接
各個節(jié)點(diǎn)都是基于SSH互信通信; 把MHA管理節(jié)點(diǎn)上生成的私鑰文件分別復(fù)制到其它三個節(jié)點(diǎn)上,確保可無需驗(yàn)證登錄。
[root@server4 ~]# ssh-keygen -t rsa [root@server4 ~]# ssh-copy-id server4 [root@server4 ~]# ssh-copy-id 172.25.54.4 [root@server4 ~]# ssh-copy-id 172.25.54.3 [root@server4 ~]# ssh-copy-id 172.25.54.2 [root@server4 ~]# ssh-copy-id 172.25.54.1 [root@server1 ~]# scp ~/.ssh/* server1:~/.ssh/ [root@server1 ~]# scp ~/.ssh/* server1:~/.ssh/ [root@server1 ~]# scp ~/.ssh/* server3:~/.ssh/主節(jié)點(diǎn)授權(quán):
mysql> grant all on *.* to root@'172.25.18.%' identified by '5820hhXM!@#'; //監(jiān)控用戶授權(quán)四、測試:
//檢測各節(jié)點(diǎn)間 ssh 互信通信 [root@server4 ~]# masterha_check_ssh --conf=/etc/masterha/mah.conf ... All SSH connection tests passed successfully. //表示ssh配置成功//檢查管理MySQL復(fù)制集群的連接 [root@server4 ~]# masterha_check_repl --conf=/etc/masterha/mah.conf ... MySQL Replication Health is OK. //表示正常通過檢測高可用檢測:
MHA manager
//啟動 MHA [root@server4 ~]# nohup masterha_manager --conf=/etc/masterha/mah.conf --ignore_last_failover 2>&1中止主節(jié)點(diǎn)server1上mysql服務(wù)前,各slave的狀態(tài):
server2和server3狀態(tài)一樣:
server2作為備份節(jié)點(diǎn),主節(jié)點(diǎn)故障后會迅速替代其進(jìn)行工作。
server2: mysql> show slave status\G; Empty set (0.00 sec)server3:
mysql> show slave status\G;Master_Host: 172.25.54.2手動完成在線主從節(jié)點(diǎn)切換:
[root@server1 ~]# masterha_master_switch --conf=/etc/master/mah.conf--master_state=alive --new_master_host=172.25.54.2 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=1000故障切換:
[root@server1 ~]#masterha_master_switch --conf=/etc/master/mah.conf--master_state=dead --dead_master_host=172.25.54.1 --dead_master_port=3306 --new_master_host=172.25.54.2 --new_master_port=3306 --ignore_last_failover總結(jié)
以上是生活随笔為你收集整理的mysql ——MHA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.7 的组复制
- 下一篇: mysql ——读写分离