網(wǎng)站模板下載器成都關(guān)鍵詞排名推廣
文章目錄
- 前言
- 一、概述
- 1.概念
- 2.組成
- 3.特點(diǎn)
- 4.工作原理
- 5.優(yōu)點(diǎn):
- 二、各節(jié)點(diǎn)及其ip地址
- 三、構(gòu)建MHA
- 1.ssh免密登錄
- 2.構(gòu)建mysql主從復(fù)制
- (一)安裝mariadb數(shù)據(jù)庫并啟動
- (二)master服務(wù)器
- (三)slave服務(wù)器
- (四)驗(yàn)證是否實(shí)現(xiàn)主從復(fù)制
- 3.MHA安裝
- (一)所有節(jié)點(diǎn)安裝perl環(huán)境
- (二)所有節(jié)點(diǎn)安裝node包
- 4.測試
- 總結(jié)
前言
本篇將簡述的內(nèi)容:Linux系統(tǒng)下的Mariadb高可用–MHA
一、概述
1.概念
MHA(MasterHigh Availability)是一套優(yōu)秀的MySQL高可用環(huán)境下故障切換和主從復(fù)制的軟件。
MHA 的出現(xiàn)就是解決MySQL 單點(diǎn)的問題。
MySQL故障切換過程中,MHA能做到0-30秒內(nèi)自動完成故障切換操作。
MHA能在故障切換的過程中最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。
2.組成
MHA manager
管理節(jié)點(diǎn)
MHA node
數(shù)據(jù)節(jié)點(diǎn)
每個節(jié)點(diǎn)上都需要安裝
3.特點(diǎn)
特點(diǎn)一:
自動故障切換過程中,MHA試圖從宕機(jī)的主服務(wù)器上保存二進(jìn)制日志,最大程度的保證數(shù)據(jù)不丟失
特點(diǎn)二:
使用半同步復(fù)制,可以大大降低數(shù)據(jù)丟失的風(fēng)險,如果只有一個slave已經(jīng)收到了最新的二進(jìn)制日志,MHA可以將最新的二進(jìn)制日志應(yīng)用于其他所有的slave服務(wù)器上,因此可以保證所有節(jié)點(diǎn)的數(shù)據(jù)一致性
特點(diǎn)三:
目前MHA支持一主多從架構(gòu),最少三臺服務(wù),即一主兩從
4.工作原理
(一)從宕機(jī)崩潰的master 保存二進(jìn)制日志事件(binlog events);
(二)識別含有最新的更新slave日志
(三)應(yīng)用差異的中繼日志(relay log)到其他的slave
(四)應(yīng)用從master保存的二進(jìn)制日志事件
(五)提升一個slave為新的master
(六)使其他的slave連接新的master進(jìn)行復(fù)制
5.優(yōu)點(diǎn):
MHA作為一個開源的高可用性解決方案,具有以下優(yōu)點(diǎn):
- 簡單易用:安裝和配置MHA非常簡單,只需幾個簡單的步驟即可完成。
- 功能強(qiáng)大:MHA可以自動監(jiān)控主從復(fù)制的狀態(tài),并在主節(jié)點(diǎn)故障時自動切換到備用節(jié)點(diǎn)。
- 穩(wěn)定可靠:MHA經(jīng)過多年的實(shí)踐和優(yōu)化,已經(jīng)在許多生產(chǎn)環(huán)境中得到了驗(yàn)證,具有較高的穩(wěn)定性和可靠性。
二、各節(jié)點(diǎn)及其ip地址
manager | node | node | node |
---|---|---|---|
mgt | master | slave1 | slave2 |
192.168.115.3 | 192.168.115.4 | 192.168.115.5 | 192.168.115.6 |
三、構(gòu)建MHA
要求:
構(gòu)建mysql一主兩從復(fù)制,一臺mgt服務(wù)
前期準(zhǔn)備:
為了方便操作,可先更改主機(jī)名
hostnamectl set-hostname 主機(jī)名
隨后在本地hosts文件內(nèi)分別
添加ip地址對應(yīng)其主機(jī)名
1.ssh免密登錄
四臺主機(jī)各自免密登陸
獲取密鑰并將密鑰傳送至其他主機(jī)
192.168.115.3 | ssh-keygen |
---|---|
- | for i in 4 5 6;do ssh-copy-id root@192.168.115.$i;done |
192.168.115.4 | ssh-keygen |
- | for i in 3 5 6;do ssh-copy-id root@192.168.115.$i;done |
192.168.115.5 | ssh-keygen |
- | for i in 4 3 6;do ssh-copy-id root@192.168.115.$i;done |
192.168.115.6 | ssh-keygen |
- | for i in 4 5 3;do ssh-copy-id root@192.168.115.$i;done |
2.構(gòu)建mysql主從復(fù)制
(一)安裝mariadb數(shù)據(jù)庫并啟動
for i in 4 5 6;do ssh 192.168.115.$i yum install -y mariadb mariadb-server mariadb;done
(二)master服務(wù)器
修改配置文件,開啟二進(jìn)制日志文件
vim /etc/my.cnf
[mysqld]
server-id = 20
log-bin = master-bin
log-slave-updates = true
啟動服務(wù)
systemctl start mariadb
做用戶賦權(quán)
mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
查看主機(jī)狀態(tài)
mysql -e "show master status";
(三)slave服務(wù)器
vim /etc/m.cfn
server-id=30
log-bin=master-bin
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
也做用戶賦權(quán)
mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
在Slave服務(wù)器授權(quán),啟動從庫,進(jìn)行主從庫數(shù)據(jù)同步
mysql -e "change master to master_host='192.168.115.4',master_user='myslave',master_password='123.com',master_log_file='master-bin.000003',master_log_pos=554;"
(四)驗(yàn)證是否實(shí)現(xiàn)主從復(fù)制
master
mysql -e "create database jx;"
slave
mysql -e "show databases;"
從服務(wù)器出現(xiàn)新建庫----jx,即說明主從復(fù)制搭建成功
3.MHA安裝
(一)所有節(jié)點(diǎn)安裝perl環(huán)境
更新epel源至最新(版本一致即可)
yum install epel-release -y
安裝所需依賴
yum -y install perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-CPAN
(二)所有節(jié)點(diǎn)安裝node包
tar xf mha4mysql-node-0.57.tar.gzcd mha4mysql-node-0.57perl Makefile.PL && make && make install
驗(yàn)證
cd /usr/local/bin
看到腳本就OK
只有mgt安裝manager包
tar xf mha4mysql-manager-0.57.tar.gz
cd /root/mha4mysql-manager-0.57
perl Makefile.PL && make && make install
cp samples/scripts/master_ip_failover /usr/local/bin/
cp samples/scripts/master_ip_online_change /usr/local/bin/
腳本說明
master_ip_failover 自動切換時 VIP 管理的腳本
master_ip_online_change 在線切換時 vip 的管理
power_manager 故障發(fā)生后關(guān)閉主機(jī)的腳本
send_report 因故障切換后發(fā)送報警的腳本
配置文件建立
mkdir /etc/masterha
vim /etc/masterha/app1.cnf
mkdir /var/log/masterha/app1
測試MHA
masterha_check_ssh --conf=/etc/masterha/app1.cnf
masterha_check_repl --conf=/etc/masterha/app1.cnf
啟動命令
nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &
查看是否運(yùn)行
4.測試
停用master的mariadb服務(wù)
systemctl stop mariadb
查看 /var/log/masterha/app1/manager.log
可發(fā)現(xiàn)
已啟動自動(非交互式)故障轉(zhuǎn)移。
能看到區(qū)域ip漂移到slave1服務(wù)器上
slave1
slave2
可以看到
master服務(wù)down掉后
slave1充當(dāng)主服務(wù)器
slave2依舊為從服務(wù)器
依舊可實(shí)現(xiàn)主從復(fù)制
總結(jié)
通過使用MHA,我們可以在Linux系統(tǒng)下實(shí)現(xiàn)Mariadb的高可用性,提高數(shù)據(jù)庫的穩(wěn)定性和可靠性。MHA具有簡單易用、功能強(qiáng)大、穩(wěn)定可靠等特點(diǎn),是一個值得推薦的高可用性解決方案。