跨数据库表同步

工作中经常会遇到因为数据量过大而带来的数据迁移与拆分,根据数据表中记录条数的不同,需要采取的策略也不尽相同。

数据量较小的表

例如:从数据库A中的tableA同步到到数据库B中的tableB

1、为了保证保证数据库A和数据库B中的表可以保持准确可用,通常会在数据库B中建立一张临时表temp。

2、将数据库A中的tableA表跟数据库B中的临时表比较,删除tableA中已经删除的数据,增加tableA中新增的数据,更新表中不同的数据。防止因数据库断开连接造成的问题。

3、待临时表更新完成,在同步到tableB中,保证tableB的准确性,同时因为临时表与tableB在同一数据库,可用SQL语句直接进行同步。

数据量较大的表

同步历史数据

数据量较少的表操作比较简单,对于千万级别的表的迁移与拆分来说,因为其数据量的庞大性,无法与小表采取相同的更新策略。但是数据保证其一致这一点是相同的。

例如:从数据库A中的tableA同步到到数据库B中的tableB

1、因为其数据量较大,所以我们需要记录那些数据被同步过,此时需要在数据库A中建立一张同步信息表,该表需要以下字段

OriginTable(原表表名)  PurposeTable(目的表表名)  CopyId(复制记录ID)  IsCopy(是否复制)  LastCopyTime(最新复制时间)  CopyCount(复制次数)

这样在从tableA中选择时,即可使用exists筛选未被复制的数据(前提是原表需要主键),从而实现可靠的复制。

2、在数据同步完成之后我们需要检查数据的准确性,即是否与原表数据一致。我们需要知道哪些数据已经被检查过,不能重复检查数据,此时需要在数据库B中建立一张复制信息表,该表需要以下字段

OriginTable(原表表名)  PurposeTable(目的表表名)  CheckId(检查记录ID)  IsCheck(是否检查)  LastCheckTime(最新检查时间)  CheckCount(检查次数)

这样可以保证从目的表选择时,可使用exists筛选未被检查的数据,从而不检查重复数据,还可设置检查次数,进行报警。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值