ITPub博客

首页 > 数据库 > 数据库开发技术 > MySQL 双活

MySQL 双活

原创 数据库开发技术 作者:mcxiaoracle 时间:2021-09-08 06:29:10 0 删除 编辑
  1. 需求概述

  2.  技术方案

    2.1  双活同步条件

     2.1.1 自增主键

     2.1.2 同步用户

     2.1.3 启用BinLog

  3.  配置的赋值任务

  4. 单向复制

  5. 反向复制

  6. 启动复制任务

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



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

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


2.1 双活同步条件

2.1.1 自增主键

由于中心及备份数据库都会产生业务数据,导致中心或备份库产生的自增主键在跨库复制时会与目标库已有数据产生冲突,针对自增主键冲突问题有以下两种处理方式:

一、直接复制
调整数据库配置文件my.ini中的参数auto_increment_offset 和auto_increment_increment ,使得不同数据库产生的自增值不同,包含自增值的业务数据直接复制到目标库。

二、目标库计算

自增值在复制时由目标库重新计算产生,相关外键表数据在复制时自动调整外键值,以保持与主表数据的主外键依赖关系。

由于自增值在复制前后会发生变化,需要在每张包含自增列的表中额外增加列origin_id bigint null,该列由Beedup自动创建并对应用系统透明,仅在数据同步到目标端时记录原来的自增值。


2.1.2 同步用户

对于主从库双向同步,需要在主从库单独建立同步用户,该用户仅用于 Beedup 连接数据库,不可用于其它场景。

以同步用户sync为例,创建用户及权限分配语句如下:


2.1.3 启用BinLog

开启主从数据库二进制日志并设置日志格式为row。

编辑my.ini文件

log-bin=''XXXXXXXXXX"

binlog_format="ROW"


2.2 配置任务

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



2.2.1 单向复制任务

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

2.2.3 反向复制任务

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

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

2.3 启动复制任务

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







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69949806/viewspace-2790922/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 什么是双活
请登录后发表评论 登录
全部评论

注册时间:2019-09-30

  • 博文量
    77
  • 访问量
    38901