MySQL MMM高可用架构

MySQL Alan 9年前 (2016-07-17) 6058次浏览 0个评论 扫描二维码

MMM(Multi-Master Replication Manager)

监控和管理MySQL的主主复制拓扑:

MySQL MMM高可用架构

MMM部署步骤
1.配置主主复制及主从同步集群

更详细配置方法可参见MySQL主从复制一文

主1:192.168.0.131
主2:192.168.0.3
从1:192.168.0.9(本例仅使用一台从服务器,多台配置方法相同)
虚拟IP:192.168.0.100(写),192.168.0.101、192.168.0.102、192.168.0.103(读)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#主1
CREATE USER repl@'192.168.0.%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO repl@'192.168.0.%';
#my.cnf
log-bin=mysql-bin
max_binlog_size = 1000M
binlog_format =row
expire_logs_days = 7
sync_binlog = 1
server-id=1
relay_log=/var/lib/mysql/mysqld-relay-bin
#导出
mysqldump --single-transaction --master-data=2 --all-databases --triggers --routines --events -uroot -p > all.sql
scp all.sql root@192.168.0.3:/root #导出到主1
scp all.sql root@193.168.0.9:/root #导出到从1
#主2
#my.cnf
log-bin=mysql-bin
max_binlog_size = 1000M
binlog_format =row
expire_logs_days = 7
sync_binlog = 1
server-id=2
relay_log=/var/lib/mysql/mysqld-relay-bin
#导入
mysql -uroot -p < all.sql
#以下配置的后两项查看all.sql中对应内容
CHANGE MASTER TO MASTER_HOST = '192.168.0.131',
         MASTER_USER = 'repl',
         MASTER_PASSWORD = '123456',
         MASTER_LOG_FILE='mysql-bin.000004',
         MASTER_LOG_POS=194;
start slave; #启动从库
#回到主1
CHANGE MASTER TO MASTER_HOST = '192.168.0.3',
         MASTER_USER = 'repl',
         MASTER_PASSWORD = '123456',
         MASTER_LOG_FILE='mysql-bin.000004',
         MASTER_LOG_POS=752920;
#从1
#my.cnf
log-bin=mysql-bin
max_binlog_size = 1000M
binlog_format =row
expire_logs_days = 7
sync_binlog = 1
server-id=2
relay_log=/var/lib/mysql/mysqld-relay-bin
#导入
mysql -uroot -p < all.sql
#以下配置的后两项查看all.sql中对应内容,后两项的值请在主2上执行show master status来获取
CHANGE MASTER TO MASTER_HOST = '192.168.0.131',
         MASTER_USER = 'repl',
         MASTER_PASSWORD = '123456',
         MASTER_LOG_FILE='mysql-bin.000004',
         MASTER_LOG_POS=194;
start slave; #启动从库

2.安装主从节点所需要的支持包
主从服务器所需进行的安装:

1
2
3
4
5
6
7
8
9
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -ivh epel-release-latest-6.noarch.rpm 
rpm -ivh remi-release-6.rpm
vi /etc/yum.repos.d/epel.repo
baseurl #取消注释
#mirrorlist #进行注释
vi /etc/yum.repos.d/remi.repo
enabled=1 #将0修改为1

可通过yum search mmm查看MMM的包
MySQL MMM高可用架构
主从同时安装mysql-mmm-agent.noarch:

1
yum install mysql-mmm-agent.noarch -y

#安装监控包,本例从服务器同时充当监控服务器

1
yum install mysql-mmm* -y

3.安装及配置MMM工具集
MySQL MMM高可用架构
复制所需账号在配置过程中已经建立(repl),还需要两个账号,只需要在主1上进行操作即可:

1
2
grant replication client on *.*  to 'mmm_monitor'@'192.168.0.%' identified by '123456'; #监控
grant super, replication client, process on *.* to 'mmm_agent'@'192.168.0.%' identified by '123456'; #代理

基它配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#主1上进行如下配置
vi /etc/mysql-mmm/mmm_common.conf
 
    replication_user        repl
    replication_password    123456
    agent_user              mmm_agent
    agent_password          123456
<host db1>
    ip      192.168.0.131
    mode    master
    peer    db2
</host>
 
<host db2>
    ip      192.168.0.3
    mode    master
    peer    db1
</host>
 
<host db3>
    ip      192.168.0.9
    mode    slave
</host>
<role writer>
    hosts   db1, db2
    ips     192.168.0.100 #虚拟IP
    mode    exclusive
</role>
 
<role reader>
    hosts   db1, db2, db3
    ips     192.168.0.101,192.168.0.102,192.168.0.103 #虚拟IP
    mode    balanced
</role>
#scp将配置拷贝到其它服务器上
scp /etc/mysql-mmm/mmm_common.conf root@192.168.0.3:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@192.168.0.9:/etc/mysql-mmm/

然后将另两台服务器的this db1分别修改为this db2和this db3(/etc/mysql-mmm/mmm_agent.conf)
以上就完成了所有数据库节点的配置,接下来配置监控节点(从服务器)
vi /etc/mysql-mmm/mmm_mon.conf

1
2
ping_ips            192.168.0.131,192.168.0.3,192.168.0.9
monitor_password    123456

启动各节点的代理服务
/etc/init.d/mysql-mmm-agent start

4.运行MMM监控服务
在监控节点执行

1
2
/etc/init.d/mysql-mmm-monitor start
mmm_control show

MySQL MMM高可用架构可以发现我们的配置已经生效
5.测试
此时如果我们关闭主1上的MySQL服务来模拟故障(/etc/init.d/mysqld stop),再次在监控节点上执行mmm_control show会发现主服务器已进行了自动切换

MySQL MMM高可用架构

注:如果主1服务恢得正常那么状态就会由master/HARD_OFFLINE变为master/AWAITING_RECOVERY

此时打开从库MySQL命令行执行show slave status \G;会发现虽然配置时只将主服务器配置为主1,却切换成了主2

MySQL MMM高可用架构

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址