一、初始化操做node
MHA:192.168.2.6 master:192.168.2.16 slave1:192.168.2.26 slave2:192.168.2.36 master: [root@master ~]# yum -y install mariadb-server [root@master ~]# vim /etc/my.cnf [mysqld] server_id=16 skip_name_resolve #跳過ip地址反向解析 log_bin #二進制日誌 [root@master ~]# systemctl start mariadb slavel: [root@slave1 ~]# yum -y install mariadb-server [root@slave1 ~]# vim /etc/my.cnf [mysqld] server_id=26 read-only log-bin relay_log_purge=0 #不清理中繼日誌 skip_name_resolve [root@slave1 ~]# systemctl start mariadb slave2: [root@slave2 ~]# yum -y install mariadb-server [root@slave2 ~]# vim /etc/my.cnf [mysqld] server_id=36 read-only log-bin relay_log_purge=0 skip_name_resolve [root@slave2 ~]# systemctl start mariadb
二、帳號創建mysql
master: MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.2.%' identified by '123456'; #複製帳號 MariaDB [(none)]> grant all on *.* to mhauser@'192.168.2.%' identified by '123456'; #管理帳號 slavel: MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.2.16', -> MASTER_USER='repluser', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=245; Query OK, 0 rows affected (0.06 sec) MariaDB [(none)]> start slave; MariaDB [(none)]> show slave status\G slave2: MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.2.16', -> MASTER_USER='repluser', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=245; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> start slave; MariaDB [(none)]> show slave status\G
三、測試主從複製是否成功sql
master: MariaDB [(none)]> create database db1; slave1: MariaDB [(none)]> show databases; slave2: MariaDB [(none)]> show databases;
四、基於key驗證,並測試互相正常通訊vim
mananger: [root@mananger ~]# ssh-keygen [root@mananger ~]# ssh-copy-id 192.168.2.6 [root@mananger ~]# scp -rp .ssh 192.168.2.16:/root/ [root@mananger ~]# scp -rp .ssh 192.168.2.26:/root/ [root@mananger ~]# scp -rp .ssh 192.168.2.36:/root/ [root@mananger ~]# ssh 192.168.2.16 Last login: Tue May 7 22:25:19 2019 from 192.168.2.6 [root@master ~]# ssh 192.168.2.26 Last login: Wed May 8 05:11:02 2019 from 192.168.2.1
五、下載安裝MHA(有依賴性須要配置epel)bash
mananger: [root@mananger ~]# ls mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm [root@mananger ~]# yum -y install *.rpm master: [root@master ~]# ls mha4mysql-node-0.56-0.el6.noarch.rpm [root@master ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm slave1: [root@slave1 ~]# ls mha4mysql-node-0.56-0.el6.noarch.rpm [root@slave1 ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm slave2: [root@slave2 ~]# ls mha4mysql-node-0.56-0.el6.noarch.rpm [root@slave2 ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
六、在管理節點創建配置文件服務器
mananger: [root@mananger ~]# mkdir /data [root@mananger ~]# mkdir /etc/mha/ [root@mananger ~]# vim /etc/mha/app1.conf [server default] user=mhauser password=123456 manager_workdir=/data/mastermha/app1/ manager_log=/data/mastermha/app1/manager.log remote_workdir=/data/mastermha/app1/ ssh_user=root repl_user=repluser repl_password=123456 ping_interval=1 [server1] hostname=192.168.2.16 candidate_master=1 [server2] hostname=192.168.2.26 candidate_master=1 [server3] hostname=192.168.2.36 candidate_master=1
七、在管理節點,MHA驗證和啓動app
mananger: [root@mananger ~]# masterha_check_ssh --conf=/etc/mha/app1.conf #密鑰驗證檢查 [root@mananger ~]# masterha_check_repl --conf=/etc/mha/app1.conf #複製檢查 [root@mananger ~]# masterha_manager --conf=/etc/mha/app1.conf #前臺啓動,等着主服務宕機以後,當即提高一個slave爲新的master
八、測試:主服務器寫入大量數據,而後忽然宕機ssh
master: [root@master ~]# mysql db1 < testlog.sql [root@master ~]# kill -9 11442
九、查看日誌ide
[root@mananger ~]# cat /data/mastermha/app1/manager.log ----- Failover Report ----- app1: MySQL Master failover 192.168.2.16(192.168.2.16:3306) to 192.168.2.26(192.168.2.26:3306) succeeded Master 192.168.2.16(192.168.2.16:3306) is down! Check MHA Manager logs at mananger:/data/mastermha/app1/manager.log for details. Started automated(non-interactive) failover. The latest slave 192.168.2.26(192.168.2.26:3306) has all relay logs for recovery. Selected 192.168.2.26(192.168.2.26:3306) as a new master. 192.168.2.26(192.168.2.26:3306): OK: Applying all logs succeeded. 192.168.2.36(192.168.2.36:3306): This host has the latest relay log events. Generating relay diff files from the latest slave succeeded. 192.168.2.36(192.168.2.36:3306): OK: Applying all logs succeeded. Slave started, replicating from 192.168.2.26(192.168.2.26:3306) 192.168.2.26(192.168.2.26:3306): Resetting slave info succeeded. Master failover to 192.168.2.26(192.168.2.26:3306) completed successfully. slave一、slave2查看狀態 MariaDB [(none)]> show slave status\G 注意:MHA一次性任務,因此將以提高的master的配置文件read-only去掉,不然機器重啓後不能寫入數據
十、最終驗證測試
新的主服務進行數據操做,看是否能夠同步到從服務