实验需求:配置mysql-mmm,实现mysql的高可用

实验方案:


一.公共配置

准备5台RHEL6.4操作系统的服务器,安装MySQL数据库服务器软件包。

其中2台数据库服务器(192.168.10.10,192.168.10.20),配置为mysql主从同步中的主主结构,并开启级联复制功能。

把另外2台(192.168.10.30,192.168.10.40)配置为主主结构中,任意一台主的从数据库服务器。

验证数据是否能够正常同步


1.主数据库服务器192.168.10.10的配置文件如下:

vim   /etc/my.cnf

[mysqld]

server_id=10                  

log_bin=mysql-10-bin          //两台主数据库服务器必须开启binlog日志,名称设置不同

log_slave_updates=1           //允许级联复制 

auto_increment_offset=1        //指定自动增长字段的起始值

auto_increment_increment=2      //指定自动增长字段的步长

skip-name-resolve               //不解析主机名


2.主数据库服务器192.168.10.20的配置文件如下:

vim   /etc/my.cnf

[mysqld]

server_id=20                  

log_bin=mysql-20-bin          

log_slave_updates=1           

auto_increment_offset=2        //起始值与另一台主不同,防止字段重复,无法写入

auto_increment_increment=2      

skip-name-resolve    


3.配置从数据库服务器192.168.10.30

vim   /etc/my.cnf

[mysqld]

server_id=30                  

log_bin=mysql-30-bin          

log_slave_updates=1    

skip-name-resolve


3.配置从数据库服务器192.168.10.40

vim   /etc/my.cnf

[mysqld]

server_id=40                  

log_bin=mysql-40-bin          

log_slave_updates=1    

skip-name-resolve


4.启动4台数据库服务



5.在2台主数据库服务器上做同步授权

mysql> grant  replication  slave   on *.*  to  slave@"%" identified by "slave";


6.在4台数据库服务器上都指定自己的主数据库服务器

以192.168.10.10为例,配置:

mysql> change  master  to 

    -> master_host="192.168.10.20",

    -> master_user="slave",

    -> master_password="slave",

    -> master_log_file="mysql-20-bin.000001",

    -> master_log_pos=120;

mysql> start slave;


7.测试同步结果



二.在5台数据库服务器上安装 mysql-mmm 软件,另一台服务器192.168.10.50负责监控其余四台数据库服务器

1.先安装依赖包

yum -y install perl-XML-DOM                        

yum -y install perl-XML-DOM-XPath 

yum -y install  perl-Class-Singleton     //启动mysql-mmm-montior进程时需要此软件包提供的Singleton类 

yum -y install  perl-Params-Validate

yum -y install perl-XML-DOM                        

yum -y install perl-XML-DOM-XPath 

yum -y install perl-MailTools


rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm  //启动mysql-mmm-agent进程时需要此软件包提供的Log-Log4perl 类


tar -zxvf Algorithm-Diff-1.1902.tar.gz    //启动mysql-mmm-agent进程时需要此软件包提供的Algorithm-Diff类                                          

cd Algorithm-Diff-1.1902

perl  Makefile.PL

make

make test

make install


tar -zxvf Proc-Daemon-0.03.tar.gz         //启动mysql-mmm-agent进程时需要此软件包提供的Daemon类                    

cd Proc-Daemon-0.03                                                                           

perl  Makefile.PL                                                       

make                                                                   

make  test                                                              

make  install   


cd Net-ARP-1.0.8               //分配虚拟ip需要安装的包

perl    Makefile.PL

make

make  install     

                                            

2.安装mysql-mmm软件

tar -zxvf mysql-mmm-2.2.1.tar.gz 

cd mysql-mmm-2.2.1

make install


三.在4台被监控数据库服务器上做授权

1.授权监控用户

grant  replication  client  on *.*  to  monitor@"%" identified by "monitor";


2.授权代理用户

grant  replication client,process,super   on *.*  to  agent@"%" identified by "agent";


四.所有数据库服务器上编辑配置文件 

vim /etc/mysql-mmm/mmm_common.conf

active_master_role      writer                                 

        cluster_interface               eth0

 

        pid_path                        /var/run/mmm_agentd.pid

        bin_path                        /usr/lib/mysql-mmm/


        replication_user              slave

        replication_password         slave


        agent_user                    agent

        agent_password                 agent



        ip                                      192.168.10.10

        mode                                    master

        peer                                    db20


        ip                                      192.168.10.20

        mode                                    master

        peer                                    db10


        ip                                      192.168.10.30

        mode                                    slave


        ip                                      192.168.10.40

        mode                                    slave



        hosts                                   db10, db20

        ips                                     192.168.10.101      //指定负责写操作数据库服务器使用的虚拟ip

        mode                                    exclusive           


        hosts                                   db20, db30,db40

        ips                                     192.168.10.102, 192.168.10.103, 192.168.10.104                         //指定负责读操作数据库服务器使用的虚拟ip

        mode                                    balanced


可在1台服务器编辑完后,scp到其他服务器/etc/mysql-mmm 目录下


五.在4台被监控端配置代理进程的主配置文件 mmm_agent.conf

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db10                                 //修改成和mmm_common.conf 指定的一致


/etc/init.d/mysql-mmm-agent start            //启动代理进程agent

netstat  -tulnp   |  grep   mmm              //默认监听9989端口


六、配置监控端192.168.10.50主配置文件 mmm_mon.conf

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

        ip                                      192.168.10.50

        pid_path                                /var/run/mmm_mond.pid

        bin_path                                /usr/lib/mysql-mmm/

        status_path                             /var/lib/misc/mmm_mond.status

        ping_ips                                192.168.10.10, 192.168.10.20, 192.168.10.30, 192.168.10.40 //4台数据库服务器的真实ip地址。


        monitor_user                    monitor

        monitor_password                monitor


debug 0


/etc/init.d/mysql-mmm-monitor   start         //启动监控端的监控进程 

netstat  -tulnp   |  grep   mmm                //默认监听9988端口



七.在监控服务器192.168.10.50上查看4台数据库服务器的状态

mmm_control set_online db10

mmm_control set_online db20

mmm_control set_online db30

mmm_control set_online db40

mmm_control show           //查看4台数据库服务器的状态



mmm_control  help          //监控进程命令查看帮助


八.测试mysql-mmm 配置

1.停止192.168.10.10上的数据库服务,再执行mmm_control  show命令,发现192.168.10.20使用虚拟IP 192.168.10.101


2.在从数据库服务器上 查看是否获取到监控主机分配的虚拟ip地址,执行命令ip a或ip addr show 


3.分别在2台主数据库服务器上做用户授权:grant all  on  *.*  to   root@"%"  identified by  "123456";

  在客户端访问主数据库服务器:mysql  -h192.168.10.101  -uroot  -p123  能够登陆成功说明配置成功