海量智库第14期|exBase实现国外主流商用数据库与Vastbase G100双向数据实时同步的方法


上帝视角
上帝视角 2023-07-11 17:08:59 51222
分类专栏: 资讯
图片

 

背景技术

用户在使用Vastbase G100数据库替换国外主流商用数据库时,迁移数据后,应用也会在Vastbase G100数据库上运行;客户在验证新库是否完全符合应用要求前,备份应用还会继续在源数据库上运行。此时就需要方法确保源数据库与Vastbase G100上的应用数据能够相互同步。
这里介绍exBase基于MySQL binlog和PostgreSQL decoderbufs实现MySQL与Vastbase G100数据库之间的双向数据实时同步方案。

 

 

技术方案

MySQL端通过binlog采集到MySQL的变更,判断该事务中是否含有标记,含有标记的变更事务丢弃,不含有标记的事务发送给Vastbase G100应用端,拼接标记后写入到Vastbase G100中;

 

Vastbase G100端通过decoderbufs采集Vastbase G100的变更,判断该事务中是否含有标记,含有标记的变更事务丢弃,不含有标记的事务发送给MySQL应用端,拼接标记后写入到MySQL中。exBase可以通过该方法,实现MySQL与Vastbase G100数据库之间的数据增量同步,且能防止回环写入。

 

图片

 

附图及附图的简单说明:
(1)图一为实施例一以MySQL出发实现同步流程;
(2)图二为实施例一以Vastbase G100出发实现同步流程。

图片

图一

 

图片

图二

 

具体实施方式

图一和图二两个流程合并起来之后才是一个完整的流程,现在分开分别说明,图一为MySQL端流程,图二为Vastbase G100端流程。
MySQL端:

 

步骤1:配置MySQL binlog服务:

 

①实现本技术方案需要MySQL 端配置binlog。开启binlog需要调整MySQL的数据库权限,详细如下:

图片

授权语句如下

图片

【说明】
授权语句中:<MySQL用户>指的是连接MySQL数据源时的用户名,根据实际情况进行修改。

 

②在MySQL的配置文件my.cnf中配置参数。

图片

【说明】
·log-bin选项配置的是binlog日志目录,设置此目录则表示开启了 binlog日志。
·log-bin可以直接取值为mysql-bin,即默认表示其位置在/var/lib/mysql/目录下;也可以设置为绝对路径。

 

③完成后是service MySQL restart命令重启数据库

图片

 

步骤2:连接到MySQL数据库,在需要同步的schema下创建mark_down表,执行以下命令创建mark_down表:

 

步骤3:exBase连接到binlog,获取MySQL数据库的变更事务sql;

 

步骤4:判断sql中是否包含:update mark_down set update_time...的标记操作,如果是,则丢弃该采集记录,如果否,把该记录发送给应用端;

 

步骤5:应该端接收到变更记录后,在每条记录前拼接一条标记sql:update mark_down set update_time =current_timpstamp;然后写入到openGauss库中。

 

Vastbase G100端:

 

 

步骤1:Vastbase G100配置decoderbufs

配置默认Vastbase G100是已经安装了decoderbufs,安装过程不在赘述。

 

④修改配置文件 postgresql.conf
wal_level 改为 logical
shared_preload_libraries 选项添加 decoderbufs 
根据需要调整 max_wal_senders 和 max_replication_slots 的数量,默认值是 10 ,表示最多只能建立10个复制槽。

 

⑤重启Vastbase G100数据库。

 

步骤2:连接到Vastbase G100数据库,在需要同步的schema下创建mark_down表,执行以下命令创建mark_down表:

图片

 

步骤3:exBase连接到decoderbufs,获取Vastbase G100数据库的变更事务sql;

 

 

步骤4:判断sql中是否包含:update mark_down set update_time...的标记操作,如果是,则丢弃该采集记录,如果否,把该记录发送给应用端;

 

步骤5:应该端接收到变更记录后,在每条记录前拼接一条标记sql:update mark_down set update_time =current_timpstamp;然后写入到MySQL库中。

 

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=26073
赞同 0
评论 0 条
上帝视角L1
粉丝 3 发表 72 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2941
【软件正版化】软件正版化工作要点  2860
统信UOS试玩黑神话:悟空  2819
信刻光盘安全隔离与信息交换系统  2712
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1246
grub引导程序无法找到指定设备和分区  1213
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!