目錄
- 一、環境軟體介紹
- 二、服務器介紹
- 三、配置主從同步
- 四、配置半同步
- 五、mha搭建
- (一)四臺機器ssh互通
- 1、在四臺服務器上分別執行下面命令,生成公鑰和私鑰
- 2、在三臺MySQL服務器分別執行下面命令,密碼輸入系統密碼,將公鑰拷到MHA Manager服務器上
- 3、將MHA Manager的公鑰添加到authorized_keys檔案中(此時應該包含4個公鑰)
- 4、MHA Manager服務器執行下面命令,向其他三臺MySQL服務器分發公鑰資訊,
- 5、測驗四臺服務器之間ssh是否配置成功
- (二)下載node和manager
- (三)MHA node安裝
- (四)MHA manager安裝
- (五)MHA 配置
- 1、初始化配置目錄
- 2、在主庫創建mha用戶
- 3、配置監控全域組態檔
- 4、配置監控實體組態檔
- (六)MHA 配置檢測
- 1、執行ssh通信檢測
- 2、檢測MySQL主從復制
- 3、MHA Manager啟動
- 六、測驗
- (一)主從同步、半同步測驗
- (二)mha測驗
- 1、mha通過ssh登錄3臺mysql服務器
- 2、執行第六步MHA 配置檢測
- ①執行ssh通信檢測
- ②檢測MySQL主從復制
- 3、啟動mha服務之后,查看日志及狀態
- 4、模擬主機出故障,從庫能自動切換功能
- ①master停止mysql服務
- ②查看mha日志,確認可以正常切換
- ③去當前從庫查看主庫情況
- ④在切換后的主節點機器上查看狀態展示效果
- ⑤在切換后的主節點機器資料庫添加資料,分別查詢主從庫資料一致
- ⑥將那個掛掉的資料庫重新啟動,然后試試手動切換主庫(將它重新指定成主庫)
- 七、注意事項
- 1、三臺mysql服務器的配置最好一致
- 2、master宕機切換master之后,原來的master節點配置會從app1.cnf中自動洗掉
4臺主機,1主、2從、1MHA
一、環境軟體介紹
- 阿里云服務器-:master
- ucloud服務器:兩個slave 及 mha
- 系統版本:4臺服務器均為centos 7 64位
- 遠程工具:xshell 、xftp
二、服務器介紹
| ip | 角色 |
|---|---|
| 8.131.87.12 | master |
| 106.75.32.128 | slave1 |
| 106.75.47.125 | slave2 |
| 106.75.75.142 | mha |
三、配置主從同步
步驟參考這個筆記,不再贅述
mysql集群之主從同步
四、配置半同步
步驟參考這個筆記,不再贅述
mysql集群之半同步復制
五、mha搭建
(一)四臺機器ssh互通
1、在四臺服務器上分別執行下面命令,生成公鑰和私鑰
注意,需要確認的項,直接回車采用默認值即可
生成的秘鑰查看:cat /root/.ssh/id_rsa.pub
ssh-keygen -t rsa
2、在三臺MySQL服務器分別執行下面命令,密碼輸入系統密碼,將公鑰拷到MHA Manager服務器上
ssh-copy-id 106.75.75.142

備注:
以在MHA Manager服務器上檢查下,看.ssh/authorized_keys檔案是否包含3個公鑰
cat /root/.ssh/authorized_keys
3、將MHA Manager的公鑰添加到authorized_keys檔案中(此時應該包含4個公鑰)
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
4、MHA Manager服務器執行下面命令,向其他三臺MySQL服務器分發公鑰資訊,
scp /root/.ssh/authorized_keys root@8.131.87.12:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@106.75.32.128:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@106.75.47.125:/root/.ssh/authorized_keys
提示【authorized_keys】表示成功,有錯誤的話會提示具體的報錯資訊
5、測驗四臺服務器之間ssh是否配置成功
可以MHA Manager執行下面命令,檢測下與三臺MySQL是否實作ssh互通,
ssh 8.131.87.12
exit
ssh 106.75.32.128
exit
ssh 106.75.47.125
exit
可以正常登陸就表示ssh通了
(二)下載node和manager
上傳到相應的服務器
- 三臺MySQL服務器需要安裝node
- MHA Manager服務器需要安裝manager和node
(三)MHA node安裝
MHA的Node依賴于perl-DBD-MySQL,所以要先安裝perl-DBD-MySQL,
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
(四)MHA manager安裝
MHA的manager又依賴了perl-Config-Tiny、perl-Log-Dispatch、perl-Parallel-ForkManager,也分別
進行安裝,
首先安裝依賴
yum install perl-Config-Tiny
yum install perl-Log-Dispatch
yum install perl-Parallel-ForkManager
安裝manager
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
(五)MHA 配置
MHA Manager服務器需要為每個監控的 Master/Slave 集群供一個專用的組態檔,而所有的Master/Slave 集群也可共享全域配置,
1、初始化配置目錄
#目錄說明
#/var/log (CentOS目錄)
# /mha (MHA監控根目錄)
# /app1 (MHA監控實體根目錄)
# /manager.log (MHA監控實體日志檔案)
mkdir -p /var/log/mha/app1
touch /var/log/mha/app1/manager.log
2、在主庫創建mha用戶
create user 'mha'@'%' identified by 'mha123';
grant all on *.* to mha@'%' identified by 'mha123';
flush privileges;
3、配置監控全域組態檔
在master mysql的主庫建一個新用戶
create user ‘mha’@’%’ identified by ‘mha123’;
grant all on . to mha@’%’ identified by ‘mha123’;
flush privileges;
vim /etc/masterha_default.cnf
[server default]
user=mha
password=mha123
port=3306
#ssh登錄賬號
ssh_user=root
#從庫復制賬號和密碼
repl_user=root
repl_password=root
port=3306
#ping次數
ping_interval=1
#二次檢查的主機
secondary_check_script=masterha_secondary_check -s 8.131.87.12 -s 106.75.32.128 -s 106.75.47.125 # 一主兩從三個庫的ip
4、配置監控實體組態檔
etc下創建mha檔案夾,檔案加內創建app1.cnf檔案
mkdir -p /etc/mha
vim /etc/mha/app1.cnf
app1.cnf配置如下:
[server default]
#MHA監控實體根目錄
manager_workdir=/var/log/mha/app1
#MHA監控實體日志檔案
manager_log=/var/log/mha/app1/manager.log
#[serverx] 服務器編號
#hostname 主機名
#candidate_master 可以做主庫
#master_binlog_dir binlog日志檔案目錄
[server1]
hostname=8.131.87.12
candidate_master=1
master_binlog_dir="/var/lib/mysql"
[server2]
hostname=106.75.32.128
candidate_master=1
master_binlog_dir="/var/lib/mysql"
[server3]
hostname=106.75.47.125
candidate_master=1
master_binlog_dir="/var/lib/mysql"
(六)MHA 配置檢測
1、執行ssh通信檢測
在MHA Manager服務器上執行:
masterha_check_ssh --conf=/etc/mha/app1.cnf

遇到的問題:
- 問題1:CentOS8權限問題沒搞懂,root用戶下authorized_keys檔案只讀不能修改,采取最笨的辦法,改成centos7
- 問題2:剛開始執行失敗,后來網路切換了一下就好了-_-||
2、檢測MySQL主從復制
在MHA Manager服務器上執行:
masterha_check_repl --conf=/etc/mha/app1.cnf
出現“MySQL Replication Health is OK.”證明MySQL復制集群沒有問題
遇到的問題:
[error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln443] Binlog filtering check failed on 106.75.32.128(106.75.32.128:3306)! All log-bin enabled servers must have same binlog filtering rules (same binlog-do-db and binlog-ignore-db). Check SHOW MASTER STATUS output and set my.cnf correctly.
Sat Jan 30 03:27:19 2021 - [warning] Bad Binlog/Replication filtering rules:
8.131.87.12 (current_master)
Binlog_Do_DB: lagou
Binlog_Ignore_DB: information_schema,performance_schema,sys
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
106.75.32.128
Binlog_Do_DB:
Binlog_Ignore_DB:
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
106.75.47.125
Binlog_Do_DB:
Binlog_Ignore_DB:
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Sat Jan 30 03:27:19 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln359] Slave configurations is not valid.
Sat Jan 30 03:27:19 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations. at /usr/bin/masterha_check_repl line 48.
Sat Jan 30 03:27:19 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
Sat Jan 30 03:27:19 2021 - [info] Got exit code 1 (Not master dead).
MySQL Replication Health is NOT OK!
問題思考:
意思就是主庫和從庫的my.cnf中配置的binlog-ignore-db和binlog-do-db要保持一致
解決方案:
把兩臺從庫中的my.cnf配置進行調整
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
binlog-do-db=lagou
3、MHA Manager啟動
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --
ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
查看監控狀態命令如下:
masterha_check_status --conf=/etc/mha/app1.cnf

查看監控日志命令如下:
tail -f /var/log/mha/app1/manager.log
六、測驗
(一)主從同步、半同步測驗
MySQL主從復制結構下,如何判定是異步復制還是半同步復制?
show global status like '%Rpl_semi%';


(二)mha測驗
1、mha通過ssh登錄3臺mysql服務器
ssh 8.131.87.12
ssh 106.75.32.128
ssh 106.75.47.125
2、執行第六步MHA 配置檢測
①執行ssh通信檢測
在MHA Manager服務器上執行:
masterha_check_ssh --conf=/etc/mha/app1.cnf
②檢測MySQL主從復制
在MHA Manager服務器上執行:
masterha_check_repl --conf=/etc/mha/app1.cnf
3、啟動mha服務之后,查看日志及狀態
啟動mha
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --
ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
查看監控狀態命令如下:
masterha_check_status --conf=/etc/mha/app1.cnf
查看監控日志命令如下:
tail -f /var/log/mha/app1/manager.log
4、模擬主機出故障,從庫能自動切換功能
①master停止mysql服務
systemctl stop mysqld
②查看mha日志,確認可以正常切換
③去當前從庫查看主庫情況
④在切換后的主節點機器上查看狀態展示效果
⑤在切換后的主節點機器資料庫添加資料,分別查詢主從庫資料一致
⑥將那個掛掉的資料庫重新啟動,然后試試手動切換主庫(將它重新指定成主庫)
masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --orig_master_is_new_slave --new_master_host=8.131.87.12 --new_master_port=3306
七、注意事項
1、三臺mysql服務器的配置最好一致
因為每一臺都有可能在mha的處理指標變成主庫,如,執行以下命令檢測mysql主從復制的時候,如果主庫和從庫的my.cnf中配置的binlog-ignore-db和binlog-do-db不一致,會檢測不通過
masterha_check_repl --conf=/etc/mha/app1.cnf
2、master宕機切換master之后,原來的master節點配置會從app1.cnf中自動洗掉
如果想用回原來的節點,需要先把原來的master的節點資訊配置進去

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255661.html
標籤:其他
