Mysql高可用HA Mysql-mmm环境搭建

Mysql-MMM原理就是利用浮动ip

环境:
Cent OS  5.5  Final(2台)互为主从
Ubuntu 10.04  TLS     作监控
软件:
mysql,mysql-server,mysql-mmm-agent,mysql- mmm-common,mysql-mmm-mon
IP:
CentOS 192.168.100.101,192.168.100.102
Ubuntu 192.168.100.100
安装步骤3台机器上,2台CentOS上已经装过mysql,mysql-server)

1、首先安装 mysql-mmm-agent,mysql-mmm-common,mysql-mmm-mon.

我建议CentOS使用YUM进行安装,这样省事,并且便于以后升级,但是CentOS软件仓库默认是不含这些软件的,必须要有epel这个包的支持。故我们必须先安装epel .

$su -c ‘rpm -Uvh http://download.fedora.redhat.co … ease-5-4.noarch.rpm


   $yum install  mysql-mmm*    -y

        这样mysql-mmm*这些软件已经全部安装。

  Ubuntu的可以去http://mysql-mmm.org/downloads去下子deb包进行安装.

2、配置Dual-Master

     分别 在两台CentOS上对mysql的配置文件my.cnf(核心语句)进行如下配置

server-id            =   1  (两台server-id不能相同)
log_bin              =   /var/log/mysql/mysql-bin.log
log_bin-index        =   /var/log/mysql/mysql-bin.index
relay_log            =   /var/log/mysql/mysql-relay.log
relay_log-index             =  /var/log/mysql/mysql-relay.index
expire_logs_days     =  10
max_binlog_size      =  100M
log_slave_updates    = 1
replicate-do-db      = wbztest

然后重新启动mysqld.

授权:

分别在两台CentOS中对不同用户进行授权:
mysql > grant replication client on *.*  to ‘mmm_monitor’@’192.168.100.100’  identified   by ‘monitor_password’;

mysql > grant  super,replication client ,process on *.*  to   ‘mmm_agent’@
‘192.168.100.*’  identified   by ‘monitor_password’;

    mysql > grant  replication slave on *.* to ‘replication’@’192.168.100.*’   identified by          ‘rep_password’;

########华丽的分割线########

REPLICATION CLIENT这个用于monitor用户
SUPER,REPLICATION  CLIENT,PROCESS用于agent 用户
REPLICATION SLAVE  用于REPLICATION用户

    设置互为主从(前提是两台mysql都有wbztest这个数据库,并且表结果相同)
分别在db1(192.168.100.101),和db2(192.168.100.102)上执行.
(db1) mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
|
File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
|
mysql-bin.000002 |      374 |              |                  |  
+——————+———-+————–+——————+
1 row in set (0.00 sec)然后执行CHANGE MASTER操作

(db1) mysql> CHANGE MASTER TO master_host=’192.168.100.102′, master_port=3306,
             master_user=’replication’,master_password=’rep_password’,
              master_log_file=’mysql-bin.000002′, master_log_pos=374; 如果出现ERROR 1201 (HY000): Could not initialize master错误,可参考http://hi.baidu.com/bikong0411/blog/item/e9ed082e5d014c371f3089c9.html 解决。
执行
mysql > start slave;
mysql > show slave status \G;

如果出现下列两条语句,则配置成功!

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

3、配置mysql-mmm

    分别在db1,db2上对mmm_common.conf进行修改
# vim /etc/mysql-mmm/mmm_common.conf

active_master_role          writer  
<host default>     
             cluster_interface       eth0      
             pid_path                /var/run/mmmd_agent.pid
             bin_path                /usr/lib/mysql-mmm/      
             replication_user        replication
             replication_password  rep_password  
             agent_user            mmm_agent   
             agent_password        agent_password
</host>
<host db1>   
      ip                      192.168.100.101
      mode                    master
      peer                    db2
</host>  
<host db2>     
        ip                      192.168.100.102
        mode                    master
        peer                    db1
</host>   
<role writer>   
       hosts                   db1, db2   
       ips                     192.168.100.103
       mode                    exclusive
</role>
<role reader>   
    hosts                   db1, db2
    ips                     192.168.100.104, 192.168.100.105
    mode                    balanced
</role>
  注:
192.168.100.103,192.168.100.104,192.168.105是3个浮动ip,当有读的请求时,会均衡使用  192.168.100.104和192.168.100.105,当有写的请求时将使用192.168.100.103进行写入操作

然后修改mysql-mmm-agent.conf
#vim /etc/mysql-mmm/mysql-mmm-agent.conf

include mmm_common.conf

this db1在db2上作类似操作,只不过相应的参数要改一下.

在Ubuntu 上修改mmm_mon.conf

#vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
<monitor>   
     ip                      127.0.0.1   
     pid_path                /var/run/mmmd_mon.pid   
     bin_path                /usr/lib/mysql-mmm/     
     status_path             /var/lib/misc/mmmd_mon.status   
     ping_ips                192.168.102,192.168.103
</monitor>
<host default>     
    monitor_user            mmm_monitor   
    monitor_password        monitor_password
</host>  

debug 0
4、开启mysql-mmm-agent和mysql-mmm-monitor服务

编辑db1,db2的/etc/default/mysql-mmm-agent文件和Ubuntu的/etc/default/mysql-mmm-monitor
使 ENABLED = 1,然后分别执行:
db1,db2上执行:
       /etc/init.d/mysql-mmm-agent  start

Ubuntu上执行
       /etc/init.d/mysql-mmm-monitor  start

5、测试

测试在Ubuntu上也即监控机器上执行
mon$ mmm_control show   

       db1(192.168.100.101) master/AWAITING_RECOVERY. Roles:
       db2(192.168.100.102) master/AWAITING_RECOVERY. Roles:            对两台db进行setonline 操作

mon$ mmm_control set_online db1
OK: State of ‘db1’ changed to ONLINE. Now you can wait some time
and check its new roles!

mon$ mmm_control set_online db2
OK: State of ‘db2’ changed to ONLINE. Now you can wait some time
and check its new roles!
这样就大功告成了,Mysql完成了高可用配置,当某一天一台mysql down掉的话,Mysql-Monitor会自动切换到另一台mysql!

您可能还喜欢...