MySQL高可用集群的介绍以及用法

MySQL高可用集群的介绍以及用法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1 MMM概述

1.1 关于mysql-mmm

MySQL主主复制管理器

MySQL主主复制配置的监控,故障转移和管理的一套脚本套件;

能对居于标准的主从配置的任意数量的从服务器进行读负载均衡和实现数据备份;

通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。

1.2 高可用集群介绍:

主备模式 当主不能提供服务的时候备用主机接替它提供服务,这个过程对于客户端是透明的。

1.3 案例 前提环境:主从从结构

5台服务器,2台数据服务器台互为主主,另2台数据服务器为主中的一台的从,1台监控服务器。

master51:192.168.4.51

master52:192.168.4.52

slave53:192.168.4.53

slave54:192.168.4.54

write-vip:192.168.4.100

read-vip:192.168.4.101/102

1.4 主主模式配置

(1)用户授权   

在master51上配置

mysql> grant  replication  slave on *.*  to  用户名@192.168.4.52  identified by "密码";

同样的操作在master52上给192.168.4.51授权

(2)启用binlog日志

master51和master52除了server_id不一致其它保持一致

vim  /etc/my.cnf

server_id=51

log-bin

binlog-format="mixed"

(3)重启数据库服务器

systemctl restart mysqld

(4)查看正在使用binlog日志文件。

mysql> show  master  status;

从服务器配置

master51为主数据库,master52为从数据库时:

(1)在52上测试主库授权的用户是否有效

#mysql  -h292.168.4.51  -u用户名  -p密码

mysql> show grants;

(2)在52本机数据管理员登录主库信息

mysql> change master  to

    -> master_host="192.168.4.51",

    -> master_user="用户名",

    -> master_password="密码",

    -> master_log_file=“主的文件名",     #show master status可以看到 

    -> master_log_pos=数字; #查看主的Position(偏移位置)

(5)开启从服务

mysql> start slave;

mysql> show slave status\G;

            Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

必须保证Slave_IO,Slave_SQL的状态为yes。

(6) master52为主数据库,master51为从数据库时,在master51上操作同上。

2 Mysql-MMM构架

2.1 服务器角色

管理节点:mmm-monitor(服务进程)  (55服务器)

#负责所有的监控工作的监控守护进程,决定故障节点的移除或恢复;

数据库节点:mmm-agent(服务进程)  (即51---54的服务器)

#运行在Mysql服务器上的代理守护进程,提供简单远程服务集,提供给监控节点;

2.2 核心软件包及作用

Net-ARP:分配虚拟Ip地址

mysql-mmm 构架的核心进程

2.3 配置

(1)tar -xf mysql-mmm-2.2.1.tar.gz(所有主机上安装)

查看说明文件,执行make install

配置文件路径:/etc/mysql-mmm

(2)修改数据节点主机mmm_agentd服务的配置文件

vim /etc/mysql-mmm/mmm_agent.conf #指定服务器在集群中的名称,不能重复

this 主机名  #配置声明自己的主机名

(3)修改管理节点主机mmm_monitor服务的配置文件

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf  #加载公共配置文件

<monitor>

        ip                     192.168.4.55  #管理节点主机(即监控主机的IP地址)

        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.51, 192.168.4.52, 192.168.4.53, 192.168.4.54   #设置被监控的数据库

</monitor>

<host default>

        monitor_user              monitor   #监控数据库的mysql用户

        monitor_password    123456

</host>

debug 0  #启动服务不显示启动信息(1显示)

(4)修改公共配置文件 

vim /etc/mysql-mmm/mmm_common.conf  #修改之后发送给其它服务器

active_master_role      writer

<host default>

        cluster_interface          eth0

        pid_path                       /var/run/mmm_agentd.pid

        bin_path                       /usr/lib/mysql-mmm/

 replication_user          ser51  

             #设置主从同步的用户,要和主数据库给本机授权的用户一致,

             #可在/var/lib/mysql/master.info 中查看

      replication_password    123456

      agent_user                agent      #mmm_agent控制用户

      agent_password      123456

</host>

<host master51>  #设置第一个主服务器

        ip                  192.168.4.51 #主服务器IP

        mode           master

        peer             master52 #指定另一台主服务器

</host>

<host master52>   #设置第二个主服务器

        ip                  192.168.4.52

        mode           master

        peer             master51

</host>

<host slave53>

        ip                   192.168.4.53

        mode            slave

</host>

<host slave54>  

        ip                   192.168.4.54

        mode            slave

</host>

<role writer>      #设置写服务器工作模式

        hosts            master51,  master52 #写的主服务器

        ips                192.168.4.100              #设置VIP地址

        mode           exclusive                       #独占模式,只允许51/52一个使用

</role>

 <role reader>

        hosts            slave53,  slave54

        ips                192.168.4.101, 192.168.4.102    #reader-vip

        mode           balanced   #均衡模式

</role>

(5)根据配置文件设置,在数据节点主机添加对应的授权用户

管理节点监控数据库用户授权

mysql> grant replication client on *.* to monitor@'%' identified by "123456";

数据库节点控制数据库用户授权

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

2.4 安装依赖关系

所有服务器上安装:

书写一个脚本:

vim install.sh

#!/bin/bash

yum -y install perl-*

rpm -q gcc gcc-c++

if [ $? -ne 0 ];then

yum -y install gcc gcc-c++

fi

tar -xf Algorithm-Diff-1.1902.tar.gz

cd Algorithm-Diff-1.1902

perl  Makefile.PL

make

make install

cd ..

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

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

cd Proc-Daemon-0.03

perl Makefile.PL

make

make install

cd ..

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

2.5启动服务

(1)启动数据节点主机mmm_agentd服务

[root@ser51 ~]# /etc/init.d/mysql-mmm-agent start (stop,status)

[root@ser55 ~]# netstat -anptu |grep 9989

(2)启动管理节点主机mmm_monitor服务

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

[root@ser55 ~]# netstat -anptu |grep 9988

(3)在管理节点主机上,查看监控信息

[root@ser55 ~]# 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()?)

  master51(192.168.4.51) master/AWAITING_RECOVERY. Roles

  master52(192.168.4.52) master/AWAITING_RECOVERY. Roles

  slave53(192.168.4.54) slave/AWAITING_RECOVERY. Roles

  slave54(192.168.4.53) slave/AWAITING_RECOVERY. Roles

[root@ser55 ~]# mmm_control set_online master51(agent配置文件里设置的名称;set_offine:不在线状态)

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

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

  master51(192.168.4.51) master/ONLINE. Roles: writer(192.168.4.100)

  master52(192.168.4.52) master/ONLINE. Roles:

  slave53(192.168.4.54) slave/ONLINE. Roles: reader(192.168.4.102)

  slave54(192.168.4.53) slave/ONLINE. Roles: reader(192.168.4.101)

此时ping 192.168.4.100/101/102 都可以ping通(保证该网段这几个ip没有被占用)

(4)数据节点主机查看 VIP 地址?

ip  addr  show   |  grep  192.168.4.

2.6 测试

mysql> grant all on *.* to  用户名@'%' identified by "123456";  #授权客户端连接数据库用户

mysql  -h292.168.4.100  -u用户名  -p123456

无论关掉master51的还是master52的数据库服务,此时VIP会被其中一个占用,用户连接同样的VIP一样能够连接数据库,且在数据库进行操作后,挂掉主的数据库服务器重启启用后,数据会自动同步。此时VIP不会被抢占。

停掉agent服务,当其中一个主数据库停掉,监控不能够自动切换VIP。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对亿速云的支持。