资讯专栏INFORMATION COLUMN

mysql双主加keepalived

IT那活儿 / 542人阅读
mysql双主加keepalived

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!





配置半同步


一、192.168.56.11:

install plugin rpl_semi_sync_master SONAME semisync_master.so;

上:加载半同步的插件。

install plugin rpl_semi_sync_slave SONAME semisync_slave.so;

上:因为我们要做双主,所以要将主从角色的插件都加载。

注意:一定要先加载插件,如果先添加参数是会报错的。

vi /etc/my.cnf

log_bin

#上:开启binlog用于数据同步。

server_id=1001

#上:主从必须配置不一样的server_id。配置一样的话同步机制会启动失败。

rpl_semi_sync_master_enabled=1

#上:开启半同步机制,角色为主。

rpl_semi_sync_master_timeout=1000

#上:主角色的等待从返回ack的超时时间,超过这个时间就会退化成异步复制。

rpl_semi_sync_slave_enabled=1

#上:开启半同步机制,角色为从,因为我们要配置双主所以这两种角色的控制要都打开。

master_info_repository=TABLE;

#将master_info信息记录到表上。

relay_log_info_repository=TABLE;

#将relay_log_info信息记录到表上。

gtid_mode=ON

#开启gtid。

enforce_gtid_consistency=ON


#开启严格模式,不允许执行可能导致数据不一致的sql语句。比如create table as select。

(以上:添加如上配置到my.cnf文件当中)

systemctl restart mysqld

重启Mysql让这些配置生效。

show variables like %rpl%;

上:可以看到主从角色的半同步控制都已经激活。

select * from mysql.plugin;

上:可以看到两个角色的半同步插件都已经加载。

create user sync@% identified by sync;
grant replication slave on *.* to sync@%;

上:创建同步账号。

二、192.168.56.12:

12的配置步骤完全重复11的。

server_id=1002

注:唯一不一样的地方就是这个server_id。剩下的都是按照11的配置再来一次。



启动双主


一、192.168.56.11:

CHANGE MASTER TO
MASTER_HOST=192.168.56.12,
MASTER_USER=sync,
MASTER_PASSWORD=sync,
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

start slave;
show slave statusG

二、192.168.56.12:

CHANGE MASTER TO
MASTER_HOST=192.168.56.11,
MASTER_USER=sync,
MASTER_PASSWORD=sync,
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

start slave;
show slave statusG

三、192.168.56.11,192.168.56.12:

show status like %rpl%;


注:查看Rpl_semi_sync_master_clients的值是不是1,Rpl_semi_sync_master_status和Rpl_semi_sync_slave_status的值是不是都为ON,如果不是就说明有问题。



安装keepalived


192.168.56.11以及192.168.56.12:

yum -y install  e2fsprogs-devel keyutils-libs-devel libsepol-devel libselinux-devel krb5-devel zlib-devel
openssl-devel popt-devel

上:安装依赖包。

tar zxvf keepalived-2.1.5.tar.gz

cd keepalived-2.1.5/

./configure --prefix=/usr/local/keepalived

make

make install

上:编译安装。

cd /software/keepalived-2.1.5/keepalived/etc/init.d/


cp keepalived /etc/init.d/

上:方便启动keepalived服务。

cd /etc/keepalived/


vi keepalived.conf

上:编辑keepalived的配置文件。

vi /etc/keepalived/bin/mysql_check.sh
chmod 755 /etc/keepalived/bin/mysql_check.sh

上:添加监控mysql是否存活的脚本。

systemctl start k

eepalived

上:因为VIP要绑定192.168.56.11所以先启动11。

VIP为192.168.56.13



配置文件


一、192.168.56.11的keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id KeepAlive_MySQL
}
vrrp_script check_run {
   script "/etc/keepalived/bin/mysql_check.sh"
   interval 30
}

vrrp_sync_group VG1 {
group {
    VI_1
 }
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    mcast_src_ip 192.168.56.11
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt
    authentication 
{
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    check_run
    }

    virtual_ipaddress {
        192.168.56.13
    }
}

二、192.168.56.12的keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id KeepAlive_MySQL
}
vrrp_script check_run {
   script "/etc/keepalived/bin/mysql_check.sh"
   interval 30
}

vrrp_sync_group VG1 {
group {
    VI_1
 }
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    mcast_src_ip 192.168.56.12 ---本机IP地址
    virtual_router_id 51
    priority 90
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    check_run
    }

#视情况自行添加以下检测脚本

# notify_master "/home/sh/master.sh"
# notify_backup "/home/sh/backup.sh
# notify_stop "/home/sh/stop.sh

    virtual_ipaddress {
        192.168.56.13
    }

}

三、192.168.56.11以及192.168.56.12的mysql_check.sh

#!/bin/bash
. /root/.bash_profile
count=1
while true
do
mysql -uroot -p"xxxxx" -e "show status;">/dev/null 2>&1
i=$?
ps aux | grep mysqld | grep -v grep >/dev/null 2>&1
j=$?
if [ $i = 0 ]&&[ $j = 0 ]
then
exit 0
else
 if [ $i = 1 ]&&[ $j = 0 ]
 then
 exit 0
 else
   if [ $count -gt 5 ]
   then
         break
   fi
 let count++
 continue
 fi
fi
done
/etc/init.d/keepalived stop




本文作者:许智发

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129631.html

相关文章

  • MySQL高可用方案测试

    MySQL高可用方案测试 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...

    IT那活儿 评论0 收藏2496
  • MySQL集群搭建(6)-双主+keepalived高可用

    摘要:双主是一个比较简单的高可用架构,适用于中小集群,今天就说说怎么用做的高可用。缺点也比较明显,就是增加从节点的情况下,从节点不会主动切换同步对象,而且脚本需要自己实现,有一定风险。 双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...

    CarlBenjamin 评论0 收藏0
  • MySQL集群搭建(6)-双主+keepalived高可用

    摘要:双主是一个比较简单的高可用架构,适用于中小集群,今天就说说怎么用做的高可用。缺点也比较明显,就是增加从节点的情况下,从节点不会主动切换同步对象,而且脚本需要自己实现,有一定风险。 双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...

    lily_wang 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<