暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

SUNDB数据库常用工具之tablediff

原创 科蓝SUNDB编辑部 2022-10-08
229

1. 定义

tablediff是以row为单位对比通过CDC等工具同步的SUNDB的两张表的工具。与其他工具不同,它以java为基础而不是二进制,执行时也需要java。
用于两个服务器通过cyclone执行一主一备时查看table间的同步是否正常,对没有进行同步的row进行同步操作。
不使用选项进行启动,需要另外创建配置文件。通过读取配置文件可获取source, target间的关系或位置等,并输出报告未同步row的log文件和报告执行同步结果的log。

配置文件: 配置文件的路径为$SUNDB_DATA/conf/tablediff.conf,可设置source和target的连接信息,同步策略等。
此工具有2个执行命令语,各为TableDiff与TableSync。

2. 用法

SOURCE, TARGET表设置选项
以下为定义源表(source)与目标表(target)的选项,因此必须设置。源表与目标表分别指要对比的对象表。

● SOURCE_URL:源表所在的SUNDB的JDBC connection URL。
● SOURCE_USER:源表所在的SUNDB的账号。
● SOURCE_PASSWORD:源表所在的SUNDB账号的密码。
● SOURCE_SCHEMA:源表的schema。
● SOURCE_TABLE:源表名。
● TARGET_URL:目标表所在的SUNDB的JDBC connection URL。
● TARGET_USER:目标表所在的SUNDB的账号。
● TARGET_PASSWORD:目标表所在的SUNDB账号的密码。
● TARGET_SCHEMA:目标表的schema。
● TARGET_TABLE:目标表名。

3. 同步策略设置

同步策略有如下4个属性。都可以为ON或OFF。

● TARGET_INSERT:源表中的key不存在于目标表时,将其key插入到目标表。
● TARGET_UPDATE:非key的column内容不同时,更新目标表的row。
● TARGET_DELETE:源表中没有的key在目标表时,删除目标表的row。
● SOURCE_INSERT:源表中没有的key在目标表时,在源表插入其row。

4. 例子

注册jar文件到CLASSPATH

export CLASSPATH=$CLASSPATH:$SUNDB_HOME/bin/tablediff.jar:$SUNDB_HOME/lib/Sundb6.jar

设置tablediff.conf

SOURCE_URL = jdbc:Sundb://127.0.0.1:22581/test
SOURCE_USER = TEST
SOURCE_PASSWORD = test
SOURCE_SCHEMA = PUBLIC
SOURCE_TABLE = TAB1
TARGET_URL = jdbc:Sundb://127.0.0.1:22581/test
TARGET_USER = TEST
TARGET_PASSWORD = test
TARGET_SCHEMA = PUBLIC
TARGET_TABLE = TAB2
OPERATION = SYNC
TARGET_INSERT = ON
TARGET_UPDATE = ON
TARGET_DELETE = ON
SOURCE_INSERT = OFF

创建实习表后tablediff的执行结果
gSQL> create table tab1 ( c1 integer primary key, c2 char(10) );
gSQL> create table tab2 ( c1 integer primary key, c2 char(10) );
gSQL> insert into tab1 values ( 1, ‘HELLO’);
gSQL> insert into tab2 values ( 1, ‘HELLO’);
gSQL> insert into tab1 values ( 2, ‘WORLD’);
gSQL> insert into tab2 values ( 2, ‘world’);
gSQL> insert into tab1 values ( 3, ‘good’);
gSQL> insert into tab2 values ( 4, ‘good’);
gSQL> commit;

shell> java sunje.Sundb.tool.diff.TableDiff tablediff.conf

Total 4 rows processed
> row diff : 1, update target(success/failure): 1/0
> key diff source only: 1, insert into target(success/failure): 1/0
> key diff target only: 1, delete from target(success/failure): 1/0
TableDiff completed
elapsed time = 0.229 sec

最后修改时间:2023-07-17 14:40:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论