MySQL高可用群集------配置MMM高可用架構(gòu)

MMM簡(jiǎn)介:

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

羅江網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

MMM高可用架構(gòu)的說(shuō)明:

1.mmm_mon:監(jiān)控進(jìn)程,負(fù)責(zé)所有的監(jiān)控工作,決定和處理所有節(jié)點(diǎn)角色活動(dòng)。此腳本需要在監(jiān)管機(jī)上運(yùn)行
2.mmm_agent:運(yùn)行在每個(gè)Mysql服務(wù)器上的代理進(jìn)程,完成監(jiān)控的探針工作和執(zhí)行簡(jiǎn)單的遠(yuǎn)端服務(wù)設(shè)置。此腳本需要在各節(jié)點(diǎn)上運(yùn)行
3.mmm_control:一個(gè)簡(jiǎn)單的腳本,提供管理mmm_mond進(jìn)程的命令
4.mysql-mmm的監(jiān)控端會(huì)提供多個(gè)虛擬IP(VIP),包括一個(gè)可寫VIP,多個(gè)可讀VIP,通過(guò)監(jiān)管的管理,這些IP會(huì)綁定在可用的Mysql之上,當(dāng)某一臺(tái)Mysql宕機(jī)時(shí),監(jiān)控會(huì)將VIP遷移至其他Mysql
在整個(gè)監(jiān)管過(guò)程中,需要在Mysql中添加相關(guān)授權(quán)用戶,以便讓Mysql可以支持監(jiān)理機(jī)的維護(hù)。授權(quán)的用戶包括一個(gè)mmm_monitor和一個(gè)mmm_agent用戶。

實(shí)驗(yàn)案例環(huán)境部署:

本實(shí)驗(yàn)使用五臺(tái)服務(wù)器模擬搭建(CentOS7 操作系統(tǒng) )
主服務(wù)器master1 : ip:192.168.100.10 db1 vip: 192.168.100.199
主服務(wù)器master2:ip: 192.168.100.20 db2
從服務(wù)器 slave1 : ip:192.168.100.30 db3 vip: 192.168.100.33
從服務(wù)器 slave2: ip: 192.168.100.40 db4 vip: 192.168.100.44
監(jiān)控服務(wù)器 monitor ip: 192.168.100.50


實(shí)驗(yàn)的過(guò)程已整理好腳本如下:

----------master01/master02/slave01/slave02都需要安裝mysql數(shù)據(jù)庫(kù)-----
配置ALI云源,然后安裝epel-release源。 (四臺(tái)主從服務(wù)器都需要裝)
systemctl stop firewalld.service
setenforce 0
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release //安裝epel源
yum clean all && yum makecache //清空所有,重新設(shè)置數(shù)據(jù)緩存


----------搭建本地yum源----------下面直接做-----------------
yum -y install mariadb-server mariadb (四臺(tái)主從服務(wù)器都需要裝)
systemctl stop firewalld.service
setenforce 0
systemctl start mariadb


----------修改ml主配置文件-----------(四臺(tái)主從服務(wù)器都需要)-------------------------
vi /etc/my.cnf (9dd刪掉之前的內(nèi)容)
vi /etc/my.cnf (9dd刪掉[mysqld]標(biāo)簽之前的內(nèi)容,重新插入下面的配置)
[mysqld]
log_error=/var/lib/mysql/mysql.err //開啟錯(cuò)誤日志功能
log=/var/lib/mysql/mysql_log.log //開啟一般日志功能
log_slow_queries=/var/lib/mysql_slow_queris.log //開啟慢日志功能
binlog-ignore-db=mysql,information_schema //不需要同步的數(shù)據(jù)庫(kù)名稱
character_set_server=utf8 //設(shè)置默認(rèn)的字符集為utf-8
log_bin=mysql_bin //開啟二進(jìn)制日志,用于主從數(shù)據(jù)復(fù)制
server_id=1 //每臺(tái)server_id的值不能相同
log_slave_updates=true //此數(shù)據(jù)庫(kù)宕機(jī),備用數(shù)據(jù)庫(kù)接管
sync_binlog=1
auto_increment_increment=2 //字段一次遞增2
auto_increment_offset=1 //自增字段的起始值:1,3,5,7.........等奇數(shù)ID


修改完后:
systemctl stop firewalld.service
setenforce 0
systemctl start mariadb
netstat -anpt | grep 3306


-------------沒有問題后,把配置文件復(fù)制到其他3臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上并啟動(dòng)服務(wù)器----------
一臺(tái)一臺(tái)配置 或:scp /etc/my.cnf root@192.168.100.10:/etc/ //此命令在文件源端服務(wù)器上執(zhí)行
注:第二臺(tái)server_id=2 第三臺(tái)11 第四臺(tái)22


-------------配置主主復(fù)制----兩臺(tái)主服務(wù)器互相復(fù)制---------------------------------------
show master status; //記錄日志文件名稱和位置,在兩臺(tái)主上查看。
-----在m1上為m2授予從的權(quán)限,在m2上也要給m1授予從的權(quán)限----
grant replication slave on . to 'replication' @'192.168.100.%' identified by '123456'; //兩臺(tái)主都執(zhí)行,從不需要

change master to master_host='192.168.100.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
注意:在m1上要指定m2上的日志文件名和位置參數(shù)。在m2上要反過(guò)來(lái)指定m1的。(注意其中要改的IP地址、文件名及偏移量)

start slave; //開啟同步功能
show slave status\G;
Slave_I0_Running: Yes
Slave_SQL_Running: Yes


----------------在兩臺(tái)從上做------注意日志文件和位置參數(shù)的改變--------------
注:兩臺(tái)從都需要指向其中的一臺(tái)主服務(wù)器(這里指向m1)
change master to master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

start slave; //開啟同步
show slave status\G;//查看狀態(tài)


---------------測(cè)試主從、主主、同步情況------------
建立數(shù)據(jù)庫(kù)然后測(cè)試同步情況


----------------安裝MMM-----在所有服務(wù)器上安裝--------注意,epel源要配置好
yum -y install mysql-mmm*


----------------安裝結(jié)束后 對(duì)mmm進(jìn)行配置---------------------------------
cd /etc/mysql-mmm/
vim mmm_common.conf //所有主機(jī)上都要配置,直接復(fù)制多份
<host default>
cluster_interface ens33
.....
replication_user replication
replication_password 123456
agent_user mmm_agent
agent_password 123456

<host db1>
ip 192.168.100.10
mode master
peer db2
</host>

<host db2>
ip 192.168.100.20
mode master
peer db1
</host>

<host db3>
ip 192.168.100.30
mode slave
</host>

<host db4>
ip 192.168.100.40
mode slave
</host>

<role writer>
hosts db1,db2
ips 192.168.100.199 //虛擬IP
mode exclusive
</role>

<role reader>
hosts db3,db4
ips 192.168.100.33, 192.168.100.44 //虛擬IP
mode balanced
</role>

遠(yuǎn)程復(fù)制 覆蓋配置文件:
scp mmm_common.conf root@192.168.100.20:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.30:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.40:/etc/mysql-mmm/
vim /etc/mysql-mmm/mmm_common.conf 挨個(gè)查看一下


-----------最后一臺(tái)監(jiān)控服務(wù)器也需要安裝mmm--------(epel源先裝好)------
systemctl stop firewalld.service
setenforce 0
wget -0 /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum clean all && yum makecache (可不執(zhí)行)
yum install -y mysql-mmm*
scp mmm_common.conf root@192.168.100.50:/etc/mysql-mmm/ //在m1上執(zhí)行


--------------在monitor服務(wù)器上配置---------------------------------------
cd /etc/mysql-mmm/
vim mmm_mon.conf
ping_ips 192.168.100.10,192.168.100.20,192.168.100.30,192.168.100.40 //監(jiān)視器監(jiān)聽的服務(wù)器地址
auto_set_online 10 //自動(dòng)上線時(shí)間10秒
<host default>
monitor_user mmm_monitor
monitor_password 123456 //改密碼
</host>


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


---------------在所有數(shù)據(jù)庫(kù)上為mmm_moniter授權(quán)---------(進(jìn)入數(shù)據(jù)庫(kù))------------------
grant replication client on . to 'mmm_monitor'@'192.168.48.%' identified by '123456';

flush privileges; //刷新


---------------修改所有數(shù)據(jù)庫(kù)的mmm_agent.conf---------------------------------------------
vim /etc/mysql-mmm/mmm_agent.conf
this db1 //根據(jù)之前代理名稱的規(guī)劃進(jìn)行逐一調(diào)整


----------------在所在數(shù)據(jù)庫(kù)服務(wù)器上啟動(dòng)mysql-mmm-agent----------------------------------
systemctl start mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service //開機(jī)自啟動(dòng)


----------------在monitor服務(wù)器上配置----------------------------------------------------------
cd /etc/mysql-mmm/
vim mmm_mon.conf
..........
ping_ips
192.168.100.10,192.168.100.20,192.168.100.30,192.168.100.40 //數(shù)據(jù)庫(kù)服務(wù)器地址

auto_set_online 10 //自動(dòng)上線時(shí)間10秒
........
systemctl start mysql-mmm-monitor.service //啟動(dòng)監(jiān)控服務(wù)mysql-mmm-montior

mmm_control show //查看各節(jié)點(diǎn)的情況:
db1(192.168.235.132) master/ONLINE. Roles:writer(192.168.100.199)
db2(192.168.235.191) master/ONLINE. Roles:
db3(192.168.235.177) slave/ONLINE. Roles:reader(192.168.100.33)
db4(192.168.235.181) slave/ONLINE. Roles:reader(192.168.100.44)

mmm_control checks all //需要各種OK
mmm_control move_role writer db2 //將虛擬IP200切換到db2服務(wù)器上

service mariadb restart //監(jiān)控機(jī)做客戶端
systemctl restart mysql-mmm-agent


-----------------------故障測(cè)試-----------------------------------------------
停止m1 確認(rèn) 虛擬地址 200 是否移動(dòng)到m2上。 注意:主不會(huì)搶占。
systemctl stop mariadb.service

然后再監(jiān)控服務(wù)器上 ,查看是否切換到m2上:mmm_control show


可以把從服務(wù)器一臺(tái)也關(guān)掉 試一下。 注意:從會(huì)搶占

在m1服務(wù)器上進(jìn)數(shù)據(jù)庫(kù)為監(jiān)控機(jī)地址授權(quán)登錄
grant all on . to 'testdba'@'192.168.100.50' identified by '123456';
flush privileges; //刷新

按理來(lái)講監(jiān)控服務(wù)器只單獨(dú)充當(dāng)監(jiān)控這一角色就行了,這里臨時(shí)將它也作為客戶端來(lái)配置一下:
yum install -y mariadb-server mariadb


------------------在監(jiān)控服務(wù)器上登錄-------------------------------------------
mysql -utestdba -p -h 192.168.100.199 //虛擬地址
創(chuàng)建數(shù)據(jù),測(cè)試同步情況

腳本到此結(jié)束!

本篇總結(jié)

.MySQL-MMM適用于數(shù)據(jù)的一致性要求不是很高,但是又想最大程度地保證業(yè)務(wù)可用性的場(chǎng)景。

本文題目:MySQL高可用群集------配置MMM高可用架構(gòu)
文章URL:http://muchs.cn/article48/iepcep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、自適應(yīng)網(wǎng)站ChatGPT、響應(yīng)式網(wǎng)站品牌網(wǎng)站制作、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)