CentOS 7 MariaDB-MMM高可用叢集

來源:互聯網
上載者:User

標籤:replicat   ase   process   ystemd   scp   程式   col   技術分享   負載平衡   

MariaDB-MMM高可用群集

1.MySQL-MMM概述

MMM(Master-Master replication manager for MySQL)是一套支援雙主故障切換和雙主日常管理的指令碼程式。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)複製,雖然叫做雙主複製,但是業務上同一時刻只允許對一個主進行寫入,另一台備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套指令碼程式一方面實現了故障切換的功能,另一方面其內部附加的工具指令碼也可以實現多個slave的read負載平衡
MMM提供了自動和手動兩種方式移除一組伺服器中複寫延遲較高的伺服器的虛擬ip,同時它還可以備份資料,實現兩節點之間的資料同步等。由於MMM無法完全的保證資料一致性,所以MMM適用於對資料的一致性要求不是很高,但是又想最大程度的保證業務可用性的情境。對於那些對資料的一致性要求很高的業務,非常不建議採用MMM這種高可用架構

2、MySQL-MMM優缺點

優點:高可用性,擴充性好,出現故障自動切換,對於主主同步,在同一時間只提供一台資料庫寫操作,保證的資料的一致性
缺點:Monitor節點是單點,可以結合Keepalived實現高可用

3、MySQL-MMM工作原

MMM是一套靈活的指令碼程式,基於perl實現,用來對mysql replication進行監控和故障遷移,並能管理mysql Master-Master複製的配置(同一時間只有一個節點是可寫的)

mmm_mond:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。此指令碼需要在監管機上運行

mmm_agentd:運行在每個mysql伺服器上的代理進程,完成監控的探針工作和執行簡單的遠端服務設定。此指令碼需要在被監管機上運行

mmm_control:一個簡單的指令碼,提供管理mmm_mond進程的命令

mysql-mmm的監管端會提供多個虛擬IP(VIP),包括一個可寫VIP,多個可讀VIP,通過監管的管理,這些IP會綁定在可用mysql之上,當某一台mysql宕機時,監管會將VIP遷移至其他mysql

在整個監管過程中,需要在mysql中添加相關授權使用者,以便讓mysql可以支援監理機的維護

master1 : 192.168.94.11           db1

master2 : 192.168.94.22           db2

slave1 :    192.168.94.33           db3

slave2 :    192.168.94.44      db4

monitor :  192.168.94.55       monitor

VIP : 

192.168.94.250  writer

192.168.94.251  reader

192.168.94.252  reader

============================================================================================================================================

分別在master1、master2、slave1、slave2上安裝MariaDB

[[email protected] ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[[email protected] ~]# yum -y install epel-release[[email protected] ~]# yum clean all && yum makecache[[email protected] ~]# yum -y install mariadb-server mariadb

修改master1、master2的my.cnf設定檔

[[email protected] ~]# vim /etc/my.cnf# 在[mysqld]下添加以下內容                                                                                     log-bin=mysql-binlog-slave-updates=trueserver-id=11        # id號不能相同 master2為22 relay-log=relay-log-binrelay-log-index=relay-log-bin.index

修改slave1、slave2的my.cnf設定檔

[[email protected] ~]# vim /etc/my.cnf# 在[mysqld]下添加以下內容server-id=33    # slave2 為44relay-log=relay-log-binrelay-log-index=relay-log-bin.index

啟動mariadb

[[email protected] ~]# systemctl start mariadb[[email protected] ~]# systemctl start mariadb[[email protected] ~]# systemctl start mariadb[[email protected] ~]# systemctl start mariadb

配置主主複製 , 兩個master互相授予許可權

# master1[[email protected] ~]# mysqlMariaDB [(none)]> show master status;MariaDB [(none)]> grant replication slave on *.* to ‘sqlsync‘@‘192.168.94.%‘ identified by ‘123123‘;
MariaDB [(none)]> flush privileges;# master2 做相同操作[[email protected] ~]# mysqlMariaDB [(none)]> show master status;MariaDB [(none)]> grant replication slave on *.* to ‘sqlsync‘@‘192.168.94.%‘ identified by ‘123123‘;
MariaDB [(none)]> flush privileges;===========================================================================================================
# master1 MariaDB [(none)]> show master status;# master2MariaDB [(none)]> change master to master_host=‘192.168.94.11‘,master_user=‘sqlsync‘,master_password=‘123123‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=358;MariaDB [(none)]> start slave;MariaDB [(none)]> show slave status\G;
# Slave_IO_Running、Slave_SQL_Running 都為Yes即可
===========================================================================================================
# master2MariaDB [(none)]> show master status;# master1change master to master_host=‘192.168.94.22‘,master_user=‘sqlsync‘,master_password=‘123123‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=358;MariaDB [(none)]> start slave;MariaDB [(none)]> show slave status\G;

# Slave_IO_Running、Slave_SQL_Running 都為Yes即可

配置主從複製slave1、slave2

# slave1[[email protected] ~]# mysqlMariaDB [(none)]> change master to master_host=‘192.168.94.11‘,master_user=‘sqlsync‘,master_password=‘123123‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=358;MariaDB [(none)]> start slave;MariaDB [(none)]> show slave status\G;
# Slave_IO_Running、Slave_SQL_Running 都為Yes即可
# slave2做相同操作 
[[email protected] ~]# mysql
MariaDB [(none)]> change master to master_host=‘192.168.94.11‘,master_user=‘sqlsync‘,master_password=‘123123‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=358;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;
# Slave_IO_Running、Slave_SQL_Running 都為Yes即可

安裝MySQL-MMM伺服器

# 所有伺服器做相同操作[[email protected] ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo    [[email protected] ~]# yum -y install epel-release mysql-mmm*

配置MySQL-MMM

[[email protected] ~]# vim /etc/mysql-mmm/mmm_common.conf

[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf 192.168.94.22:/etc/mysql-mmm/[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf 192.168.94.33:/etc/mysql-mmm/[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf 192.168.94.44:/etc/mysql-mmm/[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf 192.168.94.55:/etc/mysql-mmm/
[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf #  master1 為 this db1 , master1 為 this db2 , slave1 為 this db3 , slave2 為 this db4

在monitor伺服器上編輯mmm_mon.conf設定檔

[[email protected] ~]# vim /etc/mysql-mmm/mmm_mon.conf

授權mmm-agent

# 每台db都做相同操作[[email protected] ~]# mysqlMariaDB [(none)]> grant super, replication client, process on *.* to ‘mmm_agent‘@‘192.168.94.%‘ identified by ‘123123‘;
MraidDB [(none)]> flush privileges;

開啟agent服務

# 所有伺服器都做相同操作[[email protected] ~]# systemctl enable mysql-mmm-agentCreated symlink from /etc/systemd/system/multi-user.target.wants/mysql-mmm-agent.service to /usr/lib/systemd/system/mysql-mmm-agent.service.[[email protected] ~]# systemctl start mysql-mmm-agent

在monitor伺服器上進行檢測

 

 

 

 

CentOS 7 MariaDB-MMM高可用叢集

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.