MySQL-MMM高可用

  • MMM介紹

MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)複製,可以說是mysql主主複製管理器。雖然叫做雙主複製,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡,所以你可以用它來在一組居於複製的服務器啓動虛擬ip,除此之外,它還有實現數據備份、節點之間重新同步功能的腳本。

MMM提供了自動和手動兩種方式移除一組服務器中複製延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由於MMM無法完全的保證數據一致性,所以MMM適用於對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。對於那些對數據的一致性要求很高的業務,非常不建議採用MMM這種高可用架構。

安裝更新源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
//可5臺同時安裝 更換源
yum -y install epel-release  //進行eOpel更新
yum clean all && yum makecache  四臺MySQL 清空原有的 安裝新的
yum -y install mariadb-server mariadb  //安裝MySQL
systemctl stop firewalld.service     //關閉服務器
setenforce 0   //安全×××

修改MySQL主配置文件4臺都一樣的配置 除了service——id 的序號

#vi /etc/my.cnf  
(9dd 刪除原有的配置 添加下面的)
 [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                  //開啓binlog日誌用於主從複製
server_id=1                            //4臺id設置不同
log_slave_updates=true
sync_binlog=1
auto_increment_increment=2    //字段一次遞增多少
auto_increment_offset=1           //自增字段的起始值:1,3,5,7...等 奇數ID

# systemctl start mariadb  //開啓服務

MySQL-MMM高可用
安裝yum -y install mysql-mmm* 並且進行配置

# yum -y install mysql-mmm*
# cd /etc/mysql-mmm/
# vi /etc/mysql-mmm/mmm_common.conf   //所有主機上都要配置
  ……
<host default>
cluster_interface ens33
……
replication_user replication         //複製用戶密碼
replication_password 123456         //複製用戶
agent_user mmm_agent         //代理用戶
agent_password 123456         //代理用戶密碼

<host db1>           //master-db1的host名稱
ip 192.168.100.10
mode master       //主
peer db2       //與master-db1對等的服務器的host名,也就是master-db2的服務器host名
</host>

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

<host db3>
ip 192.168.100.25
mode slave         // 從
</host>

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

<role writer>
hosts db1, db2
ips 192.168.100.100         //對外提供的寫操作的虛擬IP
mode exclusive         //exclusive代表只允許存在一個主,也就是隻能提供一個寫的IP
</role>

<role reader>
hosts db3, db4
ips 192.168.100.210, 192.168.100.220        //對外提供讀操作的虛擬ip
mode balanced        //balanced代表負載均衡
</role>
複製給其他服務器
# scp mmm_common.conf [email protected]:/etc/mysql-mmm/
# scp mmm_common.conf [email protected]:/etc/mysql-mmm/
# scp mmm_common.conf [email protected]:/etc/mysql-mmm/
  • Monitor服務器配置
    # cd /etc/mysql-mmm/
    # vi mmm_mon.conf
    ping_ips      192.168.100.10,192.168.100.11,192.168.100.12,192.168.100.13 //數據庫服務器地址
    auto_set_online     10        //自動上線時間 10秒
    .....
    <host default>
        monitor_user        mmm_monitor
        monitor_password    123456
    </host>
  • 在所有數據庫上爲mmm_agent 和 mmm_moniter 授權
    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';
    mysql> flush privileges;   //刷新權限
  • 修改所有數據庫的mmm_agent.conf
    # vi /etc/mysql-mmm/mmm_agent.conf
    ....
    this db1         //主1爲db1、  主2爲db2、   從1爲db3 、  從2爲db4

    MySQL-MMM高可用
    MySQL-MMM高可用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章