MHA部署記錄

一.MHA環境以下node

角色                     ip地址          主機名          server_id                    類型
Monitor host            192.168.0.20    server01            -                      監控複製組
Master                  192.168.0.50    server02            1                      寫入
Candicate master        192.168.0.60    server03            2                      讀
Slave                   192.168.0.70    server04            3                      讀

其中master對外提供寫服務,備選master(實際的slave,主機名server03)提供讀服務,slave也提供相關的讀服務,一旦master宕機,將會把備選master提高爲新的master,slave指向新的mastermysql

一、安裝依賴包sql

yum install -y gcc ntpdate wget lrzsz vim net-tools openssh-clients*

二、安裝epel源數據庫

yum install -y epel-release

三、安裝組件vim

一、在全部節點安裝MHA node所需的perl模塊(DBD:mysql)

yum install perl-DBD-MySQL -y

二、在全部的節點安裝mha node:

下載連接: 

https://code.google.com/archive/p/mysql-master-ha/downloads

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/mysql-master-ha/mha4mysql-node-0.54.tar.gz

tar xf mha4mysql-node-0.54.tar.gz

cd mha4mysql-node-0.54

perl Makefile.PL

make && make install

報錯一api

圖片描述

解決辦法:服務器

root># yum install perl-ExtUtils-MakeMaker

報錯二app

圖片描述

解決辦法:ssh

root># yum install perl-CPAN -y

2.安裝MHA Manageride

MHA Manager中主要包括了幾個管理員的命令行工具,例如master_manger,master_master_switch等。MHA Manger也依賴於perl模塊,具體以下:

(1)安裝MHA Node軟件包以前須要安裝依賴。我這裏使用yum完成,沒有epel源的可使用上面提到的腳本(epel源安裝也簡單)。注意:在MHA Manager的主機也是須要安裝MHA Node。

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install perl-DBD-MySQL -y


(2)安裝MHA Manager。首先安裝MHA Manger依賴的perl模塊(我這裏使用yum安裝):

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

安裝MHA Manager軟件包:
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/mysql-master-ha/mha4mysql-manager-0.54.tar.gz

tar xf mha4mysql-manager-0.54.tar.gz

cd mha4mysql-manager-0.54

perl Makefile.PL

make && make install

複製相關腳本到/usr/local/bin目錄

root># cp -rp /root/mha4mysql-manager-0.54/samples/scripts/* /usr/local/bin/

免key配置

root># ssh-copy-id 192.168.56.131
root># ssh-copy-id 192.168.56.132
root># ssh-copy-id 192.168.56.133

數據庫配置

1)在server02上執行備份(192.168.56.131)

mysqldump --master-data=2 --single-transaction -R --triggers -A > all.sql

在server02上建立複製用戶:

mysql> grant replication slave on *.* to 'repl'@'192.168.56.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

#修改root密碼
mysql> grant all privileges on *.* to root@"%" identified by '123456';

一、在主庫上查看偏移量
root># head -n 30 all.sql | grep 'CHANGE MASTER TO'
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=214;



二、在2個從庫上執行
CHANGE MASTER TO MASTER_HOST='192.168.56.131',MASTER_USER='repl', MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=214;


三、檢查主從是否一致
root># mysql -e 'show slave status\G' | egrep 'Slave_IO|Slave_SQL'
               Slave_IO_State: Waiting for master to send event
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

四、兩臺slave服務器設置read_only(從庫對外提供讀服務,只因此沒有寫進配置文件,是由於隨時slave會提高爲master)

server03<2018-08-14 17:25:23> /data
root># mysql -e 'set global read_only=1'

server04<2018-08-14 17:24:42> /data
root># mysql -e 'set global read_only=1'

五、建立監控用戶(在master上執行,也就是192.168.56.131):
mysql> grant all privileges on *.* to 'mha'@'192.168.56.%' identified  by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush  privileges;
Query OK, 0 rows affected (0.01 sec)

mysql>

六、在master主機上查看master的狀態。

mysql> SHOW SLAVE HOSTS;  
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|         3 |      | 3306 |         1 | b9543701-a052-11e8-b2f6-000c29c77f26 |
|         2 |      | 3306 |         1 | bcdbef2c-a052-11e8-b2f6-000c293612be |
+-----------+------+------+-----------+--------------------------------------+
2 rows in set (0.00 sec)

到這裏整個集羣環境已經搭建完畢,剩下的就是配置MHA軟件了。

5.配置MHA

1)建立MHA的工做目錄,而且建立相關配置文件(在軟件包解壓後的目錄裏面有樣例配置文件)。

server01<2018-08-14 17:30:36> ~
root># mkdir -p /etc/masterha

root># cp /root/mha4mysql-manager-0.54/samples/conf/app1.cnf /etc/masterha/

###使用proxysql的mha配置文件
root># cat /etc/masterha/proxy_app_default.cnf 
[server default]
manager_workdir=/etc/masterha/app1
manager_log=/etc/masterha/app1/manager_proxy.log
ssh_user=root
ssh_port=22
user=mha    
password=123456
ping_type=connect
repl_user=repl
repl_password=123456
master_binlog_dir=/var/lib/mysql/
ping_interval=3
#master failover時執行,不配置vip時不用配
master_ip_failover_script=/etc/masterha/app1/scripts/master_ip_failover_proxy
#shutdown_script=/etc/masterha/power_manager
report_script=/etc/masterha/app1/scripts/send_report_proxy  
master_ip_online_change_script=/etc/masterha/app1/scripts/master_ip_online_change_proxy
#secondary_check_script=masterha_secondary_check -s 192.168.56.130
[server1]
hostname=192.168.56.131
port=3306
candidate_master=1
#check_repl_delay=0
 
[server2]
hostname=192.168.56.132
port=3306
candidate_master=1  
#check_repl_delay=0
 
[server3]
hostname=192.168.56.133
port=3306
candidate_master=1  
#check_repl_delay=0


###使用vip的mha配置文件
root># cat vip_app_default.cnf 
[server default]
manager_workdir=/etc/masterha/app1
manager_log=/etc/masterha/app1/manager_vip.log
ssh_user=root
ssh_port=22
user=mha    
password=123456
ping_type=connect
repl_user=repl
repl_password=123456
master_binlog_dir=/var/lib/mysql/
ping_interval=3
#master failover時執行,不配置vip時不用配
master_ip_failover_script=/etc/masterha/app1/scripts/master_ip_failover
#shutdown_script=/etc/masterha/power_manager
report_script=/etc/masterha/app1/scripts/send_report
master_ip_online_change_script=/etc/masterha/app1/scripts/master_ip_online_change
#secondary_check_script=masterha_secondary_check -s 192.168.56.130
[server1]
hostname=192.168.56.131
port=3306
candidate_master=1
#check_repl_delay=0
 
[server2]
hostname=192.168.56.132
port=3306
candidate_master=1  
#check_repl_delay=0
 
[server3]
hostname=192.168.56.133
port=3306
candidate_master=1  
#check_repl_delay=0
相關文章
相關標籤/搜索