您好,登錄后才能下訂單哦!
一、基于普通主從復制的弊端;MHA能做到在10~30秒之內自動完成數據庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。
二、架構
三、軟件介紹
MHA軟件由兩部分組成,Manager工具包和Node工具包
Manager工具包
masterha_check_ssh #檢査 MHA 的 ssh-key^
masterha_check_repl #檢査主從復制情況
masterha_manger #啟動MHA
masterha_check_status #檢測MHA的運行狀態^
masterha_mast er_monitor #檢測master是否宕機一
masterha_mast er_switch #手動故障轉移—
masterha_conf_host #手動添加server倍息一
masterha_secondary_check #建立TCP連接從遠程服務器v
masterha_stop #停止MHA
Node工具包主要包括以下幾個工具:
save_binary_1ogs #保存宕機的master的binlog
apply_diff_relay_logs #識別relay log的差異
filter_mysqlbinlog #防止回滾事件一MHA已不再使用這個工具
purge_relay_logs #清除中繼曰志一不會阻塞SQL線程
四、 MHA的優點
1、自動故障轉移
2、主庫崩潰不存在數據不一致的情況
3、不需要對當前的mysql環境做重大修改
4、不需要添加額外的服務器
5、性能優秀,可以工作再半同步和異步復制框架
6、只要replication支持的存儲引擎mha都支持
五、環境說明
db01主機(master)
[root@db01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@db01 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db01 ~]# getenforce
Disabled
[root@db01 ~]# hostname -I
10.0.0.51 172.16.1.51
db02主機(slave1)
[root@db02 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db02 ~]# uname -r
2.6.32-696.el6.x86_64
[root@db02 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db02 ~]# getenforce
Disabled
[root@db02 ~]# hostname -I
10.0.0.52 172.16.1.52
db03主機(slave1,MHA Manages、Atlas節點)
[root@db03 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db03 ~]# uname -r
2.6.32-696.el6.x86_64
[root@db03 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db03 ~]# getenforce
Disabled
[root@db03 ~]# hostname -I
10.0.0.53 172.16.1.53
三臺服務器上都全新安裝mysql 5.6.38 :
[root@db01 ~]# mysql --version
mysql Ver 14.14 Distrib 5.6.38, for Linux (x86_64) using EditLine wrapper
五、基于GTID的主從復制配置
主庫和從庫都要開啟binlog
主庫和從庫server-id必須不同
要有主從復制用戶
5.1、配置主從復制
db01 my.cnf文件
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log-bin=/application/mysql/mysql-bin
binlog_format=row
secure-file-priv=/tmp
server-id=51
skip-name-resolve # 跳過域名解析
gtid-mode=on # 啟用gtid類型,否則就是普通的復制架構
enforce-gtid-consistency=true #強制GTID的一致性
log-slave-updates=1 # slave更新是否記入日志(5.6必須的)
relay_log_purge = 0
[mysql]
socket=/tmp/mysql.sock
db02 my.cnf文件
[root@db02 ~]# cat /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log-bin=/application/mysql/mysql-bin
binlog_format=row
secure-file-priv=/tmp
server-id=52
skip-name-resolve
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
relay_log_purge = 0
[mysql]
socket=/tmp/mysql.sock
db03 my.cnf文件
[root@db03 ~]# cat /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log-bin=/application/mysql/mysql-bin
binlog_format=row
secure-file-priv=/tmp
server-id=53
skip-name-resolve
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
relay_log_purge = 0
skip-name-resolve
[mysql]
socket=/tmp/mysql.sock
創建復制用戶 (51作為主節點,52、53為從)
GRANT REPLICATION SLAVE ON *.* TO repl@'172.16.1.%' IDENTIFIED BY '123';
從庫開啟復制
change master to
master_host='172.16.1.51',
master_user='repl',
master_password='123',
MASTER_AUTO_POSITION=1;
啟動從庫復制
start slave;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。