mysql ——MHA
一、實驗環境:
- rhel6.5 selinux關閉,防火墻關閉
- 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
若以前做過數據庫實驗,需要清理數據庫數據
//清理以前數據庫的數據/etc/init.d/mysqld startrm -rf /var/lib/mysql/*> /var/log/mysqld.log/etc/init.d/mysqld restart在配置MHA之前,我們需要實現基于GTID的主從復制
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 //初始化設置二、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權限 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若出現Slave_SQL_Running為No的情況(即master與slave的數據不同步)
解決如下
三、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 //設置manager的工作目錄 manager_log=/etc/masterha/mha.log //設置manager的日志 master_binlog_dir=/var/lib/mysql //設置master 保存binlog的位置,以便MHA可以找到master的日志 user=root //監控用戶 password="5820Hh!@#" //設置mysql中root用戶的密碼,這個密碼是前文中創建監控用戶的那個密碼 ping_interval=1 //設置監控主庫,發送ping包的時間間隔,默認是3秒,嘗試三次沒有回應的時候自動進行railover remote_workdir=/tmp //設置遠端mysql在發生切換時binlog的保存位置 repl_user=tutu //設置復制環境中的復制用戶名 repl_password="5820Hh!@#" //設置復制用戶的密碼 ssh_user=root //設置ssh的登錄用戶名[server1] hostname=172.25.54.1 port=3306[server2] hostname=172.25.54.2 port=3306 candidate_master=1 //設置為候選master check_repl_delay=0 //默認情況下如果一個slave落后master 100M的relay logs的話,MHA將不會選擇該slave作為一個新的master[server3] hostname=172.25.54.3 port=3306 #no_master=1配置ssh免密連接
各個節點都是基于SSH互信通信; 把MHA管理節點上生成的私鑰文件分別復制到其它三個節點上,確保可無需驗證登錄。
[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/主節點授權:
mysql> grant all on *.* to root@'172.25.18.%' identified by '5820hhXM!@#'; //監控用戶授權四、測試:
//檢測各節點間 ssh 互信通信 [root@server4 ~]# masterha_check_ssh --conf=/etc/masterha/mah.conf ... All SSH connection tests passed successfully. //表示ssh配置成功//檢查管理MySQL復制集群的連接 [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中止主節點server1上mysql服務前,各slave的狀態:
server2和server3狀態一樣:
server2作為備份節點,主節點故障后會迅速替代其進行工作。
server2: mysql> show slave status\G; Empty set (0.00 sec)server3:
mysql> show slave status\G;Master_Host: 172.25.54.2手動完成在線主從節點切換:
[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總結
以上是生活随笔為你收集整理的mysql ——MHA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.7 的组复制
- 下一篇: mysql ——读写分离