MySQL 高可用架構之 MMM 架構

mmm(multi-master replication manager,多主復制管理架構)


主要作用

監控和管理 mysql 的主主復制拓撲,并在當前的主服務器失效時,進行主和主備服務器之間的主從切換和故障轉移等工作。

相關推薦:【mysql教程

主要功能:

● 監控 MySQL 主從復制健康狀況(主動主動模式下的主主復制(主主),主動被動模式的主主復制(主主備))

●?在主庫出現宕機時進行故障轉移并自動配置其它從 DB 對新主 DB 的復制

●?提供可主,寫(讀)虛擬 IP,在主從服務器出現問題時可用自動遷移虛擬 IP

架構:

MySQL 高可用架構之 MMM 架構

資源:

MySQL 高可用架構之 MMM 架構

部署:

配置主主復制及主從同步集群 安裝主從節點所需要的支持包(perl) 安裝及配置?MMM?工具集 允許?MMM?監控服務 測試配置

演示:

● 拓撲圖(VIP: visual IP)

MySQL 高可用架構之 MMM 架構

步驟:

1、配置主(100)主(101)[參考:?[Tony?老師搭建?MySQL?主從服務器](https://learnku.com/articles/31832)] 2、配置主(100)從(102)???[參考:?[Tony?老師搭建?MySQL?主從服務器](https://learnku.com/articles/31832)] 3、?安裝 ?????rpm?-vih?<http:> ?????rpm?-Uvh?<http:> 4、?yum?clean?all?&amp;&amp;?yum?makecache 5、更改yum源配置 ????yum?search?mmm??#?查詢mmm支持包 ????yum?-y?install?mysql-mmm-agent.noarch?#每個服務器都需要安裝mmm代理 ????yum?-y?install?mysql-mmm*??#監控服務器安裝監控服務 ????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';?//創建,建議從服務器IP段?① ????CREATE?USER?mmm_monitor@'192.168.71.%'?identified?by?'123456';?//創建,建議從服務器IP段?① ????CREATE?USER?mmm_agent@'192.168.71.%'?identified?by?'123456';?//創建,建議從服務器IP段?① 7、賬號授權 ????GRANT?replication?client?on?*.*?to?'mmm_monitor'@'192.168.71.%'?identified?by?'123456';???#用于MMM監控服務器使用,在master上建立 ????GRANT?super,replication?client?,process?on?*.*?to?'mmm_agent'@'192.168.71.%'?identified?by?'123456';????#MMM代理服務,改變故障轉移和主從切換 ????GRANT?REPLICATION?SLAVE?ON?*.*?TO?repl@'192.168.71.%';?//授權?復制賬號 8、配置MMM(數據庫節點配置,三臺均配置) ????cd?/etc/mysq-mmm/ ????vim?mmm_common.conf ????配置: ????????網口: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(平衡的) ????復制配置文件到其他服務器 ????????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?(三臺服務器對應設置為:db1,db2,db3) 9、監控節點配置(192.168.71.220,只配置監控節點) ????vim?mmm_mon.conf??#監控數據文件 ????配置 ????????monitor_user?:mmm_monitor ????????monitor_password:123456 ????配置monitor ????????ping_ips:192.168.71.244,192.168.71.223,192.168.71.220 10、啟動MMM服務 ????/etc/init.d/mysql-mmm-agent?start(三臺服務器均啟動代理服務) ????/etc/init.d/mysql-mmm-monitor?start?(監控服務器啟動監控服務) 11、查看監控信息 ????mmm_control?? ????mmm_control?show?#查看集群狀態 ????mmm_control?checks?all?#檢查集群狀態 ????mmm_control?ping?#檢查與監控服務器連接狀態 ????mmm_control?set_online/offline?#設置服務器上線/下線 ????mmm_control?help?#查看幫助 12、查看服務器虛擬IP狀態 13、測試 ????關閉db1的數據庫:/etc/init.d/mysqld?stop ????查看監控服務器上集群狀態:mmm_control?show ????查看DB3的主從狀態</http:></http:>

常見問題:

**通過mmm_control?checks?all?檢查服務器狀態** 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?#查看卸載狀態 ????????S4:wget?http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm?#下載MySQLserver,可根據系統選擇具體版本 ????????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?-&gt;正常 Q2: ????當M1宕機時,MMM架構自動切換至M2,插入數據,S未更新,M1重啟時,S仍未更新 A2: ????插入S一條空事務,記錄與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?#切換主從發現,server_id相同 A4: ????show?variables?like?'**server_id**'; ????vim?/etc/my.cnf????修改server_id?值 **配置多線程** stop?slave?#在從上,停止鏈路復制 set?global?slave_parallel_type?=?'logical_clock';??#設置邏輯時鐘的方式 set?global?slave_parallel_workers?=?4;??????#設置并發線程數 start?slave;</stdin>

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享