您好,登錄后才能下訂單哦!
一、基于普通主從復(fù)制的弊端;MHA能做到在10~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且在進(jìn)行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。
二、架構(gòu)
三、軟件介紹
MHA軟件由兩部分組成,Manager工具包和Node工具包
Manager工具包
masterha_check_ssh #檢査 MHA 的 ssh-key^
masterha_check_repl #檢査主從復(fù)制情況
masterha_manger #啟動MHA
masterha_check_status #檢測MHA的運(yùn)行狀態(tài)^
masterha_mast er_monitor #檢測master是否宕機(jī)一
masterha_mast er_switch #手動故障轉(zhuǎn)移—
masterha_conf_host #手動添加server倍息一
masterha_secondary_check #建立TCP連接從遠(yuǎn)程服務(wù)器v
masterha_stop #停止MHA
Node工具包主要包括以下幾個工具:
save_binary_1ogs #保存宕機(jī)的master的binlog
apply_diff_relay_logs #識別relay log的差異
filter_mysqlbinlog #防止回滾事件一MHA已不再使用這個工具
purge_relay_logs #清除中繼曰志一不會阻塞SQL線程
四、 MHA的優(yōu)點
1、自動故障轉(zhuǎn)移
2、主庫崩潰不存在數(shù)據(jù)不一致的情況
3、不需要對當(dāng)前的mysql環(huán)境做重大修改
4、不需要添加額外的服務(wù)器
5、性能優(yōu)秀,可以工作再半同步和異步復(fù)制框架
6、只要replication支持的存儲引擎mha都支持
五、環(huán)境說明
db01主機(jī)(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主機(jī)(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主機(jī)(slave1,MHA Manages、Atlas節(jié)點)
[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
三臺服務(wù)器上都全新安裝mysql 5.6.38 :
[root@db01 ~]# mysql --version
mysql Ver 14.14 Distrib 5.6.38, for Linux (x86_64) using EditLine wrapper
五、基于GTID的主從復(fù)制配置
主庫和從庫都要開啟binlog
主庫和從庫server-id必須不同
要有主從復(fù)制用戶
5.1、配置主從復(fù)制
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類型,否則就是普通的復(fù)制架構(gòu)
enforce-gtid-consistency=true #強(qiáng)制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
創(chuàng)建復(fù)制用戶 (51作為主節(jié)點,52、53為從)
GRANT REPLICATION SLAVE ON *.* TO repl@'172.16.1.%' IDENTIFIED BY '123';
從庫開啟復(fù)制
change master to
master_host='172.16.1.51',
master_user='repl',
master_password='123',
MASTER_AUTO_POSITION=1;
啟動從庫復(fù)制
start slave;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。