「瀚高数据库技术栈」细说瀚高数据同步工具Dbrep第二讲


prtyaa
prtyaa 2024-01-12 14:55:59 48768 赞同 0 反对 0
分类: 资源 标签: 国产数据库
「瀚高数据库技术栈」细说瀚高数据同步工具Dbrep第二讲

一、功能简介

上次介绍了瀚高的Dbrep工具实现到异构数据库的数据复制(瀚高数据库复制到某国产数据库),本次来介绍一下Dbrep工具的另一个实用功能:数据双向同步。
双向同步是业务信息系统中常有的现实需求,比如:在描述同一个对象的数据发生了新增、变更和删除时,多个系统之间的数据需要同步。传统的数据库层解决方案常采用外部数据同步工具、数据库Trigger、Policy与UDF组合实现相关需求。当业务需求发生变更或新增,调整工作量和时效都难以保证。使用瀚高数据库集成的Dbrep工具,可以快速的实现同构数据库间的双向数据同步。
                        
二、实现原理
PostgreSQL已经实现了通过Logical replication实现逻辑复制(发布与订阅),可以进行表级别的数据单向同步复制。而对实现双向同步的需求,往往需要借助第三方ETL工具来,同时还要避免产生数据重复写入和冲突(ping-pong)现象,比如出现这样的循环发送和接收:
图片

为了解决ping-pong的问题,需要增设数据源筛选的功能,在接收到DML请求时,对逻辑层实际需要replay的部分进行鉴别,即可以识别下图中,蓝色和红色箭头的请求是否由为重复发起,以实现数据一致,避免进入ping-pong循环。

图片         
                        
三、实测记录
1.测试环境
服务器
服务器127
服务器128
服务器IP
192.168.70.127
192.168.70.128
数据库名
db127
db128

2.系统准备和数据库安装 

关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
 关闭 SELINUX
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g"  /etc/selinux/config
# setenforce 0
# cat /etc/selinux/config | grep SELINUX=disabled
# getenforce
安装系统软件包
# yum install vim wget readline readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc gcc-c++ rsync -y
安装HGDB,这里使用HGDB企业版rpm安装包进行安装并自动完成数据库初始化:
图片
修改一下pg_hba文件,测试环境没有使用加密通信和密码校验,在pg_hba.conf中添加2行:
host all all 0.0.0.0/0 trust
host replication all 0.0.0.0/0 trust
修改监听为*,配置wal_level级别为logical;
开启双向同步功能开关(hg_enable_duplex_copy)。
图片
重启数据库:
pg_ctl restart
 
3.双向同步实验
1)准备测试表
  • 新建数据库

为了测试效果更直观,以IP地址为标记创建了测试库:

127:
  •  
create database db127;br

128:

  •  
create database db128;br
图片
  • 创建测试表

db127和db128分别创建相同结构测试表:

  •  
create table duptest1 (id int primary key,code int,mm text);br
2)创建双向同步
  • db127和db128分别创建发布

发布的动作可以是insert、update、delete和truncate,我们使用默认的配置,即全部包括。

The default is to publish all actions, and so the default value for this option is 'insert, update, delete, truncate'
127:
  •  
create publication pub_127_1 for table duptest1;

128:

  •  
create publication pub_128_1 for table duptest1;
图片

查看两个数据库的发布:

图片
  • 127,128分别创建到对端的订阅

这里需要注意的是,目前dbrep_dual双向同步是对“增量数据”进行同步,所以在订阅创建的时候需要使用”copy_data=false”参数,该参数默认是true,即单向订阅的时候默认对基表数据进行拷贝。

128:
  •  
create subscription sub_128_1 connection 'host=192.168.70.127 port=5432 user=highgo password=Test@123 dbname=db127' publication pub_127_1 with(copy_data=false);

127:

  •  
create subscription sub_127_1 connection 'host=192.168.70.128 port=5432 user=highgo password=Test@123 dbname=db128' publication pub_128_1 with(copy_data=false);

创建完成后查看订阅情况:

  •  
select * from pg_subscription;
图片
3)双向同步测试
  • insert测试

127:
  •  
  •  
insert into duptest1 values (1,110,’Police’);insert into duptest1 values (2,120,’First-adi’);

128:

  •  
  •  
insert into duptest1 values (3,122,’Traffic-accident’);insert into duptest1 values (4,12123,’Traffic-service’);
图片

可以看到127和128的插入的数据已经同步。 

  • Update测试

    127上更新一条数据:

  •  
update duptest1 set code = 95518,mm = 'PICC' where id = 4;
图片

128同步了127更新的数据

128上更新:
  •  
update duptest1 set code = 95511,mm = 'PINGAN' where id = 4;
图片

数据update后,127和128的数据已经同步 

  • Delete测试

127上删除数据:

  •  
delete from duptest1 where code = 122;
图片

128同步了删除操作

128上删除一条数据:
  •  
delete from duptest1 where code = 120;
图片

数据delete后,127和128的数据已经同步。

  •  truncate测试

127上进行truncate表操作
图片

truncate操作同样会在128上同步操作

 

4)测试环境清理
127:
  •  
  •  
  •  
drop subscription sub_127_1;drop publication pub_127_1;drop table duptest1;
128:
  •  
  •  
  •  
drop subscription sub_128_1;drop publication pub_128_1;drop table duptest1;
              
四、FAQ
  • 限制条件

1)双向同步涉及的表,在创建订阅时,只支持增量数据同步(即copy_data=false);
2)双向同步的表,表结构需要一致。不支持单向同步中,源表列可以少于目的表的方式;
3)若无主键,订阅表上必须有相应的唯一索引或REPLICA IDENTITY(通常业务系统表都包含主键或唯一索引);
4)只支持基表到基表的复制,而不是视图、物化视图、分区根表、外部表等之间的同步;
5)序列数据类型不支持(序列是单独维护的);
6)大对象数据暂不支持(目前支持储存在普通表中的数据类型)。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  124
统信桌面专业版【全盘安装UOS系统】介绍  119
银河麒麟桌面操作系统安装佳能打印机驱动方法  110
银河麒麟桌面操作系统 V10-SP1用户密码修改  104
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!