CN105956139A - 一种数据库双机同步的方法 - Google Patents
一种数据库双机同步的方法 Download PDFInfo
- Publication number
- CN105956139A CN105956139A CN201610312656.6A CN201610312656A CN105956139A CN 105956139 A CN105956139 A CN 105956139A CN 201610312656 A CN201610312656 A CN 201610312656A CN 105956139 A CN105956139 A CN 105956139A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- shipper
- data base
- request
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明公开了一种数据库双机同步的方法,包括以下步骤:提供应用线程进行数据库操作请求的对外接口;创建主、从数据库服务执行线程;创建数据库双机同步服务。本发明可自适应于不同的主流数据库,便捷执行数据库数据迁移等操作,通过同时向主从数据库服务执行线程分发SQL数据块和在数据库故障恢复时实现数据恢复,保证主从数据库数据的一致性和完整性。
Description
技术领域
本发明涉及一种数据库双机同步的方法,属于通信技术领域。
背景技术
为了保证系统运行稳定性,一般采用双数据库系统进行数据存取。双数据库需要解决主从数据库数据同步问题。可以通过数据库编程达到双机同步。如果是主数据库和从数据库对数据同步实时性有较高的要求,可以在两个库都建触发器,不管当前在哪个库发生数据更新都可以实时同步数据到对侧数据库;如果对数据同步的实时性要求不高,则可以通过定制存储过程的方式(给主从两个数据库的数据表加时间戳或者更新标志)定时同步数据;也可以结合以上两种方式,通过给两个数据库的数据表加更新标志字段,以第一种方式为主以满足实时性的要求,以第二种方式为辅弥补可能存在的触发器执行更新未成功的情况。
当前常用的主流数据库主要有Oracle、SQL Server、MySQL、金仓、达梦等。每种数据库编程的实现方式各有不同,如果采用数据库编程方式来实现数据库的同步,当遇到不同数据库间数据移植时则需要编写适应不同数据库的脚本,此时如果一个数据库脚本发生改动,必须同步修改其他数据库脚本。同一数据库间进行数据移植时,也需要相应的移植脚本,大大增加了数据库移植的复杂性。同时如果有一台机器由于故障脱离网络,在故障恢复时不能恢复故障期间未执行的数据库请求,从而导致两个数据库数据不一致。
发明内容
本发明所要解决的技术问题是克服现有技术的缺陷,提供一种数据库双机同步的方法,以有效解决数据库双机运行时的主从数据库数据一致性问题和数据库故障恢复时的数据完整性问题。
为解决上述技术问题,本发明提供一种数据库双机同步的方法,其特征在于,包括以下步骤:
1)提供应用线程进行数据库操作请求的对外接口;
2)创建主、从数据库服务执行线程;
3)创建数据库双机同步服务。
前述的步骤1)中,应用线程进行数据库操作请求的对外接口,包括以下三种可选方式:一是设置数据库操作的完整的SQL语句;二是设置带有占位符的SQL语句和数据串;三是单独设置带有占位符的SQL语句和设置要操作的数据。
前述的数据串有多条,每条数据串有多个字段;每条数据串之间以特定符号分隔,单条数据串中字段之间以不同的特定符号分隔;所述特定符号包括:“@”、“#”、“;”和“,”。
前述的数据库操作请求是以结构块构成,结构块中包含要执行的SQL语句和数据,同时结构块中包含一个进行同步操作的信号量,通过该信号量来控制数据库请求时的同步操作。
前述的步骤2)中,数据库服务执行线程在执行数据库操作请求时存在两种异常情况:一种是由于数据库服务器故障,导致SQL语句不能正常执行;另一种是由于SQL语句语法有误,导致SQL语句执行异常。
前述的数据库服务器故障异常是指,数据库连接获取不到,需要将数据库操作请求转换成字符串保存成为本地文件,待数据库连接能够正常获取后,从本地文件中读取保存的数据库操作请求,再进行数据库请求执行。
前述的SQL语句语法有误引起的异常是指,应用层构建了不能正确执行的SQL语句,需要将该数据请求写入文件并保存到错误SQL目录下,并返回错误执行标志。
前述的步骤3)中,创建数据库双机同步服务,包括:
将接收到的数据库操作请求分发给主、从数据库服务执行线程;
阻塞当前进行数据库操作请求的应用线程;
定时查询主、从数据库服务执行线程的执行状态,唤醒数据库操作请求执行完毕或返回超时的应用线程。
本发明所达到的有益效果:
(1)本发明在数据库双机同步时不依赖于数据库本身,可自适应于不同的主流数据库,在执行数据库数据迁移等操作时,不需要对数据库进行复杂的操作;
(2)本发明通过同时向主从数据库服务执行线程分发SQL数据块和在数据库故障恢复时实现数据恢复,保证数据库双机同步时数据的一致性和完整性。
附图说明
图1为本发明的数据库双机同步的方法的流程图;
图2为本发明的数据库双机同步的方法的原理框图;
图3为本发明的数据库服务执行线程处理异常情况时的流程示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,本发明的数据库双机同步的方法包括以下步骤:
步骤101:提供应用线程进行数据库操作请求的对外接口;
应用线程进行数据库操作请求的对外接口,包括以下三种可选方式:一是设置数据库操作的完整的SQL语句;二是设置带有占位符的SQL语句和数据串;三是单独设置带有占位符的SQL语句和设置要操作的数据。其中,数据串可以有多条,每条数据串可以有多个字段。每条数据串之间以特定符号分隔,单条数据串中每个字段以不同的特定符号分隔。特定符号主要包括:“@”、“#”、“;”和“,”。
上述数据库操作请求是以结构块构成,结构块中包含要执行的SQL语句和数据,同时结构块中包含一个可以进行同步操作的信号量,通过该信号量来控制数据库请求时的同步操作。
步骤102:创建主、从数据库服务执行线程;
同时创建主、从数据库服务执行线程。数据库服务执行线程在执行数据库操作请求时主要包括两种异常情况,一种是由于数据库服务器故障,导致SQL语句不能正常执行;另一种是由于SQL语句语法有误,导致SQL语句执行异常。其中,数据库服务器故障异常具体包括:数据库连接获取不到,需要将数据库操作请求转换成字符串保存成为本地文件;待数据库连接能够正常获取后,从本地文件中读取保存的数据库操作请求,再进行数据库请求执行。SQL语句语法有误引起的异常具体包括:应用层构建了不能正确执行的SQL语句,需要将该数据请求写入文件并保存到错误SQL目录下,并返回错误执行标志。
步骤103:创建数据库双机同步服务。
本步骤具体包括:将接收到的数据库操作请求分发给主、从数据库服务执行线程;阻塞当前进行数据库操作请求的应用线程;定时查询主、从数据库服务执行线程的执行状态,唤醒数据库操作请求执行完毕或返回超时的应用线程。
本发明的数据库双机同步的方法的原理框图,如图2所示,
应用线程启动一次数据库操作请求时,构造一个SQL数据块,调用数据库对外接口函数exec(),将SQL数据块克隆两份。
数据库双机同步服务将克隆的SQL数据块分别添加到主、从数据库待发送SQL数据块队列,同时将数据库操作请求时传递的SQL数据块添加到未返回SQL数据块Map,启动数据块内部的线程阻塞函数以阻塞当前进行数据库操作请求的应用线程。
主、从数据库服务执行线程分别从主、从数据库待发送SQL数据块队列中读取未执行的SQL数据块,依次执行,将执行完毕的SQL数据块添加到SQL数据块执行完毕队列。
执行状态定时查询线程定时读取SQL数据块执行完毕队列,并唤醒未返回SQL数据块Map中的SQL数据块对应的应用线程。另外执行状态定时查询线程定时检测未返回SQL数据块Map中的SQL数据块的超时状态,返回已经超时的SQL数据块对应的应用线程。
综上所述,本发明中,通过同时向主、从数据库服务器分发SQL数据块和在数据库故障恢复时实现数据恢复,保证了数据库双机同步时数据的一致性和完整性。同时在数据库双机同步时不依赖于数据库本身,可自适应于不同的主流数据库,在执行数据库数据迁移等操作时,无需进行复杂的数据库操作。
本发明数据库服务执行线程处理异常情况时的流程如图3所示,本发明数据库服务执行线程采用以下步骤处理异常情况:
步骤1:数据库服务执行线程定时从本地的异常SQL数据块目录中读取未执行的异常SQL数据块文件到异常SQL数据块队列中,然后依次按照以下子步骤执行异常SQL数据块,
步骤1.1:如果能够获取到数据库连接并且执行成功,则从异常SQL数据块队列中删除该记录,单个SQL数据块处理完成;
步骤1.2:如果能够正常获取到数据库连接但执行失败,则将该SQL数据块存成文件保存到本地错误SQL数据块目录下,并从异常SQL数据块队列中删除该记录,单个SQL数据块处理完成;
步骤1.3:如果不能获取到数据库连接,则不处理异常SQL数据块队列中的SQL数据块。
步骤2:定时把异常SQL数据块队列中的SQL数据块存成文件保存到异常SQL数据块目录下,并清空异常SQL数据块队列中的内容。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (8)
1.一种数据库双机同步的方法,其特征在于,包括以下步骤:
1)提供应用线程进行数据库操作请求的对外接口;
2)创建主、从数据库服务执行线程;
3)创建数据库双机同步服务。
2.根据权利要求1所述的一种数据库双机同步的方法,其特征在于,所述步骤1)中,应用线程进行数据库操作请求的对外接口,包括以下三种可选方式:一是设置数据库操作的完整的SQL语句;二是设置带有占位符的SQL语句和数据串;三是单独设置带有占位符的SQL语句和设置要操作的数据。
3.根据权利要求2所述的一种数据库双机同步的方法,其特征在于,所述数据串有多条,每条数据串有多个字段;每条数据串之间以特定符号分隔,单条数据串中字段之间以不同的特定符号分隔;所述特定符号包括:“@”、“#”、“;”和“,”。
4.根据权利要求2所述的一种数据库双机同步的方法,其特征在于,所述数据库操作请求是以结构块构成,结构块中包含要执行的SQL语句和数据,同时结构块中包含一个进行同步操作的信号量,通过该信号量来控制数据库请求时的同步操作。
5.根据权利要求1所述的一种数据库双机同步的方法,其特征在于,所述步骤2)中,数据库服务执行线程在执行数据库操作请求时存在两种异常情况:一种是由于数据库服务器故障,导致SQL语句不能正常执行;另一种是由于SQL语句语法有误,导致SQL语句执行异常。
6.根据权利要求5所述的一种数据库双机同步的方法,其特征在于,所述数据库服务器故障异常是指,数据库连接获取不到,需要将数据库操作请求转换成字符串保存成为本地文件,待数据库连接能够正常获取后,从本地文件中读取保存的数据库操作请求,再进行数据库请求执行。
7.根据权利要求5所述的一种数据库双机同步的方法,其特征在于,所述SQL语句语法有误引起的异常是指,应用层构建了不能正确执行的SQL语句,需要将该数据请求写入文件并保存到错误SQL目录下,并返回错误执行标志。
8.根据权利要求1所述的一种数据库双机同步的方法,其特征在于,所述步骤3)中,创建数据库双机同步服务,包括:
将接收到的数据库操作请求分发给主、从数据库服务执行线程;
阻塞当前进行数据库操作请求的应用线程;
定时查询主、从数据库服务执行线程的执行状态,唤醒数据库操作请求执行完毕或返回超时的应用线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610312656.6A CN105956139A (zh) | 2016-05-12 | 2016-05-12 | 一种数据库双机同步的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610312656.6A CN105956139A (zh) | 2016-05-12 | 2016-05-12 | 一种数据库双机同步的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105956139A true CN105956139A (zh) | 2016-09-21 |
Family
ID=56912495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610312656.6A Pending CN105956139A (zh) | 2016-05-12 | 2016-05-12 | 一种数据库双机同步的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105956139A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657376A (zh) * | 2017-01-04 | 2017-05-10 | 泰康保险集团股份有限公司 | 数据同步处理方法及装置 |
CN108038163A (zh) * | 2017-12-06 | 2018-05-15 | 交控科技股份有限公司 | 主备控制中心数据库同步系统 |
CN110019500A (zh) * | 2017-08-21 | 2019-07-16 | 东软集团股份有限公司 | 一种复制组状态监控方法、装置、设备及存储介质 |
CN110825767A (zh) * | 2019-11-15 | 2020-02-21 | 江苏满运软件科技有限公司 | 数据查询方法、平台、设备及存储介质 |
CN112650807A (zh) * | 2021-01-04 | 2021-04-13 | 成都知道创宇信息技术有限公司 | 数据存储管理方法、装置、电子设备和可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290015B1 (en) * | 2003-10-02 | 2007-10-30 | Progress Software Corporation | High availability via data services |
CN102013997A (zh) * | 2010-11-22 | 2011-04-13 | 中兴通讯股份有限公司 | 电信网管系统中的双机数据备份方法和系统 |
CN102063502A (zh) * | 2011-01-06 | 2011-05-18 | 天津神舟通用数据技术有限公司 | 实现异构数据库数据同步的方法 |
-
2016
- 2016-05-12 CN CN201610312656.6A patent/CN105956139A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290015B1 (en) * | 2003-10-02 | 2007-10-30 | Progress Software Corporation | High availability via data services |
CN102013997A (zh) * | 2010-11-22 | 2011-04-13 | 中兴通讯股份有限公司 | 电信网管系统中的双机数据备份方法和系统 |
CN102063502A (zh) * | 2011-01-06 | 2011-05-18 | 天津神舟通用数据技术有限公司 | 实现异构数据库数据同步的方法 |
Non-Patent Citations (1)
Title |
---|
薛竹飙: "实时内存数据库关键技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657376A (zh) * | 2017-01-04 | 2017-05-10 | 泰康保险集团股份有限公司 | 数据同步处理方法及装置 |
CN106657376B (zh) * | 2017-01-04 | 2020-08-28 | 泰康保险集团股份有限公司 | 数据同步处理方法及装置 |
CN110019500A (zh) * | 2017-08-21 | 2019-07-16 | 东软集团股份有限公司 | 一种复制组状态监控方法、装置、设备及存储介质 |
CN108038163A (zh) * | 2017-12-06 | 2018-05-15 | 交控科技股份有限公司 | 主备控制中心数据库同步系统 |
CN108038163B (zh) * | 2017-12-06 | 2020-07-31 | 交控科技股份有限公司 | 主备控制中心数据库同步系统 |
CN110825767A (zh) * | 2019-11-15 | 2020-02-21 | 江苏满运软件科技有限公司 | 数据查询方法、平台、设备及存储介质 |
CN112650807A (zh) * | 2021-01-04 | 2021-04-13 | 成都知道创宇信息技术有限公司 | 数据存储管理方法、装置、电子设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105956139A (zh) | 一种数据库双机同步的方法 | |
CN110209726B (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
CN102591964B (zh) | 数据读写分离机制的实现方法和装置 | |
CN107016087B (zh) | 基于哨兵模型的层级数据库高可用系统 | |
CN106776121B (zh) | 一种数据灾备装置、系统及方法 | |
US9515878B2 (en) | Method, medium, and system for configuring a new node in a distributed memory network | |
CN103500229A (zh) | 一种数据库同步方法和数据库系统 | |
CN102681917B (zh) | 一种操作系统及其修复方法 | |
CN101316184B (zh) | 容灾切换方法、系统、装置 | |
CN104615759A (zh) | 一种不同业务系统平台间的数据同步方法 | |
CN102622427A (zh) | 读写分离数据库的方法及系统 | |
CN109189860A (zh) | 一种基于Kubernetes系统的MySQL主备增量同步方法 | |
US20160259837A1 (en) | Database management system and method for controlling synchronization between databases | |
CN103345502B (zh) | 分布式数据库的事务处理方法和系统 | |
CN104679614B (zh) | 一种数据库灾备系统 | |
CN106301938A (zh) | 一种高可用性和强一致性的数据库集群系统及其节点管理方法 | |
CN102609479B (zh) | 一种内存数据库节点复制方法 | |
CN104679841A (zh) | 一种消费端数据流复制方法及系统 | |
CN103399888B (zh) | 电网模型数据的差分同步方法及系统 | |
CN105279285A (zh) | 一种关系型数据库与非关系型数据库的同步系统及方法 | |
CN104021200A (zh) | 一种数据库的数据同步方法和装置 | |
CN109710586B (zh) | 一种集群节点配置文件同步方法及装置 | |
CN103886091A (zh) | 一种基于记录标记的数据库同步方法 | |
CN102916974A (zh) | 集群配置更新方法 | |
CN115794499B (zh) | 一种用于分布式块存储集群间双活复制数据的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160921 |
|
RJ01 | Rejection of invention patent application after publication |