mmm(multi-master replication manager,多主復(fù)制管理架構(gòu))
主要作用
監(jiān)控和管理 mysql 的主主復(fù)制拓撲,并在當(dāng)前的主服務(wù)器失效時,進行主和主備服務(wù)器之間的主從切換和故障轉(zhuǎn)移等工作。
相關(guān)推薦:【mysql教程】
主要功能:
● 監(jiān)控 MySQL 主從復(fù)制健康狀況(主動主動模式下的主主復(fù)制(主主),主動被動模式的主主復(fù)制(主主備))
●?在主庫出現(xiàn)宕機時進行故障轉(zhuǎn)移并自動配置其它從 DB 對新主 DB 的復(fù)制
●?提供可主,寫(讀)虛擬 IP,在主從服務(wù)器出現(xiàn)問題時可用自動遷移虛擬 IP
架構(gòu):
資源:
部署:
配置主主復(fù)制及主從同步集群 安裝主從節(jié)點所需要的支持包(perl) 安裝及配置?MMM?工具集 允許?MMM?監(jiān)控服務(wù) 測試配置
演示:
● 拓撲圖(VIP: visual IP)
步驟:
1、配置主(100)主(101)[參考:?[Tony?老師搭建?MySQL?主從服務(wù)器](https://learnku.com/articles/31832)] 2、配置主(100)從(102)???[參考:?[Tony?老師搭建?MySQL?主從服務(wù)器](https://learnku.com/articles/31832)] 3、?安裝 ?????rpm?-vih?<http:> ?????rpm?-Uvh?<http:> 4、?yum?clean?all?&&?yum?makecache 5、更改yum源配置 ????yum?search?mmm??#?查詢mmm支持包 ????yum?-y?install?mysql-mmm-agent.noarch?#每個服務(wù)器都需要安裝mmm代理 ????yum?-y?install?mysql-mmm*??#監(jiān)控服務(wù)器安裝監(jiān)控服務(wù) ????systemctl?status?mysql-mmm-agent ????systemctl?start?mysql-mmm-agent ????systemctl?stop?mysql-mmm-agent ????systemctl?restart?mysql-mmm-agent 6、建立賬號 ????CREATE?USER?repl@'192.168.71.%'?identified?by?'123456';?//創(chuàng)建,建議從服務(wù)器IP段?① ????CREATE?USER?mmm_monitor@'192.168.71.%'?identified?by?'123456';?//創(chuàng)建,建議從服務(wù)器IP段?① ????CREATE?USER?mmm_agent@'192.168.71.%'?identified?by?'123456';?//創(chuàng)建,建議從服務(wù)器IP段?① 7、賬號授權(quán) ????GRANT?replication?client?on?*.*?to?'mmm_monitor'@'192.168.71.%'?identified?by?'123456';???#用于MMM監(jiān)控服務(wù)器使用,在master上建立 ????GRANT?super,replication?client?,process?on?*.*?to?'mmm_agent'@'192.168.71.%'?identified?by?'123456';????#MMM代理服務(wù),改變故障轉(zhuǎn)移和主從切換 ????GRANT?REPLICATION?SLAVE?ON?*.*?TO?repl@'192.168.71.%';?//授權(quán)?復(fù)制賬號 8、配置MMM(數(shù)據(jù)庫節(jié)點配置,三臺均配置) ????cd?/etc/mysq-mmm/ ????vim?mmm_common.conf ????配置: ????????網(wǎng)口:cluster_interface? ????????pid和bin路徑:默認 ????????replication_user:repl ????????replication_password:123456 ????????agent_user:mmm_agent ????????agent_password:123456 ????配置: ????????ip?:192.168.71.244 ????????mode?:master ????????peer:db2 ????配置??: ????????ip:192.168.71.223 ????????mode:master ????????peer:db1 ????配置: ????????ip:192.168.71.220 ????????mode:slave ????配置 ????????hosts?:?db1,db2 ????????ips:192.168.71.90 ????????mode:exclusive(?唯一的) ????配置? ????????hosts:db1,db2,db3 ????????ips:192.168.71.91,192.168.71.92,192.168.71.93 ????????mode:balanced(平衡的) ????復(fù)制配置文件到其他服務(wù)器 ????????scp?mmm_common.conf?root@192.168.71.223:/etc/mysql-mmm/ ????????scp?mmm_common.conf?root@192.168.71.220:/etc/mysql-mmm/ ????vim?mysql-agent.conf?(三臺服務(wù)器對應(yīng)設(shè)置為:db1,db2,db3) 9、監(jiān)控節(jié)點配置(192.168.71.220,只配置監(jiān)控節(jié)點) ????vim?mmm_mon.conf??#監(jiān)控數(shù)據(jù)文件 ????配置 ????????monitor_user?:mmm_monitor ????????monitor_password:123456 ????配置monitor ????????ping_ips:192.168.71.244,192.168.71.223,192.168.71.220 10、啟動MMM服務(wù) ????/etc/init.d/mysql-mmm-agent?start(三臺服務(wù)器均啟動代理服務(wù)) ????/etc/init.d/mysql-mmm-monitor?start?(監(jiān)控服務(wù)器啟動監(jiān)控服務(wù)) 11、查看監(jiān)控信息 ????mmm_control?? ????mmm_control?show?#查看集群狀態(tài) ????mmm_control?checks?all?#檢查集群狀態(tài) ????mmm_control?ping?#檢查與監(jiān)控服務(wù)器連接狀態(tài) ????mmm_control?set_online/offline?#設(shè)置服務(wù)器上線/下線 ????mmm_control?help?#查看幫助 12、查看服務(wù)器虛擬IP狀態(tài) 13、測試 ????關(guān)閉db1的數(shù)據(jù)庫:/etc/init.d/mysqld?stop ????查看監(jiān)控服務(wù)器上集群狀態(tài):mmm_control?show ????查看DB3的主從狀態(tài)</http:></http:>
常見問題:
**通過mmm_control?checks?all?檢查服務(wù)器狀態(tài)** Q1: ????UNKNOWN:?Error?occurred:?install_driver(mysql)?failed:?Can't?load?'/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so'?for?module?DBD::mysql:?libmysqlclient.so.18:?cannot?open?shared?object?file:?No?such?file?or?directory?at?/usr/lib64/perl5/DynaLoader.pm?line?190,?<stdin>?line?1. A1: ????perl-DBD-MySQL安裝出問題 ????????S1:rpm?-qa?|grep?-i?DBD??#查看DBD安裝 ????????S2:rpm?-e?--nodeps?perl-DBD-MySQL-4.023-6.el7.x86_64?#卸載DBD ????????S3:rpm?-qa?|grep?-i?DBD?#查看卸載狀態(tài) ????????S4:wget?http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm?#下載MySQLserver,可根據(jù)系統(tǒng)選擇具體版本 ????????S5:rpm?-ivh?mysql-community-release-el7-5.noarch.rpm?#rpm?MySQLserver ????????S6:yum?install?mysql-community-server?#yum安裝 ????????S7:yum?install?perl-DBD-MySQL????#重新安裝 ????????S8:systemctl?restart?mysql-mmm-monitor?#重啟 ????????S9:mmm_control?checks?all??+?mmm_control?show?->正常 Q2: ????當(dāng)M1宕機時,MMM架構(gòu)自動切換至M2,插入數(shù)據(jù),S未更新,M1重啟時,S仍未更新 A2: ????插入S一條空事務(wù),記錄與M2時相同即可。 Q3: ????handler?error?HA_ERR_KEY_NOT_FOUND;?the?event's?master?log?mysql-bin.000002,?end_log_pos?673?#跳過插入?|?更新?|?刪除 A3: ????stop?slave; ????insert?into?user(`username`)?values('1'); ????set?global?sql_slave_skip_counter=1; ????start?slave; Q4: ????The?slave?I/O?thread?stops?because?master?and?slave?have?equal?MySQL?server?ids?#切換主從發(fā)現(xiàn),server_id相同 A4: ????show?variables?like?'**server_id**'; ????vim?/etc/my.cnf????修改server_id?值 **配置多線程** stop?slave?#在從上,停止鏈路復(fù)制 set?global?slave_parallel_type?=?'logical_clock';??#設(shè)置邏輯時鐘的方式 set?global?slave_parallel_workers?=?4;??????#設(shè)置并發(fā)線程數(shù) start?slave;</stdin>
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END