MMM (Master-Master replication manager for MySQL,MySQL 主主復制管理器)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM 使用 Perl 語言開發(fā),主要用來監(jiān)控和管理 MySQL Master-Master(雙主)復制,雖然也叫雙主復制,但是業(yè)務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時備選主的預熱,可以說 MMM 這套腳本程序一方面實現(xiàn)了故障切換的功能,另一方面其內(nèi)部附加的工具腳本也可以實現(xiàn)多個 Slave 的 read 負載均衡。
龍華網(wǎng)站建設公司成都創(chuàng)新互聯(lián),龍華網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為龍華1000多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設公司要多少錢,請找那個售后服務好的龍華做網(wǎng)站的公司定做!MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬 ip,同時它還可以備份數(shù)據(jù),實現(xiàn)兩節(jié)點之間的數(shù)據(jù)同步等。由于 MMM 無法完全保證數(shù)據(jù)的一致性,所以 MMM 適用于對數(shù)據(jù)的一致性要求不是很高,但是又想大程度的保證業(yè)務可用性的場景。對于那些對數(shù)據(jù)的一致性要求很高的業(yè)務,非常不建議采用 MMM 這種高可用架構(gòu)。
- 關(guān)于 MMM 高可用架構(gòu)的說明如下:
mmm_mon:監(jiān)控進程,負責所有的監(jiān)控工作,決定和處理所有節(jié)點角色活動。此腳本需要在監(jiān)管機上運行。
mmm_agent:運行在每個 MySQL 服務器上的代理進程,完成監(jiān)控的探針工作和執(zhí)行簡單的遠端服務shezhi.cijiaoben需要在被監(jiān)管機上運行。
mmm_control:一個簡單的腳本,提供管理 mmm_mond 進程的命令。
mysql-mmm 的監(jiān)管端會提供多個虛擬 IP (VIP),包括一個可寫 VIP,多個可讀 VIP,通過監(jiān)管的管理,這些 IP 會綁定在可用 MySQL 之上,當某一臺 MySQL 宕機時,監(jiān)管會將 VIP 遷移至其他 MySQL。
主機 | 操作系統(tǒng) | IP地址 | VIP地址 |
---|---|---|---|
mysql-m1主服務器 | CentOS 7.4 x86_64 | 192.168.100.200 | 192.168.100.100(Writer) |
mysql-m2主服務器 | CentOS 7.4 x86_64 | 192.168.100.201 | 192.168.100.100(Writer) |
mysql-monitor | CentOS 7.4 x86_64 | 192.168.100.204 | |
mysql-m3從服務器 | CentOS 7.4 x86_64 | 192.168.100.202 | 192.168.100.101(Reader) |
mysql-m4從服務器 | CentOS 7.4 x86_64 | 192.168.100.203 | 192.168.100.102(Reader) |
搭建ALI云源,安裝epel-release源。
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下載ALI云源
yum -y install epel-release #安裝epel-release源
yum clean all && yum makecache #清空緩存,生成新的緩存文件
安裝 MariaDB 數(shù)據(jù)庫,開啟服務(和MySQL同源,搭建步驟相同)
yum -y install mariadb-server mariadb
systemctl stop firewalld.service
setenforce 0
systemctl start mariadb
# vim /etc/my.cnf
[mysqld]
log_error=/var/lib/mysql/mysql.err #錯誤日志文件位置
log=/var/lib/mysql/mysql_log.log #訪問日志文件位置
log_slow_queries=/var/lib/mysql_slow_queris.log #慢日志文件位置
binlog-ignore-db=mysql,information_schema #不生成二進制文件的庫
character_set_server=utf8 #使用的字符集
log_bin=mysql_bin #二進制日志文件功能
server_id=1
log_slave_updates=true #開啟同步
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
# scp /etc/my.cnf root@192.168.100.201:/etc
# scp /etc/my.cnf root@192.168.100.202:/etc
# scp /etc/my.cnf root@192.168.100.203:/etc
# 注:另外三臺主機的配置文件里的server_id要做修改,保證不一致即可
查看對方的日志文件名稱和偏移值
mysql> show master status;
主服務器互相提升訪問權(quán)限(m1、m2服務器分別執(zhí)行)
# mysql-m1
grant replication slave on *.* to 'replication'@'172.168.100.%' identified by '123456';
# 使用賬戶為replication 密碼為123456
change master to master_host='172.168.100.201',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
# 當在MariaDB-m1上執(zhí)行時,master_host地址為MariaDB-m2地址
···
# mysql-m2
grant replication slave on *.* to 'replication'@'172.168.100.%' identified by '123456';
change master to master_host='172.168.100.200',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
# 當在MariaDB-m2上執(zhí)行時,master_host地址為MariaDB-m1地址
開啟同步,查看服務器的主從狀態(tài)
start slave;
show slave status\G;
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
配置m3、m4服務器作為從服務器
show master status;
# 查看m1服務器的日志文件以及偏移值(注意日志文件和偏移值的改變)
# m1和m2互相同步,在此只需執(zhí)行m1即可
change master to master_host='172.168.100.200',master_user='replication',master_password='123456',master_log_file='mysql_bin.000004',master_log_pos=245;
# m3和m4上分別執(zhí)行
分別查看m3和m4的主從狀態(tài)
start slave;
show slave status\G;
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
安裝配置MMM架構(gòu)
前面我們使用wget配置了ALI云源并簡易安裝 MariaDB 來代替 MySQL ,并搭建了主主同步,主從復制以便完成實驗,現(xiàn)在我們來完成MMM架構(gòu)
安裝mysql-mmm,修改配置文件(五臺主機配置相同)
# yum -y install mysql-mmm* //前面我們配置了epel源,直接yum安裝
# vim /etc/mysql-mmm/mmm_common.conf //配置如下
active_master_role writer
<host default>
cluster_interface ens33
pid_path /run/mysql-mmm-agent.pid
bin_path /usr/libexec/mysql-mmm/
replication_user replication
replication_password 123456
agent_user mmm_agent
agent_password 123456
</host>
<host db1>
ip 172.168.100.200
mode master
peer db2
</host>
<host db2>
ip 172.168.100.201
mode master
peer db1
</host>
<host db3>
ip 172.168.100.202
mode slave
</host>
<host db4>
ip 172.168.100.203
mode slave
</host>
<role writer>
hosts db1, db2
ips 172.168.100.100
mode exclusive
</role>
<role reader>
hosts db3, db4
ips 172.168.100.101, 172.168.100.102
mode balanced
</role>
快速為其他主機修改配置文件
scp mmm_common.conf root@192.168.100.200:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.201:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.202:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.203:/etc/mysql-mmm/
在主機上修改mmm_agent.conf文件的名稱
# vim /etc/mysql-mmm/mmm_agent.conf
this db1 //按照規(guī)劃分別修改為db1、db2、db3、db4
在所有主機上對mmm_agent、mmm_moniter進行授權(quán)
mysql> grant super, replication client, process on *.* to 'mmm_agent'@'192.168.100.%' identified by '123456';
mysql> grant replication client on *.* to 'mmm_monitor'@'192.168.100.%' identified by '123456';
# flush privileges; //重新加載權(quán)限表
配置監(jiān)控主機(在mysql-monitor上配置)
# vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
<monitor>
ip 127.0.0.1
pid_path /run/mysql-mmm-monitor.pid
bin_path /usr/libexec/mysql-mmm
status_path /var/lib/mysql-mmm/mmm_mond.status
ping_ips 172.168.100.200,172.168.100.201,172.168.100.202,172.168.100.203
auto_set_online 10 #上線時間修改為10s
# The kill_host_bin does not exist by default, though the monitor will
# throw a warning about it missing. See the section 5.10 "Kill Host
# Functionality" in the PDF documentation.
#
# kill_host_bin /usr/libexec/mysql-mmm/monitor/kill_host
#
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password 123456
</host>
debug 0
關(guān)閉防火墻及增強×××
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce 0
systemctl start mysql-mmm-monitor.service
# ERROR: Can't connect to monitor daemon!,如若出現(xiàn)報錯,可嘗試重啟服務解決
mmm_control check all
# 檢查監(jiān)控服務器對所有主機的監(jiān)控是否完善
# 檢查結(jié)果全部OK,則部署完成
至此,MySQL-MMM已經(jīng)部署成功,進一步的話,我們可以結(jié)合Amoeba實現(xiàn)讀寫分離,Writer 的虛擬VIP可以寫入數(shù)據(jù)庫,而 Reader 可以用來讀取數(shù)據(jù)。并通過Keepalived對 monitor 服務器進行雙機熱備。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)站標題:MySQL-MMM實現(xiàn)MySQL高可用-創(chuàng)新互聯(lián)
地址分享:http://bm7419.com/article20/dsseco.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、品牌網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站建設、做網(wǎng)站、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容