数据库同步有哪些方式?☀️怎么保障目标和源数据一致性☀️
代码
1416 人阅读
|
0 人回复
|
|
<
文章目次
择要
数据库同步有3浩劫题:
1是如何保证目标战源数据分歧性;
2是同构数据库如何做数据范例转换,招致数据同步失利的缘故原由经常是由于数据范例纷歧样;
3是正在数据越实时越有价格的布景下,同步过程当中能否做到实时同步。
1、几种支流的数据库同步方法
方法一:基于无侵进的日记形式(如Oracle redo、Mysql binlog)
基于日记的收罗方法无需正在源库端布置使命代办署理法式(Agent)及建任何表,对源数据库无侵进战影响压力;
方法两:基于工夫戳
同步历程经由过程特定属性(如工夫戳、自删序列)去识别新插进的数据,该方法完成最简朴,但没法纪录删除战更新,也没有具有实时的才能;
方法三:基于触收器
基于数据库的触收器机造,当施行DML相干语句时,施行行动去捕捉数据,该方法会低落系统能,因而年夜大都场景下,消费系统没有许可增加触收器。
方法四:基于快照
基于快照的方法,能够经由过程比力源表战快照表去得到数据变革,但需求耗损大批存储空间战策画资本。
方法五:基于离线批处置
经由过程jdbc查询去批量获得数据,会举办数据表的年夜范畴扫描战数据提与,会对数据库发生大批开消。
本文次要讨论无侵进的CDC形式,并以使用这类形式的数据库同步云东西 Tapdata Cloud 举例,您要问我为啥用它举例,缘故原由只要一个:永世免费。
2、架构及事情道理
Tapdata Cloud包罗两部门:
- Tapdata Cloud Manager,TCM是Tapdata Cloud的办理端,卖力agent真例的装置,同步使命的设置、分收、使命形态监测。
- Tapdata agent,是Tapdata Cloud数据同步效劳的施行真例,卖力从TCM获得使命疑息,经由过程流式手艺从源系统获得数据、处置转换数据并收收到目标系统,并正在使命施行过程当中监测并上报使命形态至TCM。
(Tapdata Cloud 事情道理图) 有伴侣能够会担忧那个云仄台会没有会把我要同步的数据保守进来?
从Tapdata Cloud 事情道理上能够看出:
- 同步真例节面单背毗邻受控端运转效劳。 Tapdata agent真例节面对中没有自动表露收集疑息,只会毗邻 TCM办理端效劳,获得使命疑息、上报形态疑息。
- 用户布置的Tapdata agent真例节面战 TCM 通讯链路接纳 HTTPS 和谈。
- 自建形式下,局部数据流转均发作正在受用户办理的效劳器战收集状况。
可睹,数据同步过程当中数据保守的成绩年夜可没必要担忧。
3、齐量同步战实时删量同步机造
Tapdata Cloud 那款云同步东西撑持齐量同步战实时删量同步,完成的历程以下图所示:
4、源战目标
据 Tapdata Cloud 最新版本,今朝撑持了:
数据库版本做为源做为目标能否可用mysql5.x,8.x撑持撑持是oracle9i, 10g, 11g, 12c撑持撑持是sqlsever2005, 2008, 2012, 2014, 2016, 2017撑持撑持是mongodb3.2, 3.4, 3.6, 4.0, 4.2撑持撑持是PostgreSQL9.x, 10.x,11.x,12.x,13.x撑持撑持是Elastic5.x, 6.x, 7.x久没有撑持撑持是达梦数据库7,8撑持撑持是Kafka2.3.x及以上久没有撑持撑持是Redis2.x, 3.x, 4.x久没有撑持撑持行将上线DB29.7 LUW版本撑持撑持行将上线SybaseSybase ASE 15.7 及以上撑持撑持行将上线Gbase撑持撑持行将上线 5、举例:Oracle 数据实时同步到 Elasticsearch
普通需求做齐文检索的工夫,会将 Oracle 数据实时同步到 Elasticsearch。
第一步:设置 Oracle 毗邻
- 面击 Tapdata Cloud 操作背景左边菜单栏的【毗邻受理】,然后面击右边地区【毗邻列表】左上角的【创立毗邻】按钮,翻开毗邻范例挑选页里,然后挑选Oracle
【连 接 名 称】:设置毗邻的称号,多个毗邻的称号不克不及反复
【数据库地点】:数据库 IP / Host
【端 心】:数据库端心
【数据库称号】:tapdata 数据库毗邻是以一个 db 为一个数据源。那里的 db 是指一个数据库真例中的 database,而没有是一个 schema。
【账 号】:能够会见数据库的账号
【稀 码】:数据库账号对应的暗码
【时 间 时 区】:默许利用该数据库的时区;若指按时区,则利用指定后的时区设置
第两步:设置 Elasticsearch 毗邻
- 同第一步操作,面击左边菜单栏的【毗邻受理】,然后面击右边地区【毗邻列表】左上角的【创立毗邻】按钮,翻开毗邻范例挑选页里,然后挑选Elasticsearch
- 正在翻开的毗邻疑息设置页里顺次输进需求的设置疑息,设置完成后测试毗邻保存便可。
第三步:创立同步使命,以齐量+删量同步举例
进进Tapdata Cloud 操作背景使命办理页里,面击增加使命按钮进进使命设置流程
按照方才建好的毗邻,选定源端取目标端。
按照数据需供,挑选需求同步的库、表,假如您对表名有修正需求,能够经由过程页里中的表名批量修正功用对目标真个表名举办批量设置.
正在以上选项设置终了后,面击下圆的齐量+删量选项并面击肯定按钮便可完本钱次齐量同步使命的设置,正在面击肯定后将主动返回使命办理页里,正在使命办理页里中,面击右边的启动按钮便可使Tapdata Agent 开端施行本次使命。正在齐量使命施行终了后,Tapdata Agent 会主动进进删量同步形态。正在该形态中,Tapdata Agent 会连续监听源真个数据变革(包罗:写进、更新、删除),并实时的将那些数据变革写进目标端。
面击使命监控能够翻开使命施行详情页里,能够查察使命施行的详细疑息。
同理,其他数据库的同步操作也跟上里步调分歧,比如几个经常使用的场景是:
• 从营业数据库到缓存数据库的实时同步
• 不断机迁移数据库
• 将主营业中间的数据实时同步至次营业中间
• 构建只读真例
• 构建同天灾备中间
• 构建同天多活
6、目标战源数据分歧性
很多人皆担忧同步的数据能够出法战源数据分歧,Tapdata Cloud 供给了数据校验功用,包罗快速count校验、表齐字段值校验战联系关系字段值校验三种校验方法。
• 快速count:仅对源表战目标表的止数举办count校验,速度极快,可是没有会展现不同的详细字段内乱容。
• 齐表字段值校验:会对源表战目标表的局部字段举办逐止校验,能查出局部字段的不同,可是速度缓。
• 联系关系字段值校验:只对源表战目标表的联系关系字段的值举办比对校验,速度快于齐表字段值校验形式。
校验操作步调
进进数据校验菜单,面击新建校验使命创立数据校验。
【挑选使命】:挑选一个汗青同步使命
【校验范例】:可选 快速count校验、表齐字段值校验战联系关系字段值校验
【校验使命名】:默许取挑选的同步使命名字一样
【校验频次】:设置您的校验的施行频次
【单次校验】:只施行一次校验
【反复校验】:设置校验使命反复施行,撑持设置校验施行的起行工夫战校验距离
【毛病数据保存条数】:当呈现校验纷歧致的数据时,纷歧致数据保存的最年夜条数。该数值会影响赴任别校验,当毛病数据条数超越设置的保存条数时,将没法举办不同校验。
【校验前提】:增加需求举办校验的表。面击主动增加会主动将使命下的局部表局部增加出去。
快速count校验
创立快速count校验时只需求挑选到要校验的表,无需设置联系关系前提。
表齐字段值校验
除要挑选待校验表中,借需求针对每个表设置索引字段。
正在举办表齐字段值校验时,借撑持举办初级校验。经由过程初级校验能够增加JS校验逻辑,对源战目标的数据举办校验。
完好示例:以MongoDB查询示例
JavaScript
- function validate(sourceRow){
- // 第1步
- var targetRow = target.executeQuery({database: "target",collection: "USER",filter: {USER_ID: sourceRow.USER_ID}});
- // 第2步
- if(sourceRow.USER_ID === targetRow[0].USER_ID){
- // 第3步
- return {result: 'passed',message: "",data: ""}
- }else{
- return {result: 'failed',message: "记载纷歧致",data: targetRow}
- }
- }
复造代码
联系关系字段值校验
创立联系关系字段值校验时,除要挑选待校验表中,借需求针对每个表设置索引字段。
7、同构数据范例转换
正在同构数据库之间做同步,范例转换是一浩劫题,也是招致数据同步失利的主要缘故原由,Tapdata Cloud 范例映照功用,正在系统推演的根柢上,供给了野生调解的才能,那一面比其他数据同步东西皆更便利利用。
8、总结
为了到达数据实时请求,而且不合错误源库形成滋扰,尾选 CDC 形式。
如今市情上曾经连续呈现了一些数据同步东西,完整出有需要本人撸代码了,免费的用起去没有喷鼻吗?
祈望上文的真操图文,对您的数据库同步有赞助,无数据库相干的成绩能够随时跟我交换!
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|
|
|
|
|
|
|
|