实现基于keepalived双主复制的mysql高可用

一、搭建两台虚拟机

master 1 :192.168.23.129,

master 2 :192.168.23.130,

分别安装好Mysql
具体请看前两篇文章。
centos 7mysql安装
centos 7配置keepalived

二、安装keepalived

三、配置主主复制

主主复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更。聪明的你也许已经想到该怎么实现了。对,就是将两个主从复制有机合并起来就好了。只不过在配置的时候我们需要注意一些问题,例如,主键重复,server-id不能重复等等。

1、配置文件

​ --192.168.95.129
vim /etc/my.cnf

server-id=1  #任意自然数n,只要保证两台MySQL主机不重复就可以了。

log-bin=mysql-bin  #开启二进制日志
relay-log=slave-relay-bin
auto_increment_increment=2  #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1  #起始值。一般填第n台主MySQL。此时为第一台主MySQL

​ --192.168.23.130
vim /etc/my.cnf

server-id=2

log-bin=mysql-bin
relay-log=slave-relay-bin
auto_increment_increment=2
auto_increment_offet=2

​ 配置好后重启MySQL

2、开始构建主主复制

​ 因为主主复制是两个主从复制组合一起,所以就从主从复制接着配置。

​ 第一步:

​ 在192.168.23.129中创建一个192.168.23.130主机中可以登录的MySQL用户

​ 用户:root

​ 密码:root

注意,密码默认不允许这么简单,需要手动进行修改

# 修改密码安全策略为低
set global validate_password_policy=LOW;

#修改密码长度为4
set global validate_password_length=4;

在安装mysql环境时,已经将root设为允许所有外来访问,因为这一步可以省略

# 给root赋权,允许远程登录
grant replication slave on *.* to ‘root’@’192.168.23.129’ identified by ‘root’;
# 刷新权限
flush privileges;

​ 第二步:

​ 在192.168.95.12查看二进制日志名和位置

show master status;

img

​ 第三步:

​ 告知二进制文件名与位置

​ 在192.168.95.11中执行:

change master TO

master_HOST=’192.168.95.12’,
master_user=’mysql11’,
master_password=’mysql11’,
master_log_file=’mysql-bin.000084’,
master_log_pos=107;

img

​ 完成主主复制配置

3、测试主主复制
#两个主机分别开启
start slave;

show slave status\G  #查看主从复制是否配置成功
问题解决
  • 当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。

    • 如果是Slave_SQL_Running:no:

      stop slave;                                                      
      SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;            
      start slave;                                                      
      show slave status\G 
      
    • 如果是slave_io_running:no

      # Master_Log_File没有对应,记录下该命令下的两个值
      show master status\G     
      slave stop;        
      # 进行修改
      CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0;  
      slave start;                               
      show slave status\G      
      
  • 复制虚拟机导致的UUID问题

    # 首先要查找到mysql的安装地址
    show variables like 'datadir';
    
    # 然后通过mysql生成一个uuid进行记录等会用于修改
    select uuid()
    
    # 然后进入datadir目录
    cd /var/lib/mysql/
    
    # 修改server-uuid
    vim auto.cnf
    
    #重启mysql
    service restart mysqld
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值