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这种高可用架构。

二、安装过程:

1)配置/etc/hosts(所有机器都要操作)

[root@mmm-monit ~]# cat /etc/hosts
…….
192.168.179.53   mmm-monit
192.168.179.51  db-master1
192.168.179.52   db-master2
192.168.179.55   db-slave
2)首先在3台主机上安装mysql,部署复制环境

其中:192.168.179.51和192.168.179.52互为主从,192.168.179.55为192.168.179.51的从

———1192.168.179.51的my.cnf添加配置———
server-id = 1
log-bin = mysql-bin
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 1
———192.168.179.52的my.cnf添加配置———
server-id = 2
log-bin = mysql-bin
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 2
———192.168.179.53的my.cnf添加配置———
server-id = 3
log-bin = mysql-bin
log_slave_updates = 1
3)安装MMM(所有机器上都要执行)

…….先安装MMM所需要的Perl模块…….
[root@db-master1 ~]# vim install.sh        //在所有机器上执行下面的安装脚本
#!/bin/bash
wget http://xrl.us/cpanm –no-check-certificate
mv cpanm /usr/bin
chmod 755 /usr/bin/cpanm
cat > /root/list << EOF
install Algorithm::Diff
install Class::Singleton
install DBI
install DBD::mysql
install File::Basename
install File::stat
install File::Temp
install Log::Dispatch
install Log::Log4perl
install Mail::Send
install Net::ARP
install Net::Ping
install Proc::Daemon
install Thread::Queue
install Time::HiRes
EOF

for package in `cat /root/list`
do
cpanm $package
done
[root@db-master1 ~]# chmod 755 install.sh
[root@db-master1 ~]# ./install.sh

………下载mysql-mmm软件,在所有服务器上安装…………
[root@db-master1 ~]# wget http://mysql-mmm.org/_media/:mmm2:mysql-mmm-2.2.1.tar.gz
[root@db-master1 ~]# mv :mmm2:mysql-mmm-2.2.1.tar.gz mysql-mmm-2.2.1.tar.gz
[root@db-master1 ~]# tar -zvxf mysql-mmm-2.2.1.tar.gz
[root@db-master1 ~]# cd mysql-mmm-2.2.1
[root@db-master1 mysql-mmm-2.2.1]# make install

4)配置agent端的配置文件,需要在db-master1 ,db-master2,db-slave上分别配置(配置内容一样)

先在db-master1主机上配置agent的mmm_common.conf文件(这个在所有机器上都要配置,包括monitor机器)
[root@db-master1 ~]# cd /etc/mysql-mmm/
[root@db-master1 mysql-mmm]# cp mmm_common.conf  mmm_common.conf.bak
[root@db-master1 mysql-mmm]# vim mmm_common.conf
active_master_role      writer
<host default>
cluster_interface               eth0

pid_path                                /var/run/mmm_agentd.pid
bin_path                                /usr/lib/mysql-mmm/
replication_user                        slave                       //注意这个账号和下面一行的密码是在前面部署主主/主从复制时创建的复制账号和密码
replication_password                    slave@123
agent_user                              mmm_agent
agent_password                          mmm_agent
</host>
<host db-master1>
ip                                              192.168.179.51
mode                                            master
peer                                            db-master2
</host>
<host db-master2>
ip                                              192.168.179.52
mode                                            master
peer                                            db-master1
</host>
<host db-slave>
ip                                              192.168.179.55
mode                                            slave
</host>
<role writer>
hosts                                           db-master1, db-master2
ips                                             192.168.179.58
mode                                            exclusive
</role>

<role reader>
hosts                                           db-master2, db-slave
ips                                             192.168.179.59, 192.168.179.60
mode                                            balanced
</role>

分别在db-master1,db-master2,db-slave三台主机的/etc/mysql-mmm配置mmm_agent.conf文件,分别用不同的字符标识。注意这个文件的this db1这行内容要修改
为各自的主机名。比如本环境中,db-master1要配置this db-master1,db-master2要配置为this db-master2,而db-slave要配置为this db-slave。在db-master1(192.168.179.51)上:
[root@db-master1 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db-master1在db-master2(192.168.179.52)上:
[root@db-master2 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db-master2在db-slave(192.168.179.55)上:
[root@db-slave ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db-slave

接着在mmm-monit(192.168.179.53)配置monitor的配置文件:
[root@mmm-monit ~]# cp /etc/mysql-mmm/mmm_mon.conf /etc/mysql-mmm/mmm_mon.conf.bak
[root@mmm-monit ~]# vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf<monitor>
ip 192.168.179.53
pid_path /var/run/mysql-mmm/mmm_mond.pid
bin_path /usr/libexec/mysql-mmm
status_path /var/lib/mysql-mmm/mmm_mond.status
ping_ips 1192.168.179.51,192.168.179.52,192.168.179.55
auto_set_online 10 //发现节点丢失,则过10秒进行切换
</monitor><host default>
monitor_user mmm_monitor
monitor_password mmm_monitor
</host>debug 0

5)创建监控用户,这里需要创建3个监控用户

具体描述:
用户名 描述 权限
monitor user MMM的monitor端监控所有的mysql数据库的状态用户 REPLICATION CLIENT
agent user 主要是MMM客户端用于改变的master的read_only状态用户 SUPER,REPLICATION CLIENT,PROCESS
repl 用于复制的用户 REPLICATION SLAVE

在3台服务器(db-master1,db-master2,db-slave)进行授权,因为之前部署的主主复制,以及主从复制已经是ok的,所以这里在其中一台服务器执行就ok,执行后
权限会自动同步到其它两台机器上。用于复制的账号之前已经有,所以这里就授权两个账号。

在db-master1上进行授权操作:
mysql> GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent’@’182.48.115.%’ IDENTIFIED BY ‘mmm_agent’;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor’@’182.48.115.%’ IDENTIFIED BY ‘mmm_monitor’;
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

以下文章点击率最高

Loading…

发表评论