首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL-MMM 多主複製管理器安裝部署完整指南

     編輯:MySQL 綜合教學

架構規劃

MySQL-MMM (Multi-Master Replication Manager) 提供高可用 MySQL 叢集方案。最小部署需 2 資料庫節點 + 1 監控節點,生產環境建議 4 資料庫節點 (雙主雙從) + 1 監控節點。

節點規劃表

角色IP主機名Server ID
監控主機192.168.0.10mon-
Master 1192.168.0.11db11
Master 2192.168.0.12db22
Slave 1192.168.0.13db33
Slave 2192.168.0.14db44

虛擬 IP (VIP) 分配

VIP角色說明
192.168.0.100writer應用寫入操作連接此 IP
192.168.0.101-104reader應用讀取操作負載均衡連接

部署步驟

1. MySQL 基礎配置 (所有資料庫節點)

編輯 /etc/mysql/my.cnf:

server_id = 1                    # 每個節點唯一
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
auto_increment_increment = 2     # 主節點數量
auto_increment_offset = 1        # 各節點遞增唯一值
bind-address = 0.0.0.0           # 監聽所有介面

重啟 MySQL 生效:/etc/init.d/mysql restart

2. 建立必要帳號

-- 監控用戶
GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.0.%' IDENTIFIED BY 'monitor_password';

-- Agent 管理用戶
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.0.%' IDENTIFIED BY 'agent_password';

-- 複製用戶
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.%' IDENTIFIED BY 'replication_password';

注意:複製密碼不得超過 32 字元。

3. 資料同步與複製建立

  1. 在 db1 執行 FLUSH TABLES WITH READ LOCK; 並記錄 SHOW MASTER STATUS; 位置
  2. 使用 mysqldump 備份全庫,分發至 db2、db3、db4 匯入
  3. 在 db2/db3/db4 配置 CHANGE MASTER TO 指向 db1,啟動 START SLAVE;
  4. 驗證 SHOW SLAVE STATUS\G 確認複製正常
  5. 配置 db1 從 db2 複製,形成雙主結構

4. 安裝 MMM 套件

監控節點 (Debian/Ubuntu):

aptitude install liblog-log4perl-perl libmailtools-perl liblog-dispatch-perl \
libclass-singleton-perl libproc-daemon-perl libalgorithm-diff-perl \
libdbi-perl libdbd-mysql-perl
dpkg -i mysql-mmm-common_*.deb mysql-mmm-monitor_*.deb

資料庫節點:

aptitude install liblog-log4perl-perl libmailtools-perl liblog-dispatch-perl \
iproute libnet-arp-perl libproc-daemon-perl libalgorithm-diff-perl \
libdbi-perl libdbd-mysql-perl
dpkg -i mysql-mmm-common_*.deb mysql-mmm-agent_*.deb

RedHat/CentOS 使用 yum install mysql-mmm-agent 自動解決依賴。

5. MMM 核心配置

/etc/mysql-mmm/mmm_common.conf (所有節點相同):

active_master_role writer

<host default>
    cluster_interface eth0
    pid_path /var/run/mmmd_agent.pid
    bin_path /usr/lib/mysql-mmm/
    replication_user replication
    replication_password replication_password
    agent_user mmm_agent
    agent_password agent_password
</host>

<host db1> ip 192.168.0.11 mode master peer db2 </host>
<host db2> ip 192.168.0.12 mode master peer db1 </host>
<host db3> ip 192.168.0.13 mode slave </host>
<host db4> ip 192.168.0.14 mode slave </host>

<role writer>
    hosts db1, db2
    ips 192.168.0.100
    mode exclusive
</role>

<role reader>
    hosts db1, db2, db3, db4
    ips 192.168.0.101, 192.168.0.102, 192.168.0.103, 192.168.0.104
    mode balanced
</role>

Agent 配置 /etc/mysql-mmm/mmm_agent.conf:include mmm_common.conf\nthis db1 (各節點對應修改)

監控配置 /etc/mysql-mmm/mmm_mon.conf:包含監控 IP、ping 監測 IP 列表等。

6. 啟動服務並驗證

# 資料庫節點啟動 agent
/etc/init.d/mysql-mmm-agent start

# 監控節點啟動 monitor
/etc/init.d/mysql-mmm-monitor start

# 檢查叢集狀態
mmm_control show

首次啟動所有節點狀態為 AWAITING_RECOVERY,依序執行:

mmm_control set_online db1
mmm_control set_online db2
mmm_control set_online db3
mmm_control set_online db4

參考資源

官方指南:https://mysql-mmm.org/mmm2:guide

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved