DBA成长之路---MySQL-MMM集群部署

MySQL-MMM集群部署

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

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

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

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

实验拓扑图

实验环境准备

五台虚拟机器 IP 主机名分别为:

192.168.4.10 主机名:mysql10

192.168.4.11 主机名:mysql11

192.168.4.12 主机名:mysql12

192.168.4.13 主机名:mysql13

192.168.4.120 主机名:client120

每台虚拟机关闭防火墙和SELinux的限制 以方便实验

10-13 安装mysql数据库服务

一,配置主从同步结构

1.1 配置主主结构 10 / 11

共同配置

虚拟机10上:用户授权  启动binlog日志  重启数据库服务 管理员登录指定主库信息

mysql> grant replication slave on *.* to [email protected]"%" identified by '123456';

[[email protected] ~]# vim /etc/my.cnf

[mysqld]

server_id=10

log-bin=master10

binlog_format="mixed"

[[email protected] ~]# systemctl restart mysqld

mysql> show master status;

| master10.000001 |      154 |

mysql> change master to master_host="192.168.4.11", master_user="slaveuser",master_password="123456",master_log_file="master11.000001",master_log_pos=154;

mysql> start slave;

mysql> show slave status\G;

Relay_Master_Log_File: master13.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

虚拟机11上:用户授权  启用binlog日志 并允许级联复制  重启数据库服务  管理员登录指定主库信息

mysql> grant replication slave on *.* to [email protected]"%" identified by '123456';

[[email protected] mysql]# vim /etc/my.cnf

[mysqld]

server_id=11

log-bin=master11

binlog_format="mixed"

log_slave_updates

[[email protected] mysql]# systemctl stop mysqld

[[email protected] mysql]# systemctl start  mysqld

mysql> show master status;

| master11.000001 |      154 |

mysql> change master to master_host="192.168.4.10", master_user="slaveuser",master_password="123456",master_log_file="master10.000001",master_log_pos=154;

mysql> start slave;

mysql> show slave status\G;

Relay_Master_Log_File: master10.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

配置一主多从结构(把12,13分别配置11的从库)

虚拟机12上

[[email protected] ~]# vim /etc/my.cnf

[mysqld]

server_id=12

[[email protected] ~]# systemctl stop mysqld

[[email protected] ~]# systemctl start  mysqld

mysql> change master to master_host="192.168.4.11", master_user="slaveuser",master_password="123456",master_log_file="master11.000001",master_log_pos=154;

mysql> start slave;

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

虚拟机13上

[[email protected] ~]#vim /etc/my.cnf

[mysqld]

server_id=13

[[email protected] ~]#systemctl stop mysqld

[[email protected] ~]#systemctl start  mysqld

mysql> change master to master_host="192.168.4.11", master_user="slaveuser",master_password="123456",master_log_file="master11.000001",master_log_pos=154;

mysql> start slave;

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

虚拟机10上:

在10主机上添加访问用户guser 能够在其他3台主机上也有相同的授权用户

mysql> create database gamedb;

mysql> grant all on gamedb.* to [email protected]"%" identified by "123456";

在客户端245 使用授权用户guser 连接10服务器 产生的新数据放在其他3台主机上也有

[[email protected] 桌面]# mysql -h192.168.4.10 -uguser -p123456

MySQL [(none)]> create table gamedb.a(id int);

MySQL [(none)]> insert into gamedb.a values(100);

MySQL [(none)]> insert into gamedb.a values(100);

MySQL [(none)]> insert into gamedb.a values(100);

二,配置mysql-mmm

mysql-mmm介绍:

监控服务: 运行在管理节点上 用来监控数据节点

代理服务: 运行在数据节点 用来提供系统给监控主机

1)在所有主机上安装mysql-mmm软件 (10-13,120)

yum -y install perl-*

tar -zxvf mysql-mmm.zip

unzip mysql-mmm.zip

cd mysql-mmm/

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

cd mysql-mmm-2.2.1/

make install

ls /etc/mysql-mmm/

mmm_agent.conf  mmm_common.conf  mmm_mon.conf  mmm_tools.conf

2)修改配置文件

a.修改数据节点代理服务配置文件(10 11 12 13)

[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db10 #自定义名称

[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db11

[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db12

[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db13

b.修改管理节点监控服务的配置文件(120)

[[email protected] ~]# vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

<monitor>

ip              192.168.4.120

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.4.10, 192.168.4.11, 192.168.4.12, 192.168.4.13

</monitor>

<host default>

monitor_user                    monitor #监视用户名

monitor_password                123456 #监视用户密码

</host>

debug 0 0不显示调试信息 1显示调试信息

c.修改公共文件(10,11,12,13,120)

vim /etc/mysql-mmm/mmm_common.conf

10     replication_user        slaveuser #代理用户

11     replication_password    123456

12

13         agent_user      agent #数据库

14         agent_password  123456

17 <host db10> #修改四台服务器

18         ip      192.168.4.10

19         mode    master

20         peer    db11

21 </host>

22

23 <host db11>

24         ip      192.168.4.11

25         mode    master

26         peer    db10

27 </host>

28

29 <host db12>

30         ip      192.168.4.12

31         mode    slave

32 </host>

33

34 <host db13>

35         ip      192.168.4.13

36         mode    slave

37 </host>

39 <role writer>

40         hosts   db10, db11

41         ips     192.168.4.100

42         mode    exclusive

43 </role>

44

45 <role reader>

46         hosts   db12, db13

47         ips     192.168.4.102, 192.168.4.105

48         mode    balanced

49 </role>

d.根据配置文件的设置,在数据节点上添加对应的授权用户

monitor

agent

3)在虚拟机10上 授权

mysql> grant replication client on *.* to [email protected]"%" identified by "123456";

mysql> grant replication client,process,super on *.* to [email protected]"%" identified by "123456";

4)其他三台测试

mysql> select user,host from mysql.user where user in ('agent','monitor');

三,启动服务

a.启动数据节点主机代理服务(10-13):安装服务运行依赖软件包 安装获取vip地址软件包 启动服务

cd /root/mysql-mmm/

tar -zxf Algorithm-Diff-1.1902.tar.gz

cd Algorithm-Diff-1.1902/

perl Makefile.PL

make

make install

cd /root/mysql-mmm/

tar -zxf Proc-Daemon-0.03.tar.gz

cd Proc-Daemon-0.03/

perl Makefile.PL

make

make install

cd /root/mysql-mmm/

rpm -ivh --nodeps perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm

/etc/init.d/mysql-mmm-agent start

/etc/init.d/mysql-mmm-agent status

netstat -pantu | grep mmm

netstat -pantu | grep :9989

tcp        0      0 192.168.4.11:9989       0.0.0.0:*               LISTEN      10059/mmm_agentd

yum -y install gcc gcc-c++

cd /root/mysql-mmm/

gunzip Net-ARP-1.0.8.tgz

tar -xf Net-ARP-1.0.8.tar

cd Net-ARP-1.0.8/

perl Makefile.PL

make

make install

b.启动管理节点主机监控服务 (120):安装服务运行软件包 启动服务

cd /root/mysql-mmm/

tar -zxf Algorithm-Diff-1.1902.tar.gz

cd Algorithm-Diff-1.1902/

perl Makefile.PL

make

make install

cd /root/mysql-mmm/

tar -zxf Proc-Daemon-0.03.tar.gz

cd Proc-Daemon-0.03/

perl Makefile.PL

make

make install

cd /root/mysql-mmm/

rpm -ivh --nodeps perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm

/etc/init.d/mysql-mmm-monitor start

/etc/init.d/mysql-mmm-monitor status

netstat -pantu | grep mmm_mond

netstat -pantu | grep 9988

tcp        0      0 192.168.4.120:9988       0.0.0.0:*               LISTEN      30047/mmm_mond

四,验证mysql-mmm的配置

a 查看数据库节点上的数据库服务是运行的

IO线程和SQ线程 是否OK

[[email protected] ~]# mysql -uroot -p123456 -e"show slave status\G;" | grep -i yes

mysql: [Warning] Using a password on the command line interface can be insecure.

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

b.在监控服务器本机登录管理界面查看,查看数据库服务状态

[[email protected] ~]# mmm_control show

defined(@array) is deprecated at /usr/share/perl5/vendor_perl/Log/Log4perl/Config.pm line 863.

(Maybe you should just omit the defined()?)

db10(192.168.4.10) master/AWAITING_RECOVERY. Roles:

db11(192.168.4.11) master/AWAITING_RECOVERY. Roles:

db12(192.168.4.12) slave/AWAITING_RECOVERY. Roles:

db13(192.168.4.13) slave/AWAITING_RECOVERY. Roles:

[[email protected]  ~]# mmm_control set_online db10

[[email protected]  ~]# mmm_control set_online db11

[[email protected]  ~]# mmm_control set_online db12

[[email protected]  ~]# mmm_control set_online db13

[[email protected]  ~]# mmm_control show

defined(@array) is deprecated at /usr/share/perl5/vendor_perl/Log/Log4perl/Config.pm line 863.

(Maybe you should just omit the defined()?)

db10(192.168.4.10) master/ONLINE. Roles: writer(192.168.4.100)

db11(192.168.4.11) master/ONLINE. Roles:

db12(192.168.4.12) slave/ONLINE. Roles: reader(192.168.4.105)

db13(192.168.4.13) slave/ONLINE. Roles: reader(192.168.4.102)

c.在数据接待年本机查看是否获取到vip地址

[[email protected]  ~]# ping -c 2 192.168.4.100

PING 192.168.4.100 (192.168.4.100) 56(84) bytes of data.

64 bytes from 192.168.4.100: icmp_seq=1 ttl=64 time=0.367 ms

64 bytes from 192.168.4.100: icmp_seq=2 ttl=64 time=0.383 ms

[[email protected] Net-ARP-1.0.8]# ip addr show | grep 192.168.4.

inet 192.168.4.10/24 brd 192.168.4.255 scope global eth0

inet 192.168.4.100/32 scope global eth0

[[email protected] ~]# ip addr show | grep 192.168.4.

inet 192.168.4.12/24 brd 192.168.4.255 scope global eth0

inet 192.168.4.105/32 scope global eth0

[[email protected] ~]#  ip addr show | grep 192.168.4.

inet 192.168.4.13/24 brd 192.168.4.255 scope global eth0

inet 192.168.4.102/32 scope global eth0

d.客户端连接VIP访问数据库服务

[[email protected] 桌面]# mysql -h192.168.4.100 -uguser -p123456

MySQL [(none)]> select @@hostname;

+---------------------+

| @@hostname |

+---------------------+

| mysql10            |

+---------------------+

模拟 虚拟机10挂掉

[[email protected] ~]# systemctl stop mysqld

[[email protected]  ~]# mmm_control show

defined(@array) is deprecated at /usr/share/perl5/vendor_perl/Log/Log4perl/Config.pm line 863.

(Maybe you should just omit the defined()?)

db10(192.168.4.10) master/HARD_OFFLINE. Roles:

db11(192.168.4.11) master/ONLINE. Roles: writer(192.168.4.100)

db12(192.168.4.12) slave/ONLINE. Roles: reader(192.168.4.105)

db13(192.168.4.13) slave/ONLINE. Roles: reader(192.168.4.102)

[[email protected] ~]# ip addr show | grep 192.168.4

inet 192.168.4.11/24 brd 192.168.4.255 scope global eth0

inet 192.168.4.100/32 scope global eth0

MySQL [(none)]> select @@hostname;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    1900

Current database: *** NONE ***

+---------------------+

| @@hostname |

+---------------------+

| mysql11            |

+---------------------+

1 row in set (0.00 sec)

模拟 虚拟机10 故障修好了

[[email protected] ~]# systemctl start mysqld

[[email protected]  ~]# mmm_control show

defined(@array) is deprecated at /usr/share/perl5/vendor_perl/Log/Log4perl/Config.pm line 863.

(Maybe you should just omit the defined()?)

db10(192.168.4.10) master/AWAITING_RECOVERY. Roles

db11(192.168.4.11) master/ONLINE. Roles: writer(192.168.4.100):

db12(192.168.4.12) slave/ONLINE. Roles: reader(192.168.4.105)

db13(192.168.4.13) slave/ONLINE. Roles: reader(192.168.4.102)

[[email protected]  ~]# mmm_control set_online db10

[[email protected]  ~]# mmm_control show

defined(@array) is deprecated at /usr/share/perl5/vendor_perl/Log/Log4perl/Config.pm line 863.

(Maybe you should just omit the defined()?)

db10(192.168.4.10) master/ONLINE. Roles:

db11(192.168.4.11) master/ONLINE. Roles: writer(192.168.4.100)

db12(192.168.4.12) slave/ONLINE. Roles: reader(192.168.4.105)

db13(192.168.4.13) slave/ONLINE. Roles: reader(192.168.4.102)

10不会立即占用VIP地址 当11 出现故障时 10 会重新获得VIP地址

原文地址:http://blog.51cto.com/13558754/2057541

时间: 2024-09-30 04:42:45

DBA成长之路---MySQL-MMM集群部署的相关文章

07: MMM集群概述 、 部署集群基础环境 、 MMM集群部署 、 总结和答疑

day07 部署MySQL高可用集群 高可用集群介绍: 主备模式 当主不能提供服务的时候备用主机接替它提供服务,这个过程对于客户端是透明的. 一 配置MySQL主从同步主主结构主从从一主多从 二配置MySQL-mmm perl mmm_monitor 监控服务 运行在管理节点主机上.mmm_agentd 代理服务 运行在所有的数据节点主机上. writer-vip : 192.168.4.100 read -vip : 192.168.4.101/102 2.1 在所有主机上安装mysql-mm

Linux系统运维之MYSQL数据库集群部署(主从复制)

一.介绍 Mysql主从复制,前段时间生产环境部署了一套主从复制的架构,当时现找了很多资料,现在记录下 二.拓扑图 三.环境以及软件版本 主机名 IP 操作系统 角色 软件版本 MysqlDB_Master 192.168.0.1 CentOS release 7.1 Master Mysql 5.6.36 MysqlDB_Slave 192.168.0.2 CentOS release 7.1 Slave Mysql 5.6.36 四.源码安装 之前都是yum直接安装的,这次尝试使用源码安装,

Galera Cluster mysql+keepalived集群部署

1.卸载mysql 查找本机安装的mysqlrpm -qa | grep -i mysql --nodeps --force rpm -ev MySQL-server-5.6.15-1.el6.x86_64rpm -ev --nodeps mysql-libs-5.1.71-1.el6.x86_64 (强制卸载) 查找之前老版本mysql的目录.并且删除老版本mysql的文件和库 find / -name mysql rm -rf /usr/lib64/mysql 卸载后/etc/my.cnf不

DBA成长之路---mysql数据库服务(二)

管理表记录  增加 insert into 库.表 values(字段值列表); insert into 库.表(字段值列表) values(字段值列表); insert into 库.表 values(字段值列表),(字段值列表); 查询 单表查询 select 字段名列表 from 库.表 where 条件: 条件匹配的表示方法 数值比较 字段名 符号 值 符号:>  >=  <  <=  =  != 字符比较 字段名 符号 "值"   符号: =  !=

DBA成长之路---mysql主从同步,读写分离

主从同步 什么是主从同步: 让其他的数据库服务器自动同步正在提供服务的数据库服务器上 的数据. 1 添加授权用户 mysql> grant replication slave on *.* to [email protected]"192.168.4.4" identified by '123456'; 2启用binlog日志 [[email protected] ~]# vim /etc/my.cnf [mysqld] server_id=3 log-bin=master11

DBA成长之路---mysql数据备份与恢复

数据备份与恢复 备份方式: 物理备份:直接拷贝备份库和表对应的文件 cp -r /var/lib/mysql/mysql  /mysql.bak tar -zcvf /mysql.tar.gz  /varlib/mysql/mysql/* 逻辑备份:执行备份时,根据已有的库和表生成对应的sql命令,把生成的sql命令存储到指定的备份文件里 备份策略: 完全备份: 备份所有数据(表,库,服务器) 差异备份:备份自完全备份后所新产生(备份新产生的数据) 增量备份:备份自上一次备份后,所有新产生(备份

DBA成长之路---mysql数据库服务基础(三)

mysql 密码恢复及设置 [[email protected] ~]# grep password /var/log/mysqld.log#mysql 启动后随机生成的初始密码 2017-12-20T02:36:18.623330Z 1 [Note] A temporary password is generated for [email protected]: 5h)>QAdqbI7t #使用初始密码登录 并重置密码   初始密码不能对数据库进行操作 需要重置密码 [[email prote

MMM高可用MySQL服务集群解决方案

MMM高可用方案简介 MMM(Master-Master Replication Manager for MySQL)主主复制管理器,是一套提供了MySQL主主复制配置的监控.故障迁移和管理的可伸缩的脚本程序.在MMM高可用解决方案中,可以配置双主多从架构,通过MySQL Replication技术可以实现两台MySQL服务器互为主从,并且在任何时候只有一个节点可以写入,避免多节点写入的数据冲突,同时,当可写节点故障时,MMM套件可以立即监控到,然后将服务自动切换到另一个主节点继续提供服务,从而

基于MMM搭建MySQL Replication集群高可用架构

MMM介绍 MMM是Multi-Master Replication Manager for MySQL的缩写,它是MySQL提供的一个多主复制管理器,其核心是使用perl语言编写的一组脚本.实际上MMM是比较早期甚至有点老的一种用于构建高可用MySQL架构的方式,但因其还有一定的应用场景,所以本文将会演示一下如何搭建一个MMM架构. MMM 由两个组件组成: monitor:监控集群内数据库的状态,在出现异常时发布切换命令,一般和数据库分开部署 agent:运行在每个 MySQL 服务器上的代