溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何部署MySQL-MMM高可用群集

發(fā)布時(shí)間:2021-09-28 11:42:12 來(lái)源:億速云 閱讀:155 作者:柒染 欄目:MySQL數(shù)據(jù)庫(kù)

如何部署MySQL-MMM高可用群集,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

簡(jiǎn)介

MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語(yǔ)言開(kāi)發(fā),主要用來(lái)監(jiān)控和管理MySQL Master-Master(雙主)復(fù)制,雖然叫做雙主復(fù)制,但是業(yè)務(wù)上同一時(shí)刻只允許對(duì)一個(gè)主進(jìn)行寫(xiě)入,另一臺(tái)備選主上提供部分讀服務(wù),以加速在主主切換時(shí)刻備選主的預(yù)熱,可以說(shuō)MMM這套腳本程序一方面實(shí)現(xiàn)了故障切換的功能,另一方面其內(nèi)部附加的工具腳本也可以實(shí)現(xiàn)多個(gè)slave的read負(fù)載均衡。

MMM提供了自動(dòng)和手動(dòng)兩種方式移除一組服務(wù)器中復(fù)制延遲較高的服務(wù)器的虛擬ip,同時(shí)它還可以備份數(shù)據(jù),實(shí)現(xiàn)兩節(jié)點(diǎn)之間的數(shù)據(jù)同步等。由于MMM無(wú)法完全的保證數(shù)據(jù)一致性,所以MMM適用于對(duì)數(shù)據(jù)的一致性要求不是很高,但是又想最大程度的保證業(yè)務(wù)可用性的場(chǎng)景。對(duì)于那些對(duì)數(shù)據(jù)的一致性要求很高的業(yè)務(wù),非常不建議采用MMM這種高可用架構(gòu)。

實(shí)驗(yàn)拓?fù)鋱D

如何部署MySQL-MMM高可用群集

實(shí)驗(yàn)?zāi)繕?biāo)

搭建mysql高可用群集

實(shí)驗(yàn)環(huán)境

如何部署MySQL-MMM高可用群集

在5臺(tái)服務(wù)器上關(guān)閉防火墻,安全性
setenforce 0
systemctl stop firewalld.service

實(shí)驗(yàn)步驟

一、master01、master02、slave01、slave02、monitor 5臺(tái)mysql服務(wù)器配置
1.配置all云源(yum源)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo`

2.配置epel源(最新版本)

yum -y install epel-release

3.加載元數(shù)據(jù)緩存

yum clean all && yum makecache`

4.安裝mariadb數(shù)據(jù)庫(kù)和mysql-mmm軟件包

yum install mariadb-sever mariadb  mysql-mmm*  -y

5.修改mariadb數(shù)據(jù)庫(kù)主配置文件

vim /etc/my.cnf
[mysqld]
log_error=/var/lib/mysql/mysql.err         #錯(cuò)誤日志
log=/var/lib/mysql/mysql_log.log          #訪問(wèn)日志
log_slow_queries=/var/lib/mysql_slow_queris.log    #慢日志
binlog-ignore-db=mysql,information_schema     #不生成二進(jìn)制日志文件
character_set_server=utf8       #字符集
log_bin=mysql_bin            #開(kāi)啟二進(jìn)制文件
server_id=1                   #id號(hào)是唯一的
log_slave_updates=true         #同步開(kāi)啟
sync_binlog=1                  #同步二進(jìn)制日志,1設(shè)為安全值
auto_increment_increment=2      #自增列,起點(diǎn)為1,增量為2
auto_increment_offset=1

備注:分別修改master02、slave01、slave02的配置文件server_id參數(shù)

6.啟動(dòng)mariadb 服務(wù)

systemctl enable mariadb       #開(kāi)機(jī)自啟動(dòng)mariadb
systemctl start mariadb.service  #啟動(dòng)mariadb 服務(wù)

二、主、主復(fù)制(主服務(wù)器之間相互復(fù)制)
1.登錄mariadb,在主服務(wù)器master1上授權(quán)

mysql
grant replication slave on *.* to 'replication'@'192.168.65.%' identified by '123456';

如何部署MySQL-MMM高可用群集

2.在master1上指定master2的日志和位置參數(shù)

change master to master_host='192.168.65.142',master_user='replication',master_password
='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

3.開(kāi)啟同步
start slave;
如何部署MySQL-MMM高可用群集

4.在主服務(wù)器master2上授權(quán)

mysql
grant replication slave on *.* to 'replication'@'192.168.65.%' identified by '123456';

如何部署MySQL-MMM高可用群集

5.在master2上指定master1的日志和位置參數(shù)

change master to 
master_host='192.168.65.159',master_user='replication',master_password='123456',
master_log_file='mysql_bin.000003',master_log_pos=245;

6.開(kāi)啟同步

start slave;
show slave status\G

如何部署MySQL-MMM高可用群集

7.從服務(wù)器同步主(兩臺(tái)從服務(wù)器都指向同一臺(tái)主服務(wù)器)
兩臺(tái)從服務(wù)器同樣操作:

mysql
change master to master_host='192.168.65.159',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;(# 注意主服務(wù)器位置參數(shù)變化)
start slave;   #開(kāi)啟同步

如何部署MySQL-MMM高可用群集
如何部署MySQL-MMM高可用群集

8.測(cè)試:四臺(tái)全部同步
如何部署MySQL-MMM高可用群集
如何部署MySQL-MMM高可用群集
如何部署MySQL-MMM高可用群集
如何部署MySQL-MMM高可用群集

三、配置mysql-MMM服務(wù)器(5臺(tái)服務(wù)器都配置)
1.編輯mysql-mmm的配置文件

vim mmm_common.conf          #所有主機(jī)都要配置,復(fù)制
<host default>
    cluster_interface         ens33    #修改網(wǎng)卡為ens33
    pid_path               /run/mysql-mmm-agent.pid
    bin_path               /usr/libexec/mysql-mmm/
    replication_user         replicantion
    replication_password     123456   #修改Mariadb給予權(quán)限的用戶密碼
    agent_user             mmm_agent
    agent_password         123456    #修改agent客戶端代理用戶密碼
</host>

<host db1>  #指定第一個(gè)數(shù)據(jù)庫(kù)
    ip      192.168.65.159   #指定IP地址
    mode    master   #模式為主服務(wù)器
    peer    db2    #與db2互為切換
</host>

<host db2>  #指定第二個(gè)數(shù)據(jù)庫(kù)
    ip      192.168.65.142  #指定IP地址
    mode    master  #模式為主服務(wù)器
    peer    db1   #與db1互為切換
</host>

<host db3>  #指定第二個(gè)數(shù)據(jù)庫(kù)
    ip      192.168.65.165  #指定IP地址
    mode    slave  #模式為從服務(wù)器
</host>

<host db4>   #指定第二個(gè)數(shù)據(jù)庫(kù) 
    ip      192.168.65.152  #指定IP地址
    mode    slave   #模式為從服務(wù)器
</host>

<role writer>  #指定寫(xiě)入服務(wù)器
    hosts   db1, db2  #指定db1,db2為寫(xiě)入服務(wù)器
    ips     192.168.65.100  #指定寫(xiě)入虛擬ip地址
    mode    exclusive  #模式為單獨(dú)的(只能有一個(gè))
</role>

<role reader>  #指定讀取服務(wù)器
    hosts   db3, db4  #指定db1,db2為寫(xiě)入服務(wù)器
    ips     192.168.65.101, 192.168.100.65.102  #指定讀取虛擬ip地址
mode    balanced  #模式為負(fù)載均衡,讀取操作會(huì)從db3、db4主機(jī)進(jìn)行

2.將配置文件傳輸?shù)狡渌?臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上

scp mmm_common.conf root@192.168.65.142:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.65.152:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.65.165:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.65.164:/etc/mysql-mmm/

備注:一定要去其它4臺(tái)服務(wù)器上確認(rèn)已修改!

3.monitor配置

cd /etc/mysql-mmm/
vim mmm_mon.conf          #改密碼
  ping_ips            192.168.65.159,192.168.65.142,192.168.65.152,192.168.65.165
  auto_set_online     10   #修改為10,表示10秒鐘上線
...... 省略部分內(nèi)容
  <host default>
    monitor_user        mmm_monitor     #監(jiān)控機(jī)用戶名
    monitor_password    123456           #修改密碼
</host>

4.在所有數(shù)據(jù)庫(kù)上為mmm_agent授權(quán)
grant super,replication client,process on *.* to 'mmm_agent'@'192.168.65.%' identified by '123456';

6在所有數(shù)據(jù)庫(kù)上為mmm_monitor授權(quán)

grant replication client on *.* to 'mmm_monitor'@'192.168.65.%' identified by '123456';
flush privileges; #刷新生效

7.在4臺(tái)數(shù)據(jù)庫(kù)上分別修改mmm_agent.conf

vim mmm_agent.conf 
   this is db1/2/3/4  #在4臺(tái)數(shù)據(jù)庫(kù)分別修改

8啟動(dòng)mysql-mmm-agent

systemctl restart mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service

9.啟動(dòng)mysql-mmm-monitor
systemctl start mysql-mmm-monitor.service    #啟動(dòng)服務(wù)

10.檢查所有選項(xiàng)

mmm_control show    #查看各節(jié)點(diǎn)情況
mmm_control checks all

如何部署MySQL-MMM高可用群集

11.可以手動(dòng)切換主服務(wù)器
mmm_control move_role writer db2
如何部署MySQL-MMM高可用群集

四、模擬故障
1.先停止db1,db3
systemctl stop mariadb
如何部署MySQL-MMM高可用群集
如何部署MySQL-MMM高可用群集

2.再查看mysql-mmm服務(wù)器狀態(tài)
mmm_control show
如何部署MySQL-MMM高可用群集

3.恢復(fù)db1,db3上線
如何部署MySQL-MMM高可用群集

4.再查看mysql-mmm服務(wù)器狀態(tài)
mmm_control show
如何部署MySQL-MMM高可用群集
5.當(dāng)db1服務(wù)器恢復(fù)后,并不會(huì)搶占vip地址,而是作為備用機(jī)在等待著,
當(dāng)db2下線后,再次查看
如何部署MySQL-MMM高可用群集

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI