CN110502585A - 一种可配置的MySql数据库间数据同步方法 - Google Patents
一种可配置的MySql数据库间数据同步方法 Download PDFInfo
- Publication number
- CN110502585A CN110502585A CN201910812194.8A CN201910812194A CN110502585A CN 110502585 A CN110502585 A CN 110502585A CN 201910812194 A CN201910812194 A CN 201910812194A CN 110502585 A CN110502585 A CN 110502585A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- information
- source
- configurable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000001360 synchronised effect Effects 0.000 claims abstract description 24
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种可配置的MySql数据库间数据同步方法,所述方法通过配置源数据库信息、目的数据库信息、源表信息和目的表信息,从目的数据库获取需要同步的数据,形成REPLACE INTO语句,通过在目的数据库中执行REPLACE INTO语句,达到存在则更新,不存在则添加的目的。本发明实现配置简单,不需要MySql开启binlog,只需要配置源数据库信息、目的数据库信息、源表和目的表信息即可;支持全量更新与增量更新;轻量级部署,只需要安装JDK,即可正常运行;支持跨平台部署,可部署在linux和windows系统。
Description
技术领域
本发明涉及MySql数据库数据同步技术领域,具体的说是一种可配置的MySql数据库间数据同步方法。
背景技术
数据同步技术主要解决的是不同系统间的数据共享以及相同系统间的数据读写分离、主从备份等。
目前MySql数据同步技术主要基于binlog,实现整个数据库的主从复制、主主复制。这种方式必须打开MySql的binlog选项,也就是打开二进制的日志记录选项,并且需要保证数据库版本一致、主从数据库数据一致。
现实情况中,由于需要开启binlog选项,如果双方系统由不同的公司开发,可能会有MySql版本不一致、数据不一致等情况,也会对现有系统有一些影响,协调起来也比较困难,而且双方系统数据库中的数据有可能不一致。
发明内容
本发明要解决的技术问题是:双方系统由不同的公司开发,MySql版本不一致,而且双方系统数据库中的数据有可能不一致。
针对上述问题,本发明提供一种可配置的MySql数据库间数据同步方法,一种不影响现有系统、配置简单、按需同步、轻量级部署的数据同步工具。
本发明所采用的技术方案为:
一种可配置的MySql数据库间数据同步方法,所述方法通过配置源数据库信息、目的数据库信息、源表信息和目的表信息,从目的数据库获取需要同步的数据,形成REPLACEINTO语句,在目的数据库中执行REPLACE INTO语句,达到存在更新,不存在添加的目的。通过配置获取需要同步的信息,可支持同步多个表。
所述源数据库信息、目的数据库信息、源表信息和目的表信息涉及的配置项包括:源数据库连接信息、源表名、主键名、查询条件、目的数据库连接信息、目的表名。
所述源表和目的表结构相同。
所述方法实现过程包括内容如下:
1)加载配置信息;
2)循环同步目的表数据;
3)从源数据库获取数据,生成数据同步SQL;
4)在目的数据库中执行SQL。
所述方法从源数据库获取数据的过程包括内容如下:
按照配置的源数据库信息、表名、主键名、查询条件获取本次需要同步的数据。如配置表名:od_data_resource、主键名:DATA_RESOURCE_ID、查询条件:DATA_RESOURCE_TYPE='hive',则查询SQL为select*from od_data_resource where DATA_RESOURCE_TYPE='hive'。
所述方法生成数据同步SQL的实现过程包括内容如下:
(1)首先根据表名检查中间表是否存在,如果不存在则创建中间表,中间表名格式为“同步表名_sync”;
(2)删除中间表中的数据;
(3)使用REPLACE INTO语句将从源数据库获取的数据同步到中间表,如存在,则更新,不存在则删除;
(4)根据中间表数据,删除目的表中需要删除的数据;
(5)将数据从中间表数据同步到目的表数据。
所述方法实现过程包括内容如下:使用log4j记录日志,通过配置日志级别,实现不同级别的日志输出,如调试日志、运行日志、错误日志等,在出现错误后,将错误日志发送邮件给维护人,以便及时解决问题。
所述方法实现过程包括内容如下:
使用守护进程部署方式,运行稳定,操作系统启动后自动重启,无须人为参与。
注:
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。
REPLACE的运行与INSERT很相似,只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,删除旧记录。除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。不能从当前行中引用值,也不能在新行中使用值。如果使用一个例如“SET COL_NAME=COL_NAME+1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(COL_NAME)处理。因此,该赋值相当于SET COL_NAME=DEFAULT(COL_NAME)+1。为了能够使用REPLACE,必须同时拥有表的INSERT和DELETE权限。REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换)。
本发明的有益效果为:
本发明实现配置简单,不需要MySql开启binlog,只需要配置源数据库信息、目的数据库信息、源表和目的表信息即可;支持全量更新与增量更新;轻量级部署,只需要安装JDK,即可正常运行;支持跨平台部署,可部署在linux和windows系统。
附图说明
附图1是本发明方法实现流程示意图。
具体实施方式
下面结合说明书附图,根据具体实施方式对本发明进一步说明:
如图1所示,一种可配置的MySql数据库间数据同步方法,所述方法实现流程如下:
1.加载配置信息,主要包括源数据库连接信息、目的数据库连接信息、同步的表名、主键名、查询条件;
2.循环同步每个表数据;
3.从源数据库获取数据,按照配置的源数据库信息、表名、主键名、查询条件获取本次需要同步的数据,如配置表名:od_data_resource、主键名:DATA_RESOURCE_ID、查询条件:DATA_RESOURCE_TYPE='hive',则查询SQL为select*from od_data_resource whereDATA_RESOURCE_TYPE='hive';
4.生成数据同步SQL,主要处理过程如下:
(1)首先根据表名检查中间表是否存在,如果不存在则创建中间表,中间表名格式为“同步表名_sync”;创建中间表SQL:CREATE TABLE IF NOT EXISTS od_data_resource_sync(LIKE od_data_resource);
(2)删除中间表中的数据,删除SQL为delete from od_data_resource_sync;
(3)同步数据到中间表,使用REPLACE INTO语句,如存在则更新,不存在则删除,如:REPLACE INTO od_data_resource_sync
(DATA_RESOURCE_ID,DATA_SOURCE_ID,RESOURCE_IMG_PHYSICAL_NAME,DATA_RESOURCE_NAME,DATA_CAT ALOG_NAME)
values('2c935db66956c9ff016956e0f6c8000a','2c935db66956c9ff016956cd631f0005','ff80808165b8627f0165b86453760002.jpg','tb3',null);
(4)根据中间表数据,删除目的表中需要删除的数据,如:delete from od_data_resource where DATA_RESOURCE_ID in(select DATA_RESOURCE_ID from(select*fromod_data_resource a where1=1and DATA_RESOURCE_TYPE='hive'and not exists(select DATA_RESOURCE_ID from od_data_resource_sync b where b.DATA_RESOURCE_ID=a.DATA_RESOURCE_ID))aaa);
(5)将数据从中间表数据同步到目的表数据,如:REPLACE INTO od_data_resource(DATA_RESOURCE_ID,DATA_SOURCE_ID,RESOURCE_IMG_PHYSICAL_NAME,DATA_RESOURCE_NAME,DATA_CATALOG_NAME)select*from od_data_resource_sync;
5.在目的数据库中执行SQL;生成的SQL在目的数据库中执行,主要过程包括创建中间表、删除中间表数据、将数据同步到中间表、根据中间表数据删除需要在目的表中删除的数据、同步中间表数据到目的表。
6.同步下一个表数据。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种可配置的MySql数据库间数据同步方法,其特征在于,所述方法通过配置源数据库信息、目的数据库信息、源表信息和目的表信息,从目的数据库获取需要同步的数据,形成REPLACE INTO语句,通过在目的数据库中执行REPLACE INTO语句,达到存在则更新,不存在则添加的目的。
2.根据权利要求1所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述源数据库信息、目的数据库信息、源表信息和目的表信息涉及的配置项包括:源数据库连接信息、源表名、主键名、查询条件、目的数据库连接信息、目的表名。
3.根据权利要求1或2所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述源表和目的表结构相同。
4.根据权利要求3所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述方法实现过程包括内容如下:
1)加载配置信息;
2)循环同步目的表数据;
3)从源数据库获取数据,生成数据同步SQL;
4)在目的数据库中执行SQL。
5.根据权利要求4所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述方法从源数据库获取数据的过程包括内容如下:
按照配置的源数据库信息、表名、主键名、查询条件获取本次需要同步的数据。
6.根据权利要求4所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述方法生成数据同步SQL的实现过程包括内容如下:
(1)首先根据表名检查中间表是否存在,如果不存在则创建中间表;
(2)删除中间表中的数据;
(3)使用REPLACE INTO语句将从源数据库获取的数据同步到中间表,;
(4)根据中间表数据,删除目的表中需要删除的数据;
(5)将数据从中间表数据同步到目的表数据。
7.根据权利要求4所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述方法实现过程包括内容如下:使用log4j记录日志,通过配置日志级别,实现不同级别的日志输出。
8.根据权利要求4所述的一种可配置的MySql数据库间数据同步方法,其特征在于,所述方法实现过程包括内容如下:
使用守护进程部署方式,操作系统启动后自动重启。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910812194.8A CN110502585A (zh) | 2019-08-30 | 2019-08-30 | 一种可配置的MySql数据库间数据同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910812194.8A CN110502585A (zh) | 2019-08-30 | 2019-08-30 | 一种可配置的MySql数据库间数据同步方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110502585A true CN110502585A (zh) | 2019-11-26 |
Family
ID=68590684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910812194.8A Pending CN110502585A (zh) | 2019-08-30 | 2019-08-30 | 一种可配置的MySql数据库间数据同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502585A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125214A (zh) * | 2019-12-02 | 2020-05-08 | 武汉虹信技术服务有限责任公司 | 一种轻量级增量数据同步方法、装置及计算机可读介质 |
CN111339113A (zh) * | 2020-02-28 | 2020-06-26 | 湖南九鼎科技(集团)有限公司 | 基于etl技术的配方直达方法及系统 |
CN112395295A (zh) * | 2020-11-30 | 2021-02-23 | 北京明略昭辉科技有限公司 | 一种同步Hive数据的方法、系统、电子设备及存储介质 |
CN112650754A (zh) * | 2020-12-24 | 2021-04-13 | 浪潮云信息技术股份公司 | 一种关系型数据库的数据全量导入Hive的方法 |
CN118152377A (zh) * | 2024-05-11 | 2024-06-07 | 浪潮云信息技术股份公司 | 流程化的数据库检查方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN104965879A (zh) * | 2015-06-12 | 2015-10-07 | 小米科技有限责任公司 | 修改数据表的表结构的方法及装置 |
-
2019
- 2019-08-30 CN CN201910812194.8A patent/CN110502585A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN104965879A (zh) * | 2015-06-12 | 2015-10-07 | 小米科技有限责任公司 | 修改数据表的表结构的方法及装置 |
Non-Patent Citations (1)
Title |
---|
张旭刚等: "基于zookeeper和强一致性复制实现MySQL分布式数据库集群", 《微型电脑应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125214A (zh) * | 2019-12-02 | 2020-05-08 | 武汉虹信技术服务有限责任公司 | 一种轻量级增量数据同步方法、装置及计算机可读介质 |
CN111125214B (zh) * | 2019-12-02 | 2023-08-25 | 武汉虹信技术服务有限责任公司 | 一种轻量级增量数据同步方法、装置及计算机可读介质 |
CN111339113A (zh) * | 2020-02-28 | 2020-06-26 | 湖南九鼎科技(集团)有限公司 | 基于etl技术的配方直达方法及系统 |
CN112395295A (zh) * | 2020-11-30 | 2021-02-23 | 北京明略昭辉科技有限公司 | 一种同步Hive数据的方法、系统、电子设备及存储介质 |
CN112650754A (zh) * | 2020-12-24 | 2021-04-13 | 浪潮云信息技术股份公司 | 一种关系型数据库的数据全量导入Hive的方法 |
CN118152377A (zh) * | 2024-05-11 | 2024-06-07 | 浪潮云信息技术股份公司 | 流程化的数据库检查方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502585A (zh) | 一种可配置的MySql数据库间数据同步方法 | |
US11971945B2 (en) | System for synchronization of changes in edited websites and interactive applications | |
JP7212040B2 (ja) | コンテンツ管理クライアント同期サービス | |
CN109947773B (zh) | 在多租户数据库系统中部署对键模式的改变 | |
US10019460B2 (en) | Hosted file sync with direct access to hosted files | |
EP3602341B1 (en) | Data replication system | |
US10380083B2 (en) | Enabling collaborative development of a database application across multiple database management systems | |
US11055264B2 (en) | Automatically coordinating application schema changes in a distributed data storage system | |
US6631386B1 (en) | Database version control subsystem and method for use with database management system | |
US20190129990A1 (en) | Deploying changes in a multi-tenancy database system | |
CN108363545B (zh) | 一种数据配置方法及数据配置装置 | |
CN103617176A (zh) | 一种实现多源异构数据资源自动同步的方法 | |
CA2281367C (en) | Method and apparatus for simplified administration of large numbers of similar information handling servers | |
US20150006485A1 (en) | High Scalability Data Management Techniques for Representing, Editing, and Accessing Data | |
US20240143386A1 (en) | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems | |
CN105912329B (zh) | 版本自动化统一方法及系统 | |
Francia | MongoDB and PHP: Document-Oriented Data for Web Developers | |
US11768813B1 (en) | Data migration framework | |
Heinen | New Generation Mission Operations Preparation Framework | |
Orlov et al. | Scenario Approach to Software Updates of Complex Networks | |
CN116860870A (zh) | 一种数据复制方法及装置 | |
CN117648306A (zh) | 一种数据迁移方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191126 |
|
RJ01 | Rejection of invention patent application after publication |