MySQL中的MMM集群部署是怎样的
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 slaveuser@"%" identified by '123456';
[root@mysql10 ~]# vim /etc/my.cnf
[mysqld]
server_id=10
log-bin=master10
binlog_format="mixed"
[root@mysql10 ~]# 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 slaveuser@"%" identified by '123456';
[root@mysql11 mysql]# vim /etc/my.cnf
[mysqld]
server_id=11
log-bin=master11
binlog_format="mixed"
log_slave_updates
[root@mysql11 mysql]# systemctl stop mysqld
[root@mysql11 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上
[root@mysql12 ~]# vim /etc/my.cnf
[mysqld]
server_id=12
[root@mysql12 ~]# systemctl stop mysqld
[root@mysql12 ~]# 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上
[root@mysql13 ~]#vim /etc/my.cnf
[mysqld]
server_id=13
[root@mysql13 ~]#systemctl stop mysqld
[root@mysql13 ~]#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 guser@"%" identified by "123456";
在客户端245 使用授权用户guser 连接10服务器 产生的新数据放在其他3台主机上也有
[root@room1pc32 桌面]# mysql -h292.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)
[root@mysql10 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db10#自定义名称
[root@mysql11 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db11
[root@mysql12 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db12
[root@mysql13 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db13
b.修改管理节点监控服务的配置文件(120)
[root@client120 ~]# vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
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_user monitor#监视用户名
monitor_password 123456#监视用户密码
debug 00不显示调试信息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
18 ip 192.168.4.10
19 mode master
20 peer db11
21
22
23
24 ip 192.168.4.11
25 mode master
26 peer db10
27
28
29
30 ip 192.168.4.12
31 mode slave
32
33
34
35 ip 192.168.4.13
36 mode slave
37
39
40 hosts db10, db11
41 ips 192.168.4.100
42 mode exclusive
43
44
45
46 hosts db12, db13
47 ips 192.168.4.102, 192.168.4.105
48 mode balanced
49
d.根据配置文件的设置,在数据节点上添加对应的授权用户
monitor
agent
3)在虚拟机10上 授权
mysql> grant replication client on *.* to monitor@"%" identified by "123456";
mysql> grant replication client,process,super on *.* to agent@"%" 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
[root@mysql12 ~]# 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.在监控服务器本机登录管理界面查看,查看数据库服务状态
[root@client120 ~]# 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:
[root@client120 ~]# mmm_control set_online db10
[root@client120 ~]# mmm_control set_online db11
[root@client120 ~]# mmm_control set_online db12
[root@client120 ~]# mmm_control set_online db13
[root@client120 ~]# 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地址
[root@client120 ~]# 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
[root@mysql10 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
[root@mysql12 ~]# 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
[root@mysql13 ~]# 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访问数据库服务
[root@room1pc32 桌面]# mysql -h292.168.4.100 -uguser -p123456
MySQL [(none)]> select @@hostname;
+---------------------+
| @@hostname |
+---------------------+
| mysql10 |
+---------------------+
模拟 虚拟机10挂掉
[root@mysql10 ~]# systemctl stop mysqld
[root@client120 ~]# 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)
[root@mysql13 ~]# 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 故障修好了
[root@mysql10 ~]# systemctl start mysqld
[root@client120 ~]# 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)
[root@client120 ~]# mmm_control set_online db10
[root@client120 ~]# 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地址
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。