CN106874341B - 一种数据库同步方法 - Google Patents

一种数据库同步方法 Download PDF

Info

Publication number
CN106874341B
CN106874341B CN201611207095.XA CN201611207095A CN106874341B CN 106874341 B CN106874341 B CN 106874341B CN 201611207095 A CN201611207095 A CN 201611207095A CN 106874341 B CN106874341 B CN 106874341B
Authority
CN
China
Prior art keywords
database
database server
write operation
server
data table
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.)
Active
Application number
CN201611207095.XA
Other languages
English (en)
Other versions
CN106874341A (zh
Inventor
吴方才
林殷
安西民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongke Star Map Co ltd
Original Assignee
Zhongke Star Map Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhongke Star Map Co ltd filed Critical Zhongke Star Map Co ltd
Priority to CN201611207095.XA priority Critical patent/CN106874341B/zh
Publication of CN106874341A publication Critical patent/CN106874341A/zh
Application granted granted Critical
Publication of CN106874341B publication Critical patent/CN106874341B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

本发明涉及一种数据库同步方法,该方法由管理服务器提供数据库服务,并在主数据库服务器和副数据库服务器之间同步数据库操作,写操作由主数据库服务器和副数据库服务器依次执行,读操作由管理服务器分配副数据库服务器执行。本发明的方法提高了数据库同步的效率,也提高了数据库操作的执行效率。

Description

一种数据库同步方法
【技术领域】
本发明属于计算机和数据库领域,尤其涉及一种数据库同步方法。
【背景技术】
近年来,随着信息时代中信息量的爆炸,数据库产品已在各个行业得到了广泛的应用,进一步地,随着Internet的日益扩大,网络上各种大规模的数据服务需要应对海量的数据,也需要数据库技术的支撑。
在需要海量数据的应用中,常常需要在多个数据库之间保持同步,从而可以使用多个数据库同时对外提供数据库服务,增大数据吞吐访问量,增强数据可用性,同时也可以应对不可测因素造成的数据丢失,有利于保证数据的可靠性。
现有主流数据库产品一般都具有各自的数据库同步方案,但是,这些数据库同步方案有各自的优点,也有各自的缺点。一般而言,现有技术中的数据库同步方案的一种实现方式是离线同步,在同步时需要暂停源数据库或者目标数据库的使用,从而在一定程度上影响数据库服务;另外一种实现方式虽然无需暂停数据库服务,但是通常只能在两个数据库之间同步,而且数据不一致的风险性较高。
对于现有技术的上述缺点,还没有一种完善的解决方案。
【发明内容】
为了解决现有技术中的上述问题,本发明提出了一种数据库同步方法。
本发明采用的技术方案如下:
一种数据库同步方法,该方法对一个主数据库服务器S0和n个副数据库服务器S1,S2,……,Sn进行数据库同步,由一个管理服务器对上述数据库服务器进行管理,并对外提供数据库服务,该方法包括写操作同步过程和读操作同步过程,其中写操作同步过程如下:
步骤100:在所述管理服务器中为数据库中每一张数据表生成一个写操作锁,该写操作锁的初始值为0;
步骤110:所述管理服务器接受对数据库的操作命令,并按序处理,当处理一个写操作命令时,将该写操作命令所要写的数据表的写操作锁增加1,然后将该写操作命令发送给主数据库服务器S0
步骤120:所述主数据库服务器S0接收到该写操作命令后,执行该写操作命令以修改相应的数据表;
步骤130:所述主数据库服务器S0在执行完该写操作命令后,将被修改的数据表的修改信息发送给副数据库服务器S1
步骤140:副数据库服务器S1根据该修改信息对S1中的相应数据表进行修改,再将该修改信息发送给副数据库服务器S2,S2再根据该修改信息对S2中的相应数据表进行修改,以此类推,直到副数据库服务器Sn也根据该修改信息对Sn中的相应数据表进行修改;
步骤150:所述副数据库服务器Sn向管理服务器发送消息,告知该写操作命令已执行完毕,所述管理服务器将所述数据表的写操作锁减1;
所述读操作同步过程如下:
步骤200:管理服务器在接收到一个读操作命令时,检查该读操作命令涉及的所有数据表的写操作锁,如果有一个写操作锁大于0,则将该读操作命令发送给主数据库服务器S0,由主数据库服务器S0执行该读操作命令,并将执行结果返回给所述管理服务器,读操作同步过程结束,否则执行步骤210;
步骤210:所述管理服务器计算每一台副数据库服务器的繁忙指数,所述繁忙指数用于表明副数据库服务器当前等待处理的数据量;
步骤220:所述管理服务器将该读操作命令发送给繁忙指数最小的副数据库服务器,由该副数据库服务器执行该读操作命令,并将执行结果返回给所述管理服务器。
进一步地,所述对于任意一台副数据库服务器Si(1≤i≤n),其繁忙指数Bi的计算方法如下:
步骤211:所述管理服务器获取Si尚未执行完毕的所有读操作命令,设这些读操作命令共M个,记为C1,C2,……,CM
步骤212:设读操作命令Cj涉及了Aj个数据表(1≤j≤M),该Aj个数据表记为T(j,k),其中1≤k≤Aj;数据表T(j,k)中共有R(j,k)个字段,则繁忙指数Bi
Figure BDA0001190226610000031
其中,Wi是副数据库服务器Si的性能系数。
进一步地,所述性能系数由管理员根据每台副数据库服务器的机器性能预先设置。
进一步地,当数据库中新建一张数据表时,所述管理服务器就为其生成一个写操作锁。
进一步地,所述写操作包括增加数据、删除数据或修改数据。
本发明的有益效果包括:提高了数据库同步的效率,也提高了数据库操作的执行效率。
【附图说明】
此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:
图1是本发明方法所应用的系统结构图。
【具体实施方式】
下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
参见附图1,其示出了本发明所应用的数据库系统环境,在该系统环境中包括一个管理服务器和多个数据库服务器,所述管理服务器是整个数据库系统与外部的接口,外部应用通过该管理服务器获取数据库服务。所述数据库服务器是用于存储数据库的服务器,是数据实际存储的地方,本发明的所述多个数据库服务器上的数据库是同步的,多个同步的数据库同时提供数据库服务,从而可以提供数据库系统的整体效率。所述多个数据库服务器之间,以及管理服务器和数据库服务器之间都通过网络连接。所述网络可以是本地局域网、广域网或者互联网。
本发明的数据库服务器之间是实时同步的,也就是说,数据库服务器在通过管理服务器向外提供数据库服务的同时,实时保持同步。实际上,数据库同步的关键就在于数据修改的同步,即如何对数据库中数据的修改同时传播到每一个数据库服务器。现有技术中的一种做法是将数据库写命令同时发送到每一个数据库服务器,实现数据库服务器的同时修改,但是这种做法降低了数据吞吐率。本发明提出了一种新的同步修改方法,该方法将多个数据库服务器中的一个选择为主数据库服务器,而将其他的数据库服务器作为副数据库服务器,数据的修改首先修改主数据库服务器,再传播到其他副数据库服务器。在这种情况下,各个数据库服务器可以同时提供不同的读数据服务。
为此,本发明的方法实际上将数据库的同步操作分成两类,一类是写操作,一类是读操作。设一个主数据库服务器为S0,n个副数据库服务器为S1,S2,……,Sn,首先对写操作的同步方法详细说明如下:
步骤100:在管理服务器中为数据库中每一张数据表生成一个写操作锁,该写操作锁的初始值为0。
所述写操作锁是用于表明该数据表正在接收写操作,所述写操作包括增加数据、删除数据、修改数据等类型。写操作锁是与数据表一一对应的,当数据库中新建一张数据表时,管理服务器就要为其生成一个写操作锁,并在后续的运行过程中维护该写操作锁。
步骤110:所述管理服务器接受对数据库的操作命令,并按序处理,当处理一个写操作命令时,将该写操作命令所要写的数据表的写操作锁增加1,然后将该写操作命令发送给主数据库服务器S0
所述管理服务器是整个数据库系统的操作接口,因此所有的数据库操作命令都会发给所述管理服务器进行处理,管理服务器按照接收命令的顺序对所述操作命令进行处理。
当管理服务器将写操作锁增加1时,就意味着相应的数据表正在被修改,后续的读操作命令应该进行相应的处理(对读操作命令的处理方法在后面说明)。由于每个写操作命令都会增加写操作锁,所以写操作锁的值就意味着当前对该数据表有几个写操作命令正在执行,因而这个值也可以用于数据库系统当前状态的分析。
步骤120:所述主数据库服务器S0接收到该写操作命令后,执行该写操作命令以修改相应的数据表。
步骤130:所述主数据库服务器S0在执行完该写操作命令后,将被修改的数据表的修改信息发送给副数据库服务器S1
在许多情况下,写操作命令可能比较复杂,如果每个数据库服务器都执行该写操作命令会导致浪费计算资源和时间,因而本发明在主数据库服务器执行完写操作命令后,并不简单地传播该写操作命令,而是直接将被修改的数据表的相关修改信息传播到下一个数据库,这样后面需要同步的n个副数据库服务器,只需要根据该修改信息直接修改该数据表,而无需再执行一遍该写操作命令。
步骤140:副数据库服务器S1根据该修改信息对S1中的相应数据表进行修改,再将该修改信息发送给副数据库服务器S2,S2再根据该修改信息对S2中的相应数据表进行修改,以此类推,直到副数据库服务器Sn也根据该修改信息对Sn中的相应数据表进行修改。
上述步骤140的过程是一个链式同步的过程,从主数据库服务器S0开始,一直到Sn结束,完成了写操作的同步,同一时刻只有一个数据库服务器在修改该数据表,其他数据库可以继续进行其他数据库操作。
步骤150:所述副数据库服务器Sn向管理服务器发送消息,告知该写操作命令已执行完毕,所述管理服务器将所述数据表的写操作锁减1。
以上是写操作的同步过程,下面对读操作命令的同步过程进行说明:
步骤200:管理服务器在接收到一个读操作命令时,检查该命令涉及的所有数据表的写操作锁,如果有一个写操作锁大于0,则将该读操作命令发送给主数据库服务器S0,由主数据库服务器S0执行该读操作命令,并将执行结果返回给所述管理服务器,方法结束,否则执行步骤210。
从上述写操作同步过程可以看出,当写操作锁大于0时,意味着对该数据表的修改正在同步过程中,此时只有主数据库服务器的数据表肯定是最新的,因此由主数据库服务器执行该命令。
步骤210:所述管理服务器计算每一台副数据库服务器的繁忙指数,所述繁忙指数用于表明副数据库服务器当前等待处理的数据量。
步骤220:所述管理服务器将该读操作命令发送给繁忙指数最小的副数据库服务器,由该副数据库服务器执行该读操作命令,并将执行结果返回给所述管理服务器。
副数据库服务器根据管理服务器发送来的读操作命令,进行数据库的查询操作(即读操作),不同的读操作命令可以并行执行,也可以串行执行,这取决于具体数据库的设计,本发明对此不作限制。
上述繁忙指数实质上代表了副数据库服务器的繁忙程度,本领域技术人员在本发明的基础上,可以设计不同的繁忙指数计算方法,本发明对此不作限制。但是为了更好地说明,本发明下面给出了一个优选的计算方法,对于任意一台副数据库服务器Si(1≤i≤n),其繁忙指数Bi的计算方法如下:
步骤211:所述管理服务器获取Si尚未执行完毕的所有读操作命令,设这些读操作命令共M个,记为C1,C2,……,CM
根据上述步骤200-220可知,所有读操作命令是由管理服务器分配下去的,并且管理服务器接收读操作命令的执行结果,因此管理服务器知道每个副数据库服务器被分配的读操作命令,也知道哪些读操作命令已经执行完毕,哪些尚未执行完毕。
步骤212:设读操作命令Cj涉及了Aj个数据表(1≤j≤M),该Aj个数据表记为T(j,k),其中1≤k≤Aj;数据表T(j,k)中共有R(j,k)个字段,则繁忙指数Bi
Figure BDA0001190226610000081
其中,Wi是副数据库服务器Si的性能系数,其由管理员根据每台副数据库服务器的机器性能预先设置。
以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

Claims (5)

1.一种数据库同步方法,其特征在于,该方法对一个主数据库服务器S0和n个副数据库服务器S1,S2,……,Sn进行数据库同步,由一个管理服务器对上述数据库服务器进行管理,并对外提供数据库服务,该方法包括写操作同步过程和读操作同步过程,其中写操作同步过程如下:
步骤100:在所述管理服务器中为数据库中每一张数据表生成一个写操作锁,该写操作锁的初始值为0;
步骤110:所述管理服务器接受对数据库的操作命令,并按序处理,当处理一个写操作命令时,将该写操作命令所要写的数据表的写操作锁增加1,然后将该写操作命令发送给主数据库服务器S0
步骤120:所述主数据库服务器S0接收到该写操作命令后,执行该写操作命令以修改相应的数据表;
步骤130:所述主数据库服务器S0在执行完该写操作命令后,将被修改的数据表的修改信息发送给副数据库服务器S1
步骤140:副数据库服务器S1根据该修改信息对S1中的相应数据表进行修改,再将该修改信息发送给副数据库服务器S2,S2再根据该修改信息对S2中的相应数据表进行修改,以此类推,直到副数据库服务器Sn也根据该修改信息对Sn中的相应数据表进行修改;
步骤150:所述副数据库服务器Sn向管理服务器发送消息,告知该写操作命令已执行完毕,所述管理服务器将所述数据表的写操作锁减1;
所述读操作同步过程如下:
步骤200:管理服务器在接收到一个读操作命令时,检查该读操作命令涉及的所有数据表的写操作锁,如果有一个写操作锁大于0,则将该读操作命令发送给主数据库服务器S0,由主数据库服务器S0执行该读操作命令,并将执行结果返回给所述管理服务器,读操作同步过程结束,否则执行步骤210;
步骤210:所述管理服务器计算每一台副数据库服务器的繁忙指数,所述繁忙指数用于表明副数据库服务器当前等待处理的数据量;
步骤220:所述管理服务器将该读操作命令发送给繁忙指数最小的副数据库服务器,由该副数据库服务器执行该读操作命令,并将执行结果返回给所述管理服务器。
2.根据权利要求1所述的数据库同步方法,其特征在于,对于任意一台副数据库服务器Si(1≤i≤n),其繁忙指数Bi的计算方法如下:
步骤211:所述管理服务器获取Si尚未执行完毕的所有读操作命令,设这些读操作命令共M个,记为C1,C2,……,CM
步骤212:设读操作命令Cj涉及了Aj个数据表(1≤j≤M),该Aj个数据表记为T(j,k),其中1≤k≤Aj;数据表T(j,k)中共有R(j,k)个字段,则繁忙指数Bi
Figure FDA0003455272140000021
其中,Wi是副数据库服务器Si的性能系数。
3.根据权利要求2所述的数据库同步方法,其特征在于,所述性能系数由管理员根据每台副数据库服务器的机器性能预先设置。
4.根据权利要求1-3任意一项所述的数据库同步方法,其特征在于,当数据库中新建一张数据表时,所述管理服务器就为其生成一个写操作锁。
5.根据权利要求4所述的数据库同步方法,其特征在于,所述写操作包括增加数据、删除数据或修改数据。
CN201611207095.XA 2016-12-23 2016-12-23 一种数据库同步方法 Active CN106874341B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611207095.XA CN106874341B (zh) 2016-12-23 2016-12-23 一种数据库同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611207095.XA CN106874341B (zh) 2016-12-23 2016-12-23 一种数据库同步方法

Publications (2)

Publication Number Publication Date
CN106874341A CN106874341A (zh) 2017-06-20
CN106874341B true CN106874341B (zh) 2022-04-05

Family

ID=59164864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611207095.XA Active CN106874341B (zh) 2016-12-23 2016-12-23 一种数据库同步方法

Country Status (1)

Country Link
CN (1) CN106874341B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110766371A (zh) * 2018-07-27 2020-02-07 视联动力信息技术股份有限公司 一种办公自动化的数据同步方法和系统
CN109753511B (zh) * 2018-12-28 2020-12-04 北京东方国信科技股份有限公司 一种大数据平台的跨地域实时同步方法及系统
CN111858744A (zh) * 2019-04-29 2020-10-30 北京嘀嘀无限科技发展有限公司 数据库数据同步方法、服务器及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183377A (zh) * 2007-12-10 2008-05-21 华中科技大学 一种基于消息中间件的高可用性数据库集群
CN101901237A (zh) * 2009-12-04 2010-12-01 四川川大智胜软件股份有限公司 一种基于SQlite构建的类型-索引-内容方式分布式数据库
CN102843264A (zh) * 2012-09-21 2012-12-26 中国航空无线电电子研究所 高速串行总线网络中双主机的控制方法
CN103729204A (zh) * 2012-10-16 2014-04-16 阿里巴巴集团控股有限公司 一种网络平台中应用更新的数据在线迁移方法和装置
CN103885986A (zh) * 2012-12-21 2014-06-25 阿里巴巴集团控股有限公司 主备数据库同步的方法和装置
CN103902548A (zh) * 2012-12-25 2014-07-02 航天信息股份有限公司 一种访问数据库的系统和方法及注册、订票、网购系统
CN104239418A (zh) * 2014-08-19 2014-12-24 天津南大通用数据技术股份有限公司 支持分布式数据库的分布锁方法以及分布式数据库系统
CN105808556A (zh) * 2014-12-29 2016-07-27 深圳云之家网络有限公司 一种数据库的操作方法及数据库引擎
US9514160B2 (en) * 2013-03-11 2016-12-06 Oracle International Corporation Automatic recovery of a failed standby database in a cluster

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9858309B2 (en) * 2014-10-07 2018-01-02 Sap Se Managing write accesses during database upgrade procedure
US9990392B2 (en) * 2015-04-07 2018-06-05 Sap Se Distributed transaction processing in MPP databases

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183377A (zh) * 2007-12-10 2008-05-21 华中科技大学 一种基于消息中间件的高可用性数据库集群
CN101901237A (zh) * 2009-12-04 2010-12-01 四川川大智胜软件股份有限公司 一种基于SQlite构建的类型-索引-内容方式分布式数据库
CN102843264A (zh) * 2012-09-21 2012-12-26 中国航空无线电电子研究所 高速串行总线网络中双主机的控制方法
CN103729204A (zh) * 2012-10-16 2014-04-16 阿里巴巴集团控股有限公司 一种网络平台中应用更新的数据在线迁移方法和装置
CN103885986A (zh) * 2012-12-21 2014-06-25 阿里巴巴集团控股有限公司 主备数据库同步的方法和装置
CN103902548A (zh) * 2012-12-25 2014-07-02 航天信息股份有限公司 一种访问数据库的系统和方法及注册、订票、网购系统
US9514160B2 (en) * 2013-03-11 2016-12-06 Oracle International Corporation Automatic recovery of a failed standby database in a cluster
CN104239418A (zh) * 2014-08-19 2014-12-24 天津南大通用数据技术股份有限公司 支持分布式数据库的分布锁方法以及分布式数据库系统
CN105808556A (zh) * 2014-12-29 2016-07-27 深圳云之家网络有限公司 一种数据库的操作方法及数据库引擎

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
分布式数据库复制方法探讨;舒后等;《计算机应用》;20031230;149-150,152 *

Also Published As

Publication number Publication date
CN106874341A (zh) 2017-06-20

Similar Documents

Publication Publication Date Title
EP3120261B1 (en) Dependency-aware transaction batching for data replication
CN109684307A (zh) 一种数据存储方法、装置、设备及存储介质
CN110147407B (zh) 一种数据处理方法、装置及数据库管理服务器
CN107729553A (zh) 系统数据对账方法及装置、存储介质、电子设备
US20120036146A1 (en) Apparatus for elastic database processing with heterogeneous data
CN106874341B (zh) 一种数据库同步方法
CN109710190A (zh) 一种数据存储方法、装置、设备及存储介质
US11294934B2 (en) Command processing method and server
CN105516284B (zh) 一种集群数据库分布式存储的方法和装置
CN105988862A (zh) 分布式事务处理方法及装置
US9483493B2 (en) Method and system for accessing a distributed file system
CN110837505B (zh) 状态数据存储方法、状态数据同步方法、设备和存储介质
CN107729176A (zh) 一种配置文件管理系统的容灾方法及容灾系统
CN109144785A (zh) 用于备份数据的方法和装置
CN108139927B (zh) 联机事务处理系统中事务的基于动作的路由
EP3713195B1 (en) Log processing method, related device, and system
CN110019231A (zh) 一种并行数据库动态关联的方法及节点
US20160124955A1 (en) Dual overlay query processing
US9043283B2 (en) Opportunistic database duplex operations
US10691669B2 (en) Big-data processing method and apparatus
WO2016101759A1 (zh) 一种数据路由方法、数据管理装置和分布式存储系统
CN113672641A (zh) 数据库集群数据处理方法、装置、系统、介质和电子设备
US11048547B2 (en) Method and system for routing and executing transactions
CN111767126A (zh) 分布式批量处理的系统和方法
JP2022136234A (ja) 連合学習方法及び装置、電子機器、記憶媒体ならびにコンピュータプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: 101399 No. 2 East Airport Road, Shunyi Airport Economic Core Area, Beijing (1st, 5th and 7th floors of Industrial Park 1A-4)

Applicant after: Zhongke Star Map Co., Ltd.

Address before: 101399 Building 1A-4, National Geographic Information Technology Industrial Park, Guomen Business District, Shunyi District, Beijing

Applicant before: Space Star Technology (Beijing) Co., Ltd.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant