Mysql集群-MHA

拓谱图

规划与要求

主机名称 操作系统 开启的模式 IP地址
Master-51 Centos7.2 开半同步复制 192.168.4.51
slave-52 Centos7.2 开半同步复制 192.168.4.52
slave-53 Centos7.2 开半同步复制 192.168.4.53
slave-54 Centos7.2 没有需求 192.168.4.54
slave-55 Centos7.2 没有需求 192.168.4.55
slave-56-Manager Centos7.2 管理主机 192.168.4.56

要求:

  • 一、配置所有数据节点主机之间可以互相以ssh密钥对方式认证登陆
  • 二、配置manager56主机 无密码ssh登录 所有数据节点主机
  • 三、配置主从同步

实施与部署环境

  • 1.所有环境配置主机名和IP
  • 2.所有机器实现无密码登入
  • 3.所有机器安装perl包
  • 4.slave-56安装机器的管理包

master51配置

1.修改51的配置文件

vim  /etc/my.cnf
        [mysqld]
        plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
        rpl-semi-sync-master-enabled = 1
        rpl-semi-sync-slave-enabled = 1
        server_id=51
        log-bin=master51
        binlog-format="mixed"

2.重起查看日志文件是否开启

[root@Master-51 ~]# systemctl  restart mysqld
[root@Master-51 ~]# ls /var/lib/mysql/master51.*

3.清理日志

mysql> set global relay_log_purge=off;
show master status;

4.授权slave用户访问

5..查看master状态

mysql> show master status;

备用master52/53的配置

1.修改配置文件

vim /etc/my.cnf
        [mysqld]
        plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
        rpl-semi-sync-master-enabled = 1
        rpl-semi-sync-slave-enabled = 1
        server_id=52/53
        log-bin=master52/53
        binlog-format="mixed"

2.重起并且查看日志是否生成

[root@slave-52 ~]# systemctl restart mysqld
[root@slave-52 ~]# ls /var/lib/mysql/master52.*

3.开启主从同步

mysql> set global relay_log_purge=off;  
mysql> change master to 
        -> master_host="master的IP",
        -> master_user="授权的用户",
        -> master_password="授权的密码",
        -> master_log_file="主的日志名称",
        -> master_log_pos=偏移量;

4.开启slave

start slave;

5.查看是否主从同步成功

mysql -uroot -p123456 -e "show slave status\G"  | grep -i YES

备用master54/55的配置

1.修改配置文件

vim /ect/my.cnf
        server_id=54/55

2.开启主从同步

mysql> set global relay_log_purge=off; 
mysql> change master to 
        -> master_host="master的IP",
        -> master_user="授权的用户",
        -> master_password="授权的密码",
        -> master_log_file="主的日志名称",
        -> master_log_pos=偏移量;
mysql> start slave;
mysql> show slave\G;

统一安装以下的包slave-51~55

yum -y install perl-* perl-DBD-mysql perl-DBI mha4mysql-node-0.56-0.el6.noarch.rpm

grant all  on *.* to 'root'@'%' identified  by '123456';        #slave--51上授权

manage-56配置

yum -y  install perl-DBD-mysql   perl-DBI mha4mysql-node-0.56-0.el6.noarch.rpm
yum -y  install perl-ExtUtils-*   perl-CPAN-*
tar -zxf mha4mysql-manager-0.56.tar.gz 
cd mha4mysql-manager-0.56
make && make install
新的命令 作用
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测MHA运行状态
masterha_master_monitor 检测master是否宕机

管理节点的配置

cp  mha4mysql-manager-0.56/bin/* /usr/local/bin/    
mkdir /etc/mha_manager/
cp samples/conf/app1.cnf  /etc/mha_manager/     #配置文件
cp mha4mysql-manager-0.56/samples/scripts/master_ip_failover /usr/local/bin/        #配置VIP的脚本

编辑配置文件

    [root@mysql-master]# vim /etc/mha_manager/app1.cnf
        manager_workdir=/etc/mha_manager        #工作的目录
        manager_log=/etc/mha_manager/manager.log        #日志文件的存放位置
        master_ip_failover_script=/usr/local/bin/master_ip_failover     #自动failover时候的切换脚本
        ssh_user=root
        ssh_port=22
        repl_user=repluser      #主从同步用户名
        repl_password=123456        #主从同步密码
        user=root       #连接数据库服务器用户名
        password=123456     #密码

        [server1]
        hostname=192.168.4.51
        port=3306       #端口写可不写,默认监控3306

        [server2]
        hostname=192.168.4.52
        candidate_master=1      #设置为候选的master

        [server3]
        hostname=192.168.4.53
        candidate_master=1

        [server4]
        hostname=192.168.4.54
        no_master=1     #不竞选master

        [server5]
        hostname=192.168.4.55
        no_master=1

测试MHA的连通性

    [root@mysql-master]# masterha_check_ssh --conf=/etc/mha_manager/app1.cnf        测试集群的连通
        [info] Reading server configuration from /etc/mha_manager/app1.cnf..
        [info] Starting SSH connection tests..
        [info] All SSH connection tests passed successfully.        #所有的都成功

配置集群的高可用

1.主库上手动部署VIP地址 192.168.4.100

[root@mysql-master]# ifconfig eth0:1 192.168.4.100/24       #在eth0上绑定地址
[root@mysql-master]# ifconfig eth0:1
        eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
        ether 52:54:00:43:7c:39  txqueuelen 1000  (Ethernet)

2.修改perl的脚本文件

vim /usr/local/bin/master_ip_failover 
        my vip = '192.168.4.100/24';  # 虚拟的IP地址         my key = "1";
        my ssh_start_vip = "/sbin/ifconfig eth0:key vip";         my ssh_stop_vip = "/sbin/ifconfig eth0:$key down";

3.启动服务测试

masterha_manager --conf=/etc/mha_manager/app1.cnf --remove_dead_master_conf --ingnore_last_failover

发表评论