mysql怎么实现高可用 consul mysql高可用( 四 )


(2) 不支持create table … select 语句复制(主库直接报错) 。
(3) 不允许一个sql同时更新一个事务引擎表和非事务引擎表 。
(4) 在一个复制组中,必须要求统一开启GTID或者是统一关闭GTID 。
(5) 开启GTID需要重启(5.7版本除外) 。
(6) 开启GTID后 , 就不再使用原理的传统复制方式 。
(7) 不支持create temporary table 和 drop temporary table语句 。
(8) 不支持sql_slave_skip_counter 。
前置条件:
主备两个节点使用行内统一的安装部署脚本安装mysql5.7.21介质(略)
Master1端创建应用的数据库(略)
1、 修改MySQL配置文件
参考相关配置规范,分别设置master1、master2的my.cnf文件,
其中server-id参数设置为不同值;
由于后续keepalived会挂起VIP,应用通过VIP连接数据库 , 为了避免应用程序无法通过VIP访问,需将两个节点的bind-address参数注释掉;
2、 设置master1端自动半同步模式
Mysql的同步模式主要有如下3种:
a. 主从同步复制:数据完整性好,但是性能消耗略高;
b. 主从异步复制:性能消耗低,但容易出现不一致;
c. 主从半自动复制:介于上述两种之间,既保持了数据的完整性 , 又提高了性能;
基于上述特性 , 建议采用半自动同步模式,由于后续要配置为双主模式,因此任一节点其角色既为master又为slave,因此相关的master/slave插件要同时配置,过程如下 。
(1) 首先查看库是否支持动态加载(默认都支持)
(2) 主从库上分别安装插件
作为主库,安装插件semisync_master.so
作为从库,安装插件semisync_slave.so
(3) 安装完成后 , 从plugin表中能够看到刚刚安装的插件
(4) 分别打开主从库半同步复制
同时添加到各自的my.cnf中,在后续数据库实例重启时自动加载该配置 。
此时查看状态还没有启动
(5) 两个节点分别启动IO进程
(6) 查看半同步状态
3、 将master1设为master2的主服务器
(1)在master1主机上创建授权账户,允许在master2主机上连接
(2)将主库master1数据导出
(3)将master.sql传输到master2上并导入
(4)在master2端将master1设置为自己的主库,并开启slave功能
在master2上查看slave状态
至此master1到master2的主从复制关系已经建立完成 。
4、 将master2设为master1的主服务器
在master1上执行
在master1上查看slave状态
1、keepalived相关概念说明:
keepalived是集群管理中保证集群高可用的一个软件解决方案,其功能类似于heartbeat,用来防止单点故障
keepalived是以VRRP协议为实现基础的,VRRP全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议 。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master会发组播(组播地址为224.0.0.18),当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,这样的话就可以保证路由器的高可用了 。
keepalived主要有三个模块,分别是core 、check和vrrp 。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析 。check负责 健康 检查,包括常见的各种检查方式 。vrrp模块是来实现VRRP协议的 。同时为了避免出现脑裂 , 应关闭防火墙或者开启防火墙但允许接收VRRP协议 。
2、keepalived的安装配置

推荐阅读