一主兩從一管理,一共四臺設備
node
MHA的做用是作master的高可用,當主節點MySQL故障時,會將和主節點數據最接近的一個從節點提高爲主節點,同時若是其餘從節點有更新的數據也會同步到此「準主節點」上。若是在主節點有數據已經提交可是全部的從節點還未完成複製,則從節點提高爲主節點後只能將此數據回退,沒有別的辦法。mysql
準備事項:sql
1、同步時間vim
ntpdate 172.18.0.1
2、配置主機域名,在主節點即node1上操做centos
vim /etc/hosts 192.168.1.101 node1 #主節點 192.168.1.106 node2 #從節點 192.168.1.107 node3 #從節點 192.168.1.100 node4 #manager scp /etc/hosts node2:/etc/hosts scp /etc/hosts node3:/etc/hosts scp /etc/hosts node4:/etc/hosts
3、MHA須要ssh無密鑰驗證
bash
ssh-keygen -t rsa -P '' cd /root/.ssh/ ssh-copy-id -i ./id_rsa.pub root@node1 scp id_rsa{,.pub} authorized_keys node2:/root/.ssh scp id_rsa{,.pub} authorized_keys node3:/root/.ssh scp id_rsa{,.pub} authorized_keys node4:/root/.ssh
下面開始具體步驟:服務器
1、配置主從複製集羣
app
node1: vim /etc/my.cnf.d/server.cnf [server] skip_name_resolve=ON innodb_file_per_table=ON server_id = 1 log_bin = master-log relay_log = relay-log #主節點也要配置中繼日誌,由於主節點故障再恢復時就會稱爲從節點
node2: vim /etc/my.cnf.d/server.cnf [server] skip_name_resolve=ON innodb_file_per_table=ON server_id = 2 relay_log = relay-log log_bin = master-log relay_log_purge = OFF read_only = ON node3: vim /etc/my.cnf.d/server.cnf [server] skip_name_resolve=ON innodb_file_per_table=ON server_id = 3 relay_log = relay-log log_bin = master-log relay_log_purge = OFF read_only = ON
開啓服務
ssh
systemctl start mariadb.service
2、在主節點受權複製帳號
ide
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.1.%' IDENTIFIED BY 'centos';
主節點受權管理設備的管理帳號
GRANT ALL ON *.* TO 'mhaadmin'@'192.168.1.%' IDENTIFIED BY 'centos';
寫入磁盤
FLUSH PRIVILEGES;
3、在從節點配置
CHANGE MASTER TO MASTER_HOST='192.168.1.101',MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=245; START SLAVE ; SHOW SLAVE STATUS\G; SELECT USER FROM mysql.user; #能看到複製受權帳戶和管理帳戶已經同步
4、安裝MHA軟件包
在manager節點安裝manager和node包
yum -y install mha4mysql-manager-0.56-0.el6.noarch.rpm yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
5、在node上安裝node包
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
6、在manager上配置
mkdir /etc/masterha vim /etc/masterha/app1.cnf [server default] user=mhaadmin password=centos manager_workdir=/data/masterha/app1 manager_log=/data/masterha/app1/manager.log remote_workdir=/data/masterha/app1 ssh_user=root repl_user=repluser repl_password=centos ping_interval=1 [server1] hostname=192.168.1.101 ssh_port=22 candidate_master=1 [server2] hostname=192.168.1.106 ssh_port=22 candidate_master=1 [server3] hostname=192.168.1.107 ssh_port=22 candidate_master=1
7、檢查配置並啓動服務
檢查 masterha_check_ssh --conf=/etc/masterha/app1.cnf masterha_check_repl --conf=/etc/masterha/app1.cnf 啓動manager服務器 masterha_manager --conf=/etc/masterha/app1.cnf
8、測試
此時模擬主節點故障
SHOW MASTER STATUS; SHOW SLAVE STATUS; #在從節點查看從節點信息,此時有一個從節點已經升級爲主節點
9、修復原主節點
vim /etc/my.cnf.d/server.cnf #添加兩行 relay_log_purge = OFF read_only = ON 再次開啓服務上線 systemctl start mariadb.service CHANGE MASTER TO MASTER_HOST='192.168.1.106',MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=320; START SLAVE; SHOW SLAVE STATUS\G; #此時的主節點就是替代的原從節點
10、在manager上檢查複製功能
masterha_check_repl --conf=/etc/masterha/app1.cnf 出現以下字樣就說明主從已經切換了,並且原主節點此時也變成了從節點 192.168.1.106(192.168.1.106:3306) (current master) +--192.168.1.101(192.168.1.101:3306) +--192.168.1.107(192.168.1.107:3306)
11、再次啓動MHA
nohup masterha_manager --conf=/etc/masterha/app1.cnf &> /data/masterha/app1/manager.log & #在後臺執行,並剝離與當前終端的關係 #當主節點再次down掉,此程序會自動結束同時主從節點自動切換。而後咱們還要再次手動開啓MHA
至此實驗結束