MySQL高可用双活方案

1 需求概述
2 技术方案
    2.1 双活同步条件
        2.1.1 自增主键
        2.1.2 同步用户
        2.1.3 启用BinLog
    2.2 配置复制任务
        2.2.1 单向复制任务
        2.2.2 反向复制任务
    2.3 启动复制任务

1 需求概述

多地业务系统直接读写某地A的MySQL中心数据库数据,中心数据库数据实时同步到异地B的备份中心。当某地业务系统访问A地中心数据库失败时,则切换到B地备份数据库读写数据。对于B地备份中心产生的业务数据,需要实时回传至A地中心数据库库,确保A地业务中心与B地备份中心数据一致。

目前业务中心数据库采用MySQL 5.6,系统已运行多年,表主键基本采用自增列,表之间存在主外键依赖关系。

 2 技术方案

在异地备份中心部署北京灵蜂Beedup数据库复制软件,软件采用日志解析方式捕获数据库变化数据,并将变化数据同步到目标库,实时保持数据库数据一致。

2.1 双活同步条件

2.1.1 自增主键

由于中心及备份数据库都会产生业务数据,导致中心或备份库产生的自增主键在跨库复制时会与目标库已有数据产生冲突,针对自增主键冲突问题有以下两种处理方式:
一、直接复制
调整数据库配置文件my.ini中的参数auto_increment_offset 和auto_increment_increment ,使得不同数据库产生的自增值不同,包含自增值的业务数据直接复制到目标库。
二、目标库计算
自增值在复制时由目标库重新计算产生,相关外键表数据在复制时自动调整外键值,以保持与主表数据的主外键依赖关系。
由于自增值在复制前后会发生变化,需要在每张包含自增列的表中额外增加列origin_id bigint null,该列由Beedup自动创建并对应用系统透明,仅在数据同步到目标端时记录原来的自增值。

2.1.2 同步用户

对于主从库双向同步,需要在主从库单独建立同步用户,该用户仅用于Beedup连接数据库,不可用于其它场景。
以同步用户sync为例,创建用户及权限分配语句如下:
CREATE USER 'sync'@'%' IDENTIFIED BY 'xxxxx';
GRANT SELECT,PROCESS,SUPER, REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'sync'@'%';

2.1.3 启用BinLog

开启主从数据库二进制日志并设置日志格式为row。
编辑my.ini文件
log-bin="xxxxxx"
binlog_format="ROW"

2.2 配置复制任务

Beedup复制任务用于将主库数据变化实时复制到从库。对于数据库双向复制,需要配置2个复制方向相反的任务,第一个任务用于复制业务中心变化到备份中心,第二个任务用于从备份中心复制变化到业务中心。

2.2.1 单向复制任务

配置业务中心到备份中心复制任务,操作如下。
选择工具栏[新建]按钮,在任务属性对话框中依次设置主库及从库连接参数。

 

对于业务中心到备份中心复制,勾选[全量复制]。

 

选择[过滤]按钮,在[过滤选项]对话框设置忽略用户sync。

 

如果自增值在复制时由目标库重新计算产生,则选择[集成]按钮,在[集成选项]对话框设置辅助列。 

注意:如果自增值可以直接复制,则无需设置集成选项。

选择[确定]按钮关闭[任务属性]对话框,完成业务中心到备份中心的复制任务配置。

2.2.2 反向复制任务

配置备份中心到业务中心复制任务,操作如下。
选择工具栏[新建]按钮,弹出任务属性对话框,依次设置主库及从库连接参数。

 

对于备份中心到业务中心复制,取消 [全量复制] 勾选。 

选择[过滤]按钮,在[过滤选项]对话框设置忽略用户sync。

 

 如果自增值在复制时由目标库计算产生,则选择[集成]按钮,在[集成选项]对话框设置辅助列。

 注意:如果自增值可以直接复制,则无需设置集成选项。
选择[确定]按钮关闭[任务属性]对话框,完成备份中心到业务中心的复制任务配置。

2.3 启动复制任务

依次选中任务sync和sync_inverse,然后选择工具栏[启动]按钮。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MySQL中实现双活(双主)高可用性,可以结合使用MySQL的复制功能和Keepalived软件。下面是一些基本的步骤: 1. 配置MySQL复制:在两个MySQL服务器上分别启用二进制日志(binlog),并确保它们能够相互复制。详细的MySQL复制配置步骤请参考MySQL官方文档。 2. 安装Keepalived:使用适合您的操作系统的包管理工具(如apt、yum等)安装Keepalived软件。 3. 配置Keepalived:在两台服务器上创建Keepalived配置文件(通常位于/etc/keepalived/目录下),并确保它们具有相同的配置。 - 配置虚拟IP:在配置文件中指定一个虚拟IP地址,该地址将用于将客户端请求转发到当前处于活跃状态的MySQL服务器。 - 配置健康检查:指定Keepalived应如何检查MySQL服务器的健康状态,例如检查TCP端口、进程等。 - 配置故障转移:指定当主服务器出现故障时,Keepalived应如何切换到备用服务器。 4. 启动Keepalived:在两台服务器上启动Keepalived服务,并确保它们正常运行。 5. 测试双活功能:使用配置的虚拟IP地址连接到MySQL服务器,并确保在主服务器发生故障时,Keepalived能够自动将连接切换到备用服务器。 请注意,以上只是一个基本的指南,具体的配置和步骤可能会根据您的环境和需求而有所不同。在实施高可用性解决方案之前,请确保您已经充分了解MySQL复制和Keepalived的工作原理,并遵循安全最佳实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值