MySQL-MMM高可用羣集

前言

工作原理:

         master1和master2之間雙向複製,同時Master1和Slave1與slave2之間是主從複製。這樣整個體系中存在兩個Master,正常情況下只有一個master對外提供寫服務。如果對外提供服務的master意外宕機了,這是MySQL本身並不具備failover切換的能力,儘管集羣中仍然有一個正常的master節點,但應用仍不可用。mysql-mmm就是爲了解決這個問題誕生的。

         MySQL-MMM是Master-Master Replication Manager for MySQL(mysql主主複製管理器)的簡稱,是Google的開源項目(Perl腳本),主要用來監控mysql主主複製並做失敗轉移。

  其原理是將真實數據庫節點的IP(RIP)映射爲虛擬IP(VIP)集,在這個虛擬的IP集中,有一個專用於write的IP,多個用於read的IP,這個用於Write的VIP映射着數據庫集羣中的兩臺master的真實IP(RIP),以此來實現Failover的切換,其他read的VIP可以用來均衡讀(balance)。


一、實驗環境

image

二、實驗步驟

1.搭建主主同步

2.搭建主從同步

3.安裝配置mysql-mmm

4.配置monitor監控

5.測試

三、實驗內容

-------------------------------搭建主主同步-------------------

配置db1/db2/db3/db4服務器的配置文件

vim /etc/my.cnf
[mysqld]
log-bin=mysql_bin                       //開啓log-bin
server-id = 11                 //每臺的server-id不可相同
binlog-ignore-db=mysql,infomation_schema     //不進行同步的庫
log-slave-updates=true             //允許slave進行同步
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1

systemctl restart mysqld.service
systemctl stop firewalld.service 
setenforce 0

注:配置四臺服務器時server-id必須互不相同

配置主主模式:db1/db2

db1:192.168.218.131

mysql -uroot -pgrant replication slave on *.* to 'replication'@'192.168.218.%' identified by 'abc123';
flush privileges;
show master status;
change master to master_host='192.168.218.137',master_user='replication',master_password='abc123',master_log_file='mysql_bin.000001',master_log_pos=426;

image

db2:192.168.218.137

mysql -uroot -pgrant replication slave on *.* to 'replication'@'192.168.218.%' identified by 'abc123';
flush privileges;
show master status;
change master to master_host='192.168.218.131',master_user='replication',master_password='abc123',master_log_file='mysql_bin.000002',master_log_pos=426;

image

配置完成後db1與db2均開啓slave:

start slave;
show slave status \G;
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes                //查看二者需均爲yes

                Last_IO_Errno: 0                  //若不爲yes可查看error信息
                Last_IO_Error: 
                 Last_SQL_Errno: 0  
                Last_SQL_Error:


-------------------------------搭建主從同步-------------------

db3:192.168.218.145、db4:192.168.218.139

mysql -uroot -p
change master to master_host='192.168.218.131',master_user='replication',master_password='abc123',master_log_file='mysql_bin.000002',master_log_pos=426;
start slave;
show slave status \G;
             Slave_IO_Running: Yes             //二者均爲yes
            Slave_SQL_Running: Yes

注:每次change master時均需要去db1 master服務器show master status

----------------------------安裝配置mysql-mmm-------------------------

安裝在五臺服務器

wget -O /etc/yum.repos.d/CenOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum clean all && yum makecache
yum -y install mysql-mmm*

db1:192.168.218.131

vim /etc/mysql-mmm/mmm_common.conf<host default>cluster_interface       
    pid_path                /run/mysql-mmm-agent.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        replicant
    replication_password        abc123
    agent_user            mmm_agent
    agent_password                abc123
            
        </host>
        <host db1>
        ip      192.168.218.131
        mode    master
    peer    db2
    </host>
    
    <host db2>
    ip      192.168.218.137
    mode    master
    peer    db1
    </host>
    
    <host db3>
    ip      192.168.218.145
    mode    slave
    </host>
    
    <host db4>
    ip      192.168.218.139
    mode    slave
    </host>
    
    <role writer>
    hosts   db1, db2
    ips     192.168.218.250
    mode    exclusive
    </role>
    
    <role reader>
    hosts   db3, db4
    ips     192.168.218.251, 192.168.218.252
    mode    balanced
    </role>
cd /etc/mysql-mmm/
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/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/

在所有數據庫上爲mmm_monitor、mmm-agant授權

grant super, replication client, process on *.* to 'mmm_agent'@'192.168.218.%' identified by 'abc123';
grant replication client on *.* to 'mmm_monitor'@'192.168.218.%' identified by 'abc123';
flush privileges;

修改所有數據庫的mmm_agent.conf

vim /etc/mysql-mmm/mmm_agent.conf
this db1                 //根據實驗環境修改db後的數值

在所有數據庫上啓動mysql-mmm-agent

systemctl start mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service

---------------------------------配置monitor監控-------------------------

monitor:192.168.218.130

vim /etc/mysql-mmm/mmm_mon.conf
systemctl start mysql-mmm-monitor.service

image

監控顯示結果OK

image

-------------------------------測試-----------------------------------

image

將db3 mysql宕掉,使reader vip均移至db4

db3:systemctl stop mysqld

image

測試無異常,實驗搭建成功。

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