MySQL 高可用性keepalived+mysql

生产环境中一台mysql 主机存在单点故障,因此咱们要确保 mysql 的高可用性,即两台 MySQLhtml

服务器若是其中有一台 MySQL 服务器挂掉后,另一台能立马接替其进行工做。mysql

MySQL 的高可用方案通常有以下几种:linux

keepalived+双主,MHAPXCMMMHeartbeat+DRBD 等,比较经常使用的是 keepalived+双主, MHA PXCgit

本节主要介绍了利用 keepalived 实现 MySQL 数据库的高可用。github

Keepalived+mysql 双主来实现MySQL-HA,咱们必须保证两台MySQL 数据库的数据彻底同样,基本思路是两台 MySQL 互为主从关系,经过 Keepalived 配置虚拟 IP,实现当其中的一台MySQL 数据库宕机后,应用可以自动切换到另一台 MySQL 数据库,保证系统的高可用。拓扑环境sql

OScentos6.5 x86_64数据库

Mysql 版本:mysql 5.5.38centos

Keepalived: keepalived-1.2.20 Mysql-vip:192.168.1.100 Mysql-master1:192.168.1.101 Mysql-master2:192.168.1.102缓存

1、配置两台 mysql 主主同步服务器

 blob.png

 

该过程的第一部分就是 master 记录二进制日志。在每一个事务更新数据完成以前,master 二日志记录这些改变。MySQL 将事务写入二进制日志。在事件写入二进制日志完成后,master通知存储引擎提交事务。

下一步就是slave master binary log 拷贝到它本身的中继日志。首先,slave 开始一个工做线程——I/O 线程I/O 线程在master 上打开一个普通的链接,而后开始 binlog dump processBinlog  dump  process master 的二进制日志中读取事件,若是已经同步了 master,它会睡眠并等待 master 产生新的事件。I/O 线程将这些事件写入中继日志。

SQL slave threadSQL 从线程)处理该过程的最后一步。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)主机上链接

blob.png

查看 master1 的当前 binlog 状态信息

 blob.png


master2 上将 master1 设为自已的主服务器并开启 slave 功能。


设置防火墙:

blob.png

设置防火墙:

#iptables I INPUT –p tcp –dport 3306 –j ACCEPT #service iptables save

查看从的状态,mysql>show slave status\G;如下两个值必须为 yes,表明从服务器能正常链接主服务器

能正常链接主服务器

Slave_IO_Running:Yes 

Slave_SQL_Running:Yes


blob.png

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


master2 主机上建立受权帐户,容许在 master1(192.168.1.101)主机上链接


blob.png


查看 master2 的当前 binlog 状态信息

blob.png

master1 上将 master2 设为自已的主服务器并开启 slave 功能。

blob.png

设置防火墙:

#iptables I INPUT –p tcp –dport 3306 –j ACCEPT #service iptables save

查看从的状态,如下两个值必须为 yes,表明从服务器能正常链接主服务器Slave_IO_Running:Yes

Slave_SQL_Running:Yes

blob.png





4、测试主主同步

master1 上建立要同步的数据库如 test_db,并在 test_db 中建立一张测试表如 tab1

blob.png

查看 master2 主机是否同步了 master1 上的数据变化

blob.png

从上图能够看出master2 同步了 master 的数据变化

master2 主机上向 tab1 表中插入数据

blob.png

查看 master1 主机是否同步了 master2 上的数据变化

blob.png


如今任何一台MySQL 上更新数据都会同步到另外一台MySQLMySQL 同步完成。

注:若主 MYSQL 服务器已经存在,只是后期才搭建从 MYSQL 服务器,在置配数据同步前应先将主 MYSQL 服务器的要同步的数据库拷贝到从 MYSQL 服务器上如先在主 MYSQL 上备份数据库,再用备份在从MYSQL 服务器上恢复

下面咱们就完成keepalived 的高可用性。

keepalived 是集群管理中保证集群高可用的一个软件解决方案,其功能相似于 heartbeat,用来防止单点故障

keepalived 是以 VRRP 协议为实现基础的VRRP 全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议

虚拟路由冗余协议,能够认为是实现路由器高可用的协议,即将 N 台提供相同功能的路由器组成一个路由器组,这个组里面有一个 master 和多个 backupmaster 上面有一个对外提供服务的 vipmaster 会发组播组播地址为 224.0.0.18,当 backup 收不到 vrrp 包时就认 master 宕掉了,这时就须要根据 VRRP 的优先级选举一个 backup  master。这样的话就能够保证路由器的高可用了。

keepalived 主要有三个模块,分别是 core check vrrpcore 模块为 keepalived 的核心, 负责主进程的启动、维护以及全局配置文件的加载和解析。check 负责健康检查,包括常见的各类检查方式。vrrp 模块是来实现 VRRP 协议的。

2、keepalived 的安装配置

1、在 master1 master2 上安装软件包 keepalived

安装 keepalived 软件包与服务控制


在编译安装 Keepalived 以前,必须先安装内核开发包 kernel-devel 以及 openssl-develpopt-devel 等支持库。


若没有安装则经过rpm yum 工具进行安装编译安装 Keepalived

blob.png

相关文章
相关标签/搜索