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数据库,保证系统的高可用。

拓扑环境

OS:centos6.5 x86_64

Mysql 版本:mysql 5.5.38

Keepalived: keepalived-1.2.20

Mysql-vip:192.168.12.1

Mysql-master1:192.168.12.128

Mysql-master2:192.168.12.129

一、配置两台 mysql 主主同步

MySQL 高可用性keepalived+mysql双主 虚拟 存储 就是 加载 写入 动态 根据 timeout firewall 防火墙 服务器 mysql主机 负载均衡 硬件配置 远程登录 SQL数据库 MySQL数据库 关闭防火墙 服务器配置 虚拟服务器 服务器教程  第1张

该过程的第一部分就是 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 中有关复制的配置如下:

log-bin = mysql-bin

binlog_format = mixed

server-id = 1

relay-log = relay-bin

relay-log-index = slave-relay-bin.index

auto-increment-increment = 2

auto-increment-offset = 1

重启 mysqld 服务

#service mysqld restart

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

log-bin = mysql-bin

binlog_format = mixed

server-id = 2

relay-log = relay-bin

relay-log-index = slave-relay-bin.index

auto-increment-increment = 2

auto-increment-offset = 2

重启 mysqld 服务

#service mysqld restart

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

mysql 中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:

auto_increment_offset 和 auto_increment_increment。

auto-increment-increment 表示自增长字段每次递增的量,其默认值是 1。它的值应设为整个

结构中服务器的总数,本案例用到两台服务器,所以值设为 2。

auto-increment-offset 是用来设定数据库中自动增长的起点(即初始值),因为这两能服务器都

设定了一次自动增长值 2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步

时出现主键冲突,

注:可以在 my.cnf 文件中添加“binlog_do_db=数据库名”配置项(可以添加多个)来指定

要同步的数据库

2、将 master1 设为 master2 的主服务器

在 master1 主机上创建授权账户,允许在 master2(192.168.1.102)主机上连接

查看 master1 的当前 binlog 状态信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgyggy.html