使用数据库同步中间件DBSyncer实现不同数据库的数据同步

点击上方蓝字关注我

有去O(ORACLE数据库)、信创、国产化数据库等项目实践的同学应该都遇到过不同数据库之前进行数据迁移的问题,虽然有各种工具可以实现,但是有些工具的部署、使用比较复杂,也有些工具迁移数据效率很低。本文将介绍一款开源且部署、使用简单、迁移相对高效的数据库中间件DBSyncer来进行数据迁移。该工具支持Oracle、MySQL、PostgreSQL、 SQL SERVER、ES、Kafka等数据库之间的迁移。

1. 部署

推荐机器配置:内存8GB,4core,磁盘60GB(建议上好点的SSD)

本次在Linux服务器上进行部署

1.1部署JDK

根据官方文档指引,需要安装JDK8,具体可以自行在官方下载安装


我使用的8.0.191也可以

1.2 下载安装包并进行部署启动

DBSyncer分社区版记专业版,如果想试用专业版功能可以自行测试,本文将使用社区版进行测试。

下载:

社区版下载地址:https://gitee.com/ghi/dbsyncer/releases

为了体验新特性及优化后的功能,可以下载最新版本,当前最新版本为2.0.4,选择并进行下载

ruby 复制代码
wget https://gitee.com/ghi/dbsyncer/releases/download/v2.0.4/dbsyncer-2.0.4-bin.zip

解压、启动:

python 复制代码
unzip dbsyncer-2.0.4-bin.zip

bin目录下有启停脚本、执行运行即可

bash 复制代码
# 启动sh startup.sh

看到"Start successfully!"即启动成功

启动后的管理页面可以通过 http:// ip:18686进行登录查看,默认管理账号密码为 admin/admin

2. 数据迁移

2.1 准备工作

本次测试的是从Oracle迁移数据至MySQL,因此先在Oracle数据库中创建一张表及测试数据,在MySQL数据库中也创建一张表

Oracle库:

sql 复制代码
CREATE  TABLE  test1(id int ,c1 varchar(20))INSERT INTO  test1 values(1,'a');INSERT INTO  test1 values(2,'b');commit;

MySQL库:

sql 复制代码
CREATE TABLE  test1(id INT PRIMARY KEY ,c1 VARCHAR(20));

2.2 配置数据源

配置一个名为oracle1的数据源,对应填写连接信息、账号密码等,完成后保存即可

如果保存时不报错,则说明连接添加成功,如果保存过程中有错误,则按照错误信息进行解决。

再配置一个MySQL数据源作为目标库,MySQL的连接URL里要注意库名的配置

保存后即可在界面上看到对应的数据源

2.3 配置迁移任务

这个版本点击"添加驱动"进行数据迁移任务的配置(建议修改名称,以免有误解)

先选择源目数据源,并配置一个任务名称

保存后进行相关表影射等配置,例如选择表名及目标表,对应的主键名等

在高级配置中还可以进行其他的转换配置等

任务配置完成后,可以在页面上看到同步列表

2.4 启动任务

点击右上角的启动按钮即可启动本任务

启动后会显示"运行中""的状态

完成后会显示进度、耗时及成功数量

去目标库中查看结果,可以发现数据已同步进MySQL,至此本次数据迁移完成。

3. 小结

根据DBSyncer官方介绍,社区版的效率确实相对于专业版迁移效率差别很大,大家可以下载测试一下。另外,也可以配置大字段、大表,不同数据库的兼容配置、增量同步等进行更个方面的测试。

除了DBSyncer,其他的数据迁移工具也可以多尝试及对比

往期精彩回顾

  1. MySQL高可用之MHA集群部署

2. mysql8.0新增用户及加密规则修改的那些事

3. 比hive快10倍的大数据查询利器-- presto

4. 监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

  1. PostgreSQL主从复制--物理复制

  2. MySQL传统点位复制在线转为GTID模式复制

7. MySQL敏感数据加密及解密

8. MySQL数据备份及还原(一)

9. MySQL数据备份及还原(二)

扫码关注

相关推荐
Hacker_LaoYi29 分钟前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀31 分钟前
Redis梳理
数据库·redis·缓存
独行soc31 分钟前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天1 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺1 小时前
分布式系统架构:服务容错
数据库·架构
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain3 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship3 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站3 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶3 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb