• ADADADADAD

    MySQL中的MMM集群部署是怎样的[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:01:16

    作者:文/会员上传

    简介:

    MySQL-MMM集群部署MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    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

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

    </monitor>

    <host default>

    monitor_usermonitor#监视用户名

    monitor_password123456#监视用户密码

    </host>

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

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

    vim /etc/mysql-mmm/mmm_common.conf

    10 replication_userslaveuser#代理用户

    11 replication_password123456

    12

    13 agent_user agent#数据库

    14 agent_password 123456

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

    18 ip 192.168.4.10

    19 modemaster

    20 peerdb11

    21 </host>

    22

    23 <host db11>

    24 ip 192.168.4.11

    25 modemaster

    26 peerdb10

    27 </host>

    28

    29 <host db12>

    30 ip 192.168.4.12

    31 modeslave

    32 </host>

    33

    34 <host db13>

    35 ip 192.168.4.13

    36 modeslave

    37 </host>

    39 <role writer>

    40 hostsdb10, db11

    41 ips 192.168.4.100

    42 modeexclusive

    43 </role>

    44

    45 <role reader>

    46 hostsdb12, db13

    47 ips 192.168.4.102, 192.168.4.105

    48 modebalanced

    49 </role>

    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

    tcp0 0 192.168.4.11:99890.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

    tcp0 0 192.168.4.120:99880.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地址

    MySQL中的MMM集群部署是怎样的.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlmmm