NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 数据库 .: Microsoft SQL Server .: mysql-MMM.DOCX

mysql-MMM.DOCX

 

1.MMMMaster-Master Replication Manager for Mysql,Mysql主主复制管理器)

 

2MySQL-MMM优缺点

 

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。

 

缺点:Monitor节点是单点,可以结合Keepalived实现高可用。

 

3MySQL-MMM工作原理

 

MMM(Master-Master replication managerfor MysqlMysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)

 

mmm_mond监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。

 

mmm_agentd运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。

 

mmm_control一个简单的脚本,提供管理mmm_mond进程的命令。

 

mysql-mmm的监管端会提供多个虚拟IPVIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql

 

在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则还要添加一个mmm_tools用户。

 

 

 

案例:

 

 

 

 

 

Mysql-MMM实现高可用群集

 

----master1(db1)1.1.1.10

 

----master2(db2)1.1.1.1.20

 

----monitor1.1.1.30

 

----slave1(db4) 1.1.1.40

 

----slave2(db5)1.1.1.50

 

一、准备环境

 

使用CentOS6.5操作系统。

 

1、设置静态ip

 

2、设置主机名

 

分别为:vim /etc/sysconfig/network(重启生效)

 

[root@localhost ~]# hostname db1

 

[root@localhost ~]# hostname db2

 

[root@localhost ~]# hostname monitor

 

[root@localhost ~]# hostname db4

 

[root@localhost ~]# hostname db5

 

3、设置域名解析(所有服务器都要设置)

 

[root@db1 ~]# vim /etc/hosts

 

添加:

 

1.1.1.10 db1

 

1.1.1.20 db2

 

1.1.1.30 monitor

 

1.1.1.40 db4

 

1.1.1.50 db5

 

二、安装配置mysql并启动服务

 

[root@db1 ~]# yum -y install mysql mysql-server mysql-devel

 

[root@db1 ~]# vim /etc/my.cnf

 

添加:

 

binlog-do-db=test //需要记录二进制日志的数据库,多个用逗号隔开

 

binlog-ignore-db=mysql //不需要记录二进制日志的数据库,多个用逗号隔开

 

auto_increment_increment=2 //字段一次递增多少

 

auto_increment_offset=1 //自增字段的起始值

 

replicate-do-db=test //同步的数据库,多个用逗号隔开

 

replicate-ignore-db = information_schema //不同步的数据库,多个用逗号隔开

 

sync-binlog=1 //每条自动更新,安全性高,默认是0

 

server_id = 1 //每台设置不同

 

log_bin = mysql-bin //定义日志

 

log_slave_updates = true//当一个主故障,另一个立即接管

 

[root@db1 ~]# service mysqld restart

 

[root@db1 ~]# mysqladmin -u root password '123.com'

 

三、配置主主,主从同步

 

1、实现主主同步(1.1.1.101.1.1.20

 

1)服务器db1(1.1.1.10)的配置:

 

db1

 

mysql> grant replication slave on *.* to 'slave'@'1.1.1.20' identified by '123.com';

 

mysql> flush privileges;

 

mysql> show master status;

 

(db2)

 

mysql> change master to

 

master_host='1.1.1.10',master_user='slave',master_password='123.com',master_log_file='mysql-

 

bin.000001',master_log_pos=332;

 

mysql> start slave;

 

mysql> show slave status\G

 

Slave_IO_Running: Yes //确保为YES

 

Slave_SQL_Running: Yes //确保为YES

 

验证:

 

创建数据库hehe,在服务器1.1.1.20中查看

 

mysql> create database hehe

 

mysql> show databases;

 

2)服务器db21.1.1.20)的配置:

 

(db2)

 

mysql> grant replication slave on *.* to 'slave'@'1.1.1.10' identified by '123.com';

 

mysql> flush privileges;

 

mysql> show master status;

 

(db1)

 

mysql> change master to

 

master_host='1.1.1.10',master_user='slave',master_password='123.com',master_log_file='mysql-

 

bin.000001',master_log_pos=332;

 

mysql> start slave;

 

mysql> show slave status\G

 

Slave_IO_Running: Yes //确保为YES

 

Slave_SQL_Running: Yes //确保为YES

 

验证:

 

创建数据库xixi,在主机1.1.1.10中查看

 

mysql> create database xixi

 

mysql> show databases;

 

2、配置主从同步(配置slave1slave2做为master1的从)

 

1)在db11.1.1.10)上:(给两个从权限)

 

mysql> grant replication slave on *.* to 'slave'@'1.1.1.40' identified by '123.com';

 

mysql> grant replication slave on *.* to 'slave'@'1.1.1.50' identified by '123.com';

 

mysql> flush privileges;

 

mysql> show master status;

 

2)分别在db41.1.1.40)和db51.1.1.50)上:(指定主)

 

mysql> change master to

 

master_host='1.1.1.10',master_user='slave',master_password='123.com',master_log_file='mysql-

 

bin.00004',master_log_pos=875;

 

mysql> change master to

 

master_host='1.1.1.10',master_user='slave',master_password='123.com',master_log_file='mysql-

 

bin.00004',master_log_pos=875;

 

mysql> start slave;

 

mysql> stop slave; //如果有报错可执行这两条

 

mysql> reset slave;

 

mysql> start slave;

 

mysql> show slave status\G

 

Slave_IO_Running: Yes //确保为YES

 

Slave_SQL_Running: Yes //确保为YES

 

验证:

 

1、在db1中创建gege数据库,在db2db4db5中查看。

 

2、在db2中创建hihi数据库,在db1db4db5中查看。

 

四、安装mysql-mmm相关软件包

 

注意:需要连接公网进行下载,使用网络yum源。

 

1、安装mysql-mmm软件

 

[root@db1 ~]# wget http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

 

[root@db1 ~]# rpm -ivh epel-release-6-8.noarch.rpm

 

[root@db1 ~]# yum -y install mysql-mmm*

 

不要网络直接用软件

 

1.epel-release-6-8.noarch.rpm2.mysql-mmm

 

rpm 1,然后需要升级,

 

如果没有createrepo可用yum安装

 

unzip mysql-mmm...(linux系统中zip压缩包)

 

createrepo mysql-mmm //为了使用yum安装创建索引菜单

 

cd mysql-mmm //到这个目录

 

yum -y install mysql-mmm*

 

2、在db1db2db4db5中授权monitor访问

 

mysql> grant replication client on *.* to 'monitor'@'1.1.1.%' identified by '123.com';

 

mysql> grant super,replication client, process on *.* to 'agent'@'1.1.1.%' identified by

 

'123.com';

 

3、修改mmm_common.conf配置文件

 

注意:所有主机中的该配置文件的内容一样(包括监控主机mysql-monitor)。

 

[root@db1 ~]# vim /etc/mysql-mmm/mmm_common.conf

 

修改:

 

active_master_role writer

 

<host default>

 

cluster_interface eth0

 

pid_path /var/run/mysql-mmm/mmm_agentd.pid

 

bin_path /usr/libexec/mysql-mmm/

 

replication_user monitor

 

replication_password 123.com

 

agent_user agent

 

agent_password 123.com

 

</host>

 

<host db1>

 

ip 1.1.1.10

 

mode master

 

peer db2

 

</host>

 

<host db2>

 

ip 1.1.1.20

 

mode master

 

peer db1

 

</host>

 

<host db3>

 

ip 1.1.1.40

 

mode slave

 

</host>

 

<host db4>

 

ip 1.1.1.50

 

mode slave

 

</host>

 

<role writer>

 

hosts db1, db2

 

ips 1.1.1.100

 

mode exclusive //只有一个主机可以write,写操作模式

 

</role>

 

<role reader>

 

hosts db4, db5

 

ips 1.1.1.200,1.1.1.201

 

mode balanced //多个slave主机可以reader,读操作模式

 

</role>

 

[root@db1 ~]# scp /etc/mysql-mmm/mmm_common.conf 1.1.1.20:/etc/mysql-mmm/

 

[root@db1 ~]# scp /etc/mysql-mmm/mmm_common.conf 1.1.1.30:/etc/mysql-mmm/

 

[root@db1 ~]# scp /etc/mysql-mmm/mmm_common.conf 1.1.1.40:/etc/mysql-mmm/

 

[root@db1 ~]# scp /etc/mysql-mmm/mmm_common.conf 1.1.1.50:/etc/mysql-mmm/

 

4、修改mmm_agent.conf配置文件

 

注意:在数据库主机进行配置,根据不同的主机,修改为不同的值。

 

[root@db1 ~]# vim /etc/mysql-mmm/mmm_agent.conf

 

 

 

修改:

 

include mmm_common.conf

 

this db1 //其他数据库主机分别修改为db2db4db5

 

5、配置mmm_mon.conf文件

 

注意:在监控主机monitor1.1.1.30)上配置。

 

[root@monitor ~]# vim /etc/mysql-mmm/mmm_mon.conf

 

修改:

 

ping_ips 1.1.1.10,1.1.1.20,1.1.1.40,1.1.1.50 //指定被控端(真实数据库)的IP

 

auto_set_online 10 //恢复后自动设置在线的时间

 

<host default>

 

monitor_user monitor //授权用户

 

monitor_password 123.com //密码

 

</host>

 

6、启动代理

 

四个数据库主机启动

 

[root@db1 ~]# /etc/init.d/mysql-mmm-agent start

 

[root@db2 ~]# /etc/init.d/mysql-mmm-agent start

 

[root@db4 ~]# /etc/init.d/mysql-mmm-agent start

 

[root@db5 ~]# /etc/init.d/mysql-mmm-agent start

 

7、启动监控(服务器1.1.1.30

 

[root@monitor ~]# /etc/init.d/mysql-mmm-monitor start

 

五、综合验证:

 

1、在monitor1.1.1.30)上查看:

 

[root@monitor ~]# mmm_control show

 

db1(1.1.1.10) master/ONLINE. Roles: writer(1.1.1.100)

 

db2(1.1.1.20) master/ONLINE. Roles:

 

db4(1.1.1.40) slave/ONLINE. Roles: reader(1.1.1.200)

 

db5(1.1.1.50) slave/ONLINE. Roles: reader(1.1.1.201)

 

注意:通过查看,主db1是对外一个写入的角色,但不能真正提供只写操作,要想实现读写分离需要结合

 

amoeba。后面的虚拟IP是真正来访问mysql数据库的。

 

2、故障转移切换

 

1)停掉主db1数据库,等待几秒后,查看db1数据库的状态

 

[root@db1 ~]# service mysqld stop

 

[root@monitor ~]# mmm_control show

 

db1(1.1.1.10) master/HARD_OFFLINE. Roles:

 

db2(1.1.1.20) master/ONLINE. Roles: writer(1.1.1.100)

 

db4(1.1.1.40) slave/ONLINE. Roles: reader(1.1.1.200)

 

db5(1.1.1.50) slave/ONLINE. Roles: reader(1.1.1.201)

 

2)停掉从db4数据库,等待几秒后,查看db4数据库的状态

 

[root@monitor ~]# mmm_control show

 

db1(1.1.1.10) master/ONLINE. Roles: writer(1.1.1.100)

 

db2(1.1.1.20) master/ONLINE. Roles:

 

db4(1.1.1.40) slave/HARD_OFFLINE. Roles:

 

db5(1.1.1.50) slave/ONLINE. Roles: reader(1.1.1.200), reader(1.1.1.201)

 

3、客户端验证:

 

注意:使用客户端client登陆数据库,停掉其中一个主/从,查看mmm的状态。

 

db1db2中对客户端进行授权:

 

mysql> grant all on *.* to 'hehe'@'1.1.1.254' identified by '123.com';

 

客户端登陆:

 

[root@client ~]# mysql -u hehe -h 1.1.1.100 -p123.com

 

 

 

这篇文章对你多有用?

相关文章

article docx和doc的区别
docx格式与doc格式都是word文本格式,但是二者的差...

(No rating)  1-20-2014    Views: 606   
article 后缀名.docx的文档word打开乱码怎么办?
      ...

(No rating)  4-26-2010    Views: 5256   
article 去掉Win7快捷方式小箭头最正确的方法.docx

(No rating)  7-18-2013    Views: 701   

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited