database-sync作为一种开源辅助工具,用于数据库之间的表同步,更确切的说法是复制,可以从一个数据库复制表到另一个数据库
-
该工具支持的功能如下:
(1)自动同步表字段,如:源表扩字段,目标表自动扩字段(2)支持增量或全量同步数据
(3)支持指定字段同步,只同步关心的字段
-
支持的关系型数据库:
mysql、db2、postgresql、oracle、sqlserver
-
源代码下载:
database-sync代码托管在github上
源代码下载:下载
目标:database-sync适配openGauss数据库,可支持openGauss与其他数据库之间实现数据同步
源代码下载:适配openGauss的源代码已上传到个人仓库下的“douxin_master”分支
下载链接:下载
三、程序使用说明前提:已安装Java JDK 1.8或更高版本,安装maven
Step 1:下载代码并打包git clone下载 douxin_master分支的代码,并进行打包
git clone https://gitee.com/ywzq1161327784/database-sync.git cd database-sync/ git checkout origin/douxin_master mvn clean package -Dmaven.test.skip=true
打包后,target目录内容如下:
将mylib目录、target下的lib目录和database-sync-1.3.jar包复制到同一目录下,并创建一个config目录,在其下创建config.json文件写入配置信息,目录结构如下所示:
数据库连接信息以json格式配置在config/config.json文件中,每个节点包含type、driver、url、user、password、tbspace_ddl、encoding信息,
其中type指定数据库类型,取值为db2、postgres、mysql、oracle、sqlserver、openGauss,特别地,对于openGauss数据库需指定“type”:“openGauss”;
tbspace_ddl指定表空间语句,encoding指定编码方式。
配置文件示例:
{ "database1":{ "type":"openGauss", "driver":"org.postgresql.Driver", "url":"jdbc:postgresql://ip:port/postgres", "user": "****", "password":"******", "tbspace_ddl": "", "encoding":"utf-8" }, "database2":{ "type":"postgres", "driver":"org.postgresql.Driver", "url":"jdbc:postgresql://ip:5432/postgres", "user": "****", "password":"******", "tbspace_ddl":"WITH (compression=no, orientation=orc, version=0.12)ntablespace hdfsn", "encoding":"utf-8" }, "database3":{ "type":"oracle", "driver":"oracle.jdbc.driver.OracleDriver", "url":"jdbc:oracle:thin:@localhost:1521:orcl", "user": "****", "password":"****", "tbspace_ddl": "", "encoding":"utf-8" }, "database4":{ "type":"db2", "driver":"com.ibm.db2.jcc.DB2Driver", "url":"jdbc:db2://ip:port/wbsj", "user": "****", "password":"****", "tbspace_ddl": "", "encoding":"utf-8" }, "database5":{ "type":"mysql", "driver":"com.mysql.cj.jdbc.Driver", "url":"jdbc:mysql://localhost:3306/aarondb", "user": "****", "password":"****", "encoding":"utf-8" }, "buffer-rows": 100000 }Step 4:查看程序帮助信息
在步骤2中的目录下,执行java -jar database-sync-1.3.jar -h命令可查看程序运行的帮助信息
其中[]表示可选参数,包括如下几种:
-
–version或者-v表示打印版本信息并退出;
-
–help或者-h表示打印帮助信息并退出;
-
–sync-ddl或者-sd 表示自动同步表结果,默认情况下不会自动同步表结构,因此不指定该参数时,同步表时下述的目标表{toDB}需存在;
-
–from_fields=col1,col2或者-ff=col3,col4表示指定原表的字段序列;
-
–to_fields=col1,col2或者-tf=col3,col4表示指定目标表的字段序列;
-
–no-feture或者-nf表示不使用特定数据库的特性;
-
[whereClause]表示where条件,用于增量更新。
{}表示必选参数,共有6个,分别说明如下:
{fromDB}表示原表所在的数据库信息,在Step3所示的配置文件中,可以取值为database1,database2等;
-
{fromSchema}表示原表的模式名;
-
{fromTable}表示原表的表名;
-
{toDB}表示目标表所在的数据库信息;
-
{toSchema}表示目标表的模式名;
-
{toTable}表示目标表的表名。
eg 1:从postgres到openGauss实现表同步
java -jar database-sync-1.3.jar -sd postgres public test_0322 opengauss1 public test_0322_1
eg 2:从openGauss到postgres实现表同步
java -jar database-sync-1.3.jar -sd opengauss1 public test_0322_1 postgres public test_0322
至此,可实现openGauss数据库与其他数据库间的表数据同步
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)