当前位置:   article > 正文

mysql双主之keepalived_keepalived mysql

keepalived mysql

生产环境中一台mysql主机存在单点故障,所以我们要确保mysql的高可用性,即两台MySQL服务器如果其中有 一台MySQL服务器挂掉后,另外一台能立马接替其进行工作。 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,PXC,MMM,Heartbeat+DRBD等,比较常用的是keepalived+双主,MHA和PXC。 本节主要介绍了利用 keepalived 实现 MySQL 数据库的高可用。 Keepalived+mysql双主来实现MySQL-HA,我 们必须保证两台MySQL数据库的数据完全一样,基本思路是两台MySQL互为主从关系,通过Keepalived配置虚 拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台MySQL数据库,保证系统的高可 用。

一、配置两台MySQL主主同步

该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改 变。MySQL将事务写入二进制日志。在事件写入二进制日志完成后,master通知存储引擎提交事务。 下一步就 是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程 在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日 志中读取事件,如果已经同步了master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日 志。 SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事 件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS 的缓存中,所以中继日志的开销很小。 主主同步就是两台机器互为主的关系,在任何一台机器上写入都会同 步。 若mysql主机开启了防火墙,需要关闭防火墙或创建规则。 1、修改MySQL配置文件 两台MySQL均要开启 binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项,两台MySQL的 server-ID不能一样,默认情况下两台MySQL的serverID都是1,需将其中一台修改为2即可。 master1中有关复 制的配置如下:

  1. log-bin = mysql-bin
  2. binlog_format = mixed
  3. server-id = 1
  4. relay-log = relay-bin
  5. relay-log-index = slave-relay-bin.index
  6. auto-increment-increment = 2
  7. auto-increment-offset = 1

 master2中有关复制的配置如下:

  1. log-bin = mysql-bin
  2. binlog_format = mixed
  3. server-id = 2
  4. relay-log = relay-bin
  5. relay-log-index = slave-relay-bin.index
  6. auto-increment-increment = 2
  7. auto-increment-offset = 2

注:master1和master2只有server-id不同和 auto-increment-offset不同。

mysql中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offset和 auto_increment_increment。 auto-increment-increment表示自增长字段每次递增的量,其默认值是1。它的值 应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2。 auto-increment-offset是用来设定数 据库中自动增长的起点(即初始值),因为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不 同,这样才能避免两台服务器数据同步时出现主键冲突,

将master1设为master2的主服务器 在master1主机上创建授权账户,允许master2(192.168.1.102)主机上 连接

  1. mysql> grant replication slave on *.* to rep@'192.168.56.%' identified by '123';
  2. Query OK, 0 rows affected, 1 warning (0.00 sec)
  3. mysql> flush privileges;
  4. Query OK, 0 rows affected (0.00 sec)

查看master1的当前binlog状态信息 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/675532
推荐阅读
相关标签
  

闽ICP备14008679号