MySQL高可用双活方案
思韵闪耀
2020-11-10
0

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,然后选择工具栏[启动]按钮。

【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

SqlServer 数据库...
--查看数据库大小SELECT DB_NAME(database_...
2024-09-03
docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26
Mysqldump 时出现...
Mysqldump 时出现错误及解决方案:mysqldump: C...
2024-01-16
MySQL数据库”mysq...
MySQL数据库”mysql SQL Error:1146,SQL...
2023-12-02
mysql关闭binlog...
linux编辑my.cnf,windows编辑my.ini在[my...
2023-12-02
20道Mysql面试题
1. 什么是 MySQL?它与其他数据库管理系统有何不同? 答:M...
2023-11-23

热门资讯

SIOCADDRT: Netw... SIOCADDRT: Network is unreachable SIOCADDRT: 网络不可达...
centos7下创建新用户和组 linux下添加,删除,修改,查看用户和用户组 1 .增加一个test组 groupadd test...
linux通过sed 修改文件... 13sy.txt里面内容如下 A; B; C; write by luohao199621; 1.要...
关于cannot remove... 关于cannot remove directory: Directory not empty的解决办...
mount: unknown ... mount: unknown filesystem type LVM2_member解决方案 系统启...
OpenMediaVault安... OpenMediaVault 是一个基于Debian的专用 Linux 发行版,用于构建网络连接存储...
centos7 双网卡双网关的... 最近公司需要在一台服务器上同时使用内网和外网,并且都需要跨网段访问,因此需要双网关,但是一台机子上只...
ethtool 命令详解 1 概述 ethtool 是用于查询及设置网卡参数的命令。 2 命令详解 2.1 命令格式 (1) ...
CentOS7单网卡设置双IP... linux系统CentOS7单网卡设置双IP的方法,centos7.5、7.6、7.7设置双IP教程...
Linux进程状态D,S,Z的... Linux进程状态top,ps中看到进程状态D,S,Z的含义 在top和ps命令中有一列显示进程状态...