三十六.MHA集羣概述 、 部署MHA集羣 測試配置

1.準備MHA集羣環境
準備6臺虛擬機,並按照本節規劃配置好IP參數
在這些虛擬機之間實現SSH免密登陸
在相應節點上安裝好MHA相關的軟件包
 
使用6臺RHEL 7虛擬機,如圖-1所示。準備集羣環境,安裝依賴包,受權用戶,配置ssh密鑰對認證登錄,全部節點之間互相以root祕鑰對認證登陸,管理主機以root密鑰對認證登陸全部數據節點主機,配置mha集羣。
1.1 修改主機名,配置IP
msyql{50..57}
192.168.4.{50..57}
 
1.2 安裝包(51-55)
]# mkdir mha-soft-student
]# tar -xvf mha.tar.gz -C mha-soft-student
]# cd mha-soft-student
]# yum -y install perl-*.rpm
 
1.3 在管理主機上安裝mha_node 和 mha-manager包(56操做)
mha-soft-student]# yum -y install perl-DBD-mysql perl-DBI
mha-soft-student]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
 
1.4 配置ssh密鑰對認證登錄
全部節點之間能夠互相以ssh密鑰對方式認證登錄(以51爲例)
]# ssh-keygen
]# for i in {50..57}
> do 
> ssh-copy-id 192.168.4.$i
> done
 
2. 配置MHA集羣環境
配置主節點 master51
配置兩個備用主節點 master5二、master53
配置兩個從節點 slave5四、slave55
配置管理節點 mgm56
 
2.1 配置mha集羣環境
 
2.1.1 安裝數據庫(51-55一樣操做,以51爲例)
]# mkdir mysql
]# tar -xvf mysql-5.7.17.tar -C mysql
]# cd mysql/
]# yum -y install perl-JSON
]# rpm -Uvh mysql-community-*.rpm
]# rpm -qa | grep -i mysql
]# systemctl start mysqld
]# grep 'temporary password' /var/log/mysqld.log 
]# mysql -uroot -p''
mysql> alter user user() identified by "123456"; //修改登錄密碼
 
2.1.2 master51 數據庫服務器配置文件
]# vim /etc/my.cnf(52.53都配置,修改id)
relay_log_purge=off(不自動刪除本機的中繼日誌文件)
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
 
server_id=51
log-bin=master51
binlog-format="mixed"
validate_password_policy=0
validate_password_length=6
 
添加主從同步受權用戶(51)
mysql> grant replication slave on  *.*  to repluser@"%" identified by "123456";
mysql> RESET MASTER;
mysql> show master status;
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: master51.000001
         Position: 154
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
 
2.1.3 master52數據庫服務器配置文件(53一樣配置)
mysql> RESET MASTER;
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.4.51',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='master51.000001',
    -> MASTER_LOG_POS=154;
 
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
...
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
...
 
2.1.4 slave54 數據庫服務器配置文件(55同樣)
]# vim /etc/my.cnf
[mysqld]
server_id=54
log-bin=mysql54
binlog-format="mixed"
validate_password_policy=0
validate_password_length=6
 
mysql> RESET MASTER;
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.4.51',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='master51.000001',
    -> MASTER_LOG_POS=154;
 
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
...
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
...
 
2.2 配置管理主機4.56
# yum -y install perl*(root下)
]# cd mha-soft-student/
]# yum -y install *.rpm
]# tar -xvf mha4mysql-manager-0.56.tar.gz 
]# cd mha4mysql-manager-0.56/
]# prel Makefile.PL 
]# make && make install
 
]# cd mha-soft-student/mha4mysql-manager-0.56/
]# cp bin/* /usr/local/bin/ 
建立工做目錄
]# mkdir /etc/mha_manager
創建樣板文件 
]# cp samples/conf/app1.cnf /etc/mha_manager/
 
]# vim /etc/mha_manager/app1.cnf 
//編輯主配置文件app1.cnf
[server default]
manager_workdir=/etc/mha_manager
manager_log=/etc/mha_manager/manager.log
master_ip_failover_script=/usr/local/bin/master_ip_failover
 
ssh_user=root
ssh_port=22
repl_user=repluser
repl_password=123456
 
user=root
password=123456
 
[server1]
hostname=192.168.4.51    
port=3306
 
[server2]
hostname=192.168.4.52
port=3306            
candidate_master=1
 
[server3]
hostname=192.168.4.53
port=3306
candidate_master=1
 
[server4]
hostname=192.168.4.54
no_master=1
 
[server5]
hostname=192.168.4.55
no_master=1
 
建立故障切換的腳本
]# vim samples/scripts/master_ip_failover
 
 35 my $vip='192.168.4.100/24';
 36 my $key='1';
 37 my $ssh_start_vip = '/sbin/ifconfig eth0:$key $vip';
 38 my $ssh_stop_vip = '/sbin/ifconfig eth0:$key down';
 39 
40 GetOptions(在這上面添加上面幾行)
 
]# cp samples/scripts/master_ip_failover /usr/local/bin/
]# chmod +x /usr/local/bin/master_ip_failover
 
51上部署eth0
51 ~]# ifconfig eth0:1 192.168.4.100/24
]# ifconfig eth0:1
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
        ether 52:54:00:d6:46:46  txqueuelen 1000  (Ethernet)
 
3.測試MHA集羣
查看MHA集羣狀態
測試節點之間的SSH登陸
測試集羣VIP的故障切換功能
 
3.1 驗證配置
檢查配置環境,在主機 52-55 檢查是否有同步數據的用戶repluser
mysql> select user,host from mysql.user where user="repluser";
mysql> show grants for repluser@"%";
 
在51的主機上作root的受權,其餘的會同步(若是不作,在驗證數據節點的主從同步配置時會出錯)
mysql> grant all on *.* to root@"%" identified by "123456";
(50-55查看)
mysql> select user,host from mysql.user where user="root";
+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
| root | localhost |
+------+-----------+
 
驗證ssh 免密登錄數據節點主機(56)
-0.56]# cd /usr/local/bin/
bin]# masterha_check_ssh --conf=/etc/mha_manager/app1.cnf
...
MySQL Replication Health is  OK!
 
3.2 啓動管理服務MHA_Manager
--remove_dead_master_conf //刪除宕機主庫配置
--ignore_last_failover //忽略xxx.health文件
bin]# masterha_manager --conf=/etc/mha_manager/app1.cnf \  
 --remove_dead_master_conf --ignore_last_failover 
 
查看狀態(另開一個終端)
]# masterha_check_status --conf=/etc/mha_manager/app1.cnf
中止服務
]# masterha_stop --conf=/etc/mha_manager/app1.cnf
 
3.3 測試故障轉移
啓動服務
bin]# masterha_manager --conf=/etc/mha_manager/app1.cnf \ 
 --remove_dead_master_conf --ignore_last_failover
查看狀態
]# masterha_check_status --conf=/etc/mha_manager/app1.cnf
...master:192.168.4.52
 
驗證數據節點的主從同步配置
bin]# masterha_check_repl --conf=/etc/mha_manager/app1.cnf
相關文章
相關標籤/搜索