CN102609479A - 一种内存数据库节点复制方法 - Google Patents
一种内存数据库节点复制方法 Download PDFInfo
- Publication number
- CN102609479A CN102609479A CN2012100178217A CN201210017821A CN102609479A CN 102609479 A CN102609479 A CN 102609479A CN 2012100178217 A CN2012100178217 A CN 2012100178217A CN 201210017821 A CN201210017821 A CN 201210017821A CN 102609479 A CN102609479 A CN 102609479A
- Authority
- CN
- China
- Prior art keywords
- node
- memory database
- host node
- host
- slave
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种内存数据库节点复制方法,包括以下步骤:主节点等待其他节点的连接请求;备节点申请连接主节点,并发送需要复制的表的表名;主节点扫描本节点的REDO日志文件,根据接收的表名生成包括待复制表的增量数据包,并发送给备节点;备节点接收到需要的数据后,在本节点的内存数据库中逐条写入,成功后,将成功标志发送给主节点;主节点收到成功标志后,记录本次扫描REDO日志文件的截止位置,以便于下次扫描时,从此位置接续。本发明采用备节点主动申请、主节点被动发送的的方式,将主节点的REDO日志实时发送到各个备节点上,实现内存数据库多节点复制。因此,既节省了资源,又能快速高效的实现内存数据库的复制。
Description
技术领域
本发明涉及一种内存数据库领域,更具体的说,涉及一种内存数据库复制方法,用于解决多个内存数据库之间数据一致性的问题。
背景技术
随着电信业不断的发展,业务扩展越来越广,各种新业务层出不穷,数据量也越来越大,对数据访问的不间断要求也越来越高。大量的用户资料数据、用户消费数据都需要存放在内存数据库中,但是由于内存的非持久性,一旦内存数据库进程或者所在主机发生异常停止,内存中的数据就将全部丢失,直接导致应用程序无法继续进行访问。如何确保一个内存数据库节点损坏,另一个节点能够快速接管,成为内存数据库安全的关键技术。
目前,内存数据库之间的数据保持一致的方式一般有两种:一是完全同步方式,二是SQL语句重做方式。
对于完全同步方式,当应用程序修改主节点数据时,同时通过网络去修改其他节点的内存数据库数据,当两者都操作成功后,再返回操作成功的标志。此种方式虽然能够保证两个节点之间的数据能够完全一致,但由于需要同时操作两个节点,使得访问效率大打折扣,无法发挥内存数据库访问速度快的优势。另外,随着需要同步的节点的增加,访问速度也会急剧下降。
对于SQL语句重做的方式,应用程序修改主节点数据时,同时将SQL操作写入日志文件。通过单独的复制程序,实时读取日志文件,将SQL语句通过网络发送到其他节点并执行,此种方式虽然不会影响应用访问内存数据库主节点的速度,但复制进程需要重新解析SQL语句, 并重新在内存中查找需要操作的记录,在数据量巨大的电信业务系统中,难以在短时间内将变化的数据复制到其他节点的内存中。
因此,需要提出一种既能节省资源,又能快速高效的实现内存数据库复制的方法。
发明内容
为了实现多个内存数据库之间数据的实时同步,本发明提出一种内存数据库节点复制方法。
该方法包括如下步骤:
步骤1:主节点等待其他节点的连接请求;
步骤2:备节点申请连接主节点,并发送需要复制的表的表名;
步骤3:主节点扫描本节点的REDO日志文件,根据接收的表名挑选出需要发送的数据生成包括待复制表的增量数据包,通过Socket批量发送给备节点;
步骤4:备节点接收到需要的数据后,在本节点的内存数据库中逐条写入,成功后,将成功标志发送给主节点;
步骤5:主节点收到成功标志后,记录本次扫描REDO日志文件的截止位置,以便于下次扫描时,从此位置接续。
本发明的有益效果是: 备节点在向主节点申请数据时,需要向主节点发送需要复制的表的表名,这样可以根据实际需要选择需要复制的表,不需要复制的表则不用发送,从而节省相关资源。另外,由于各节点之间直接通过REDO日志进行数据复制,REDO日志中含有每条记录的内存坐标,备节点可以直接根据内存坐标值在内存中定位对应的记录,快速完成修改操作。
进一步,REDO日志中每条记录中存放的是当前每个字段的值,即使之前主节点和备节点之间的记录由于某种原因已经不一致了,经过REDO日志的复制之后,备节点会立即将对应记录的值改成和主节点一致的数据,从而确保备节点的数据时刻和主节点保持一致。
附图说明
图1为本发明的内存数据库节点复制方式的流程图。
图2为本发明的备节点的接收线程流程图。
图3为本发明作为数据源的主节点的发送线程流程图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明的内存数据库节点复制方法,如图1所示,包括如下步骤:
步骤1:主节点等待其他节点的连接请求,例如打开socket接口,启动监听服务;
步骤2:备节点申请连接主节点,并发送需要复制的表的表名;
步骤3:主节点扫描本节点的REDO日志文件,根据接收的表名挑选出需要发送的数据,生成待复制表的增量数据包,通过Socket批量发送给备节点;
步骤4:备节点从端口读取接收到的数据后,在本节点的内存数据库中按顺序写入,成功后,将成功标志发送给主节点;
步骤5:主节点收到成功标志后,记录本次扫描REDO日志文件的截止位置,以便于下次扫描时,从此位置接续。
其中备节点向主节点发送需要复制的表名列表,该列表中可以同时包含多个表名,如:“bbb;mytest”,多个表名之间可以用“;”分隔。主节点接收到此列表之后,先保留在临时变量中,然后实时去读取REDO日志,REDO日志中每条记录中都含有表名信息,主节点读出此表名,然后判断是否需要复制,如果需要,则发送相应的数据给备节点,否则就继续读取下一条表名。备节点收到数据之后,根据操作标志,在对应表的对应记录上做修改操作,实现数据的复制。
在内存数据库节点复制中,当申请数据复制后,备节点启动接收线程,其流程图如图2所示:
备节点连接到数据源主节点,如果未连接上数据源主节点,则在休眠指定时间后,继续连接;如果连接到数据源主节点,则从端口读取数据源主节点发送的数据,并逐条写入本机内存数据库;判断是否写入成功,如果写入成功,则向主节点发送成功标志,如果写入不成功,则断开连接,并在休眠指定时间后,重新执行上述所有步骤。
在内存数据库节点复制中,作为数据源的主节点,启动接收线程,其流程图如图3所示:
主节点打开socket接口,启动监听服务,等待申请者的连接;当接收申请者的连接请求后,根据REDO日志生成包括待复制表的增量数据包并发送;接收来自申请者的接收处理成功标志;如果增量数据已全部发送完毕,记录对应的文件位置,休眠指定时间,该指定时间例如可以是1秒,之后,重新执行上述所有步骤。
以下为采用本发明方法的配置文件信息,本文件配置的是进程运行时使用的基本信息,采用INI文件格式。
[DRS_INFO]
DR_PORT = 12001 #本机作为数据源时开放的监听端口号
[DRS01] #复制的数据源
HOST = 192.168.0.2:12001
TAB = bbb;mytest #需要复制的表,分号分隔
如果多个节点的“HOST”配置都指向同一个值,则会实现一个节点向多个节点复制。也就是说,如果备节点为多个时,多个备节点连接同一个主节点,主节点能够为每个请求数据的备节点创建独立的复制线程,从而实现内存数据库的多节点复制。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种内存数据库节点复制方法,包括:
步骤1:主节点等待其他节点的连接请求;
步骤2:备节点申请连接主节点,并发送需要复制的表的表名;
步骤3:主节点扫描本节点的REDO日志文件,根据接收的表名挑选出需要发送的数据生成包括待复制表的增量数据包,通过Socket批量发送给备节点;
步骤4:备节点接收到需要的数据后,在本节点的内存数据库中逐条写入,成功后,将成功标志发送给主节点;
步骤5:主节点收到成功标志后,记录本次扫描REDO日志文件的截止位置,以便于下次扫描时,从此位置接续。
2.根据权利要求1所述的内存数据库节点复制方法,其特征在于:在步骤1中主节点提供监听服务,等待其他其他节点请求数据。
3.根据权利要求1所述的内存数据库节点复制方法,其特征在于:复制是以表为单位的,仅对指定的表进行复制。
4.根据权利要求1所述的内存数据库节点复制方法,其特征在于:REDO日志中含有每条记录的内存坐标,备节点直接根据内存坐标值在内存中定位对应的记录,快速完成写入操作。
5.根据权利要求1所述的内存数据库节点复制方法,其特征在于:备节点为多个,多个备节点连接同一个主节点,主节点为每个请求数据的备节点创建独立的复制线程,从而实现内存数据库的多节点复制。
6.根据权利要求1所述的内存数据库节点复制方法,其特征在于:在步骤2中,备节点能够一次同时向主节点发送N个需要复制的表名列表,N≥2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210017821.7A CN102609479B (zh) | 2012-01-20 | 2012-01-20 | 一种内存数据库节点复制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210017821.7A CN102609479B (zh) | 2012-01-20 | 2012-01-20 | 一种内存数据库节点复制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609479A true CN102609479A (zh) | 2012-07-25 |
CN102609479B CN102609479B (zh) | 2015-11-25 |
Family
ID=46526851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210017821.7A Active CN102609479B (zh) | 2012-01-20 | 2012-01-20 | 一种内存数据库节点复制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609479B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678718A (zh) * | 2013-12-31 | 2014-03-26 | 金蝶软件(中国)有限公司 | 数据库同步方法及系统 |
CN103793182A (zh) * | 2012-09-04 | 2014-05-14 | Lsi公司 | 可扩展存储保护 |
CN104283719A (zh) * | 2014-10-28 | 2015-01-14 | 北京国双科技有限公司 | 一种日志的处理方法、装置及服务器 |
CN104346373A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN106294713A (zh) * | 2016-08-09 | 2017-01-04 | 深圳中兴网信科技有限公司 | 基于增量日志解析的数据同步方法和数据同步装置 |
CN108881452A (zh) * | 2018-06-27 | 2018-11-23 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
CN110196793A (zh) * | 2019-04-30 | 2019-09-03 | 武汉达梦数据库有限公司 | 针对插件数据库的日志分析方法及设备 |
CN110737716A (zh) * | 2018-07-02 | 2020-01-31 | 华为技术有限公司 | 一种数据写入的方法和装置 |
CN112783980A (zh) * | 2021-02-01 | 2021-05-11 | 北京百度网讯科技有限公司 | 数据同步处理方法、装置、电子设备以及计算机可读介质 |
CN113296683A (zh) * | 2020-04-07 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置、服务器和存储介质 |
US11921746B2 (en) | 2019-05-05 | 2024-03-05 | Tencent Technology (Shenzhen) Company Limited | Data replication method and apparatus, computer device, and storage medium |
WO2024178935A1 (zh) * | 2023-02-28 | 2024-09-06 | 华为技术有限公司 | 日志同步方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1477546A (zh) * | 2002-08-19 | 2004-02-25 | 万达信息股份有限公司 | 一种在两个数据库间进行相同数据表数据复制的方法 |
CN101714169A (zh) * | 2009-12-01 | 2010-05-26 | 广州从兴电子开发有限公司 | 一种在多节点上传递数据方法及系统 |
-
2012
- 2012-01-20 CN CN201210017821.7A patent/CN102609479B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1477546A (zh) * | 2002-08-19 | 2004-02-25 | 万达信息股份有限公司 | 一种在两个数据库间进行相同数据表数据复制的方法 |
CN101714169A (zh) * | 2009-12-01 | 2010-05-26 | 广州从兴电子开发有限公司 | 一种在多节点上传递数据方法及系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191676B2 (en) | 2012-09-04 | 2019-01-29 | Seagate Technology Llc | Scalable storage protection |
CN103793182A (zh) * | 2012-09-04 | 2014-05-14 | Lsi公司 | 可扩展存储保护 |
US9613656B2 (en) | 2012-09-04 | 2017-04-04 | Seagate Technology Llc | Scalable storage protection |
CN104346373A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN104346373B (zh) * | 2013-07-31 | 2017-12-15 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN103678718A (zh) * | 2013-12-31 | 2014-03-26 | 金蝶软件(中国)有限公司 | 数据库同步方法及系统 |
CN104283719A (zh) * | 2014-10-28 | 2015-01-14 | 北京国双科技有限公司 | 一种日志的处理方法、装置及服务器 |
CN106294713A (zh) * | 2016-08-09 | 2017-01-04 | 深圳中兴网信科技有限公司 | 基于增量日志解析的数据同步方法和数据同步装置 |
CN108881452A (zh) * | 2018-06-27 | 2018-11-23 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
CN108881452B (zh) * | 2018-06-27 | 2021-11-16 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
CN110737716A (zh) * | 2018-07-02 | 2020-01-31 | 华为技术有限公司 | 一种数据写入的方法和装置 |
CN110196793A (zh) * | 2019-04-30 | 2019-09-03 | 武汉达梦数据库有限公司 | 针对插件数据库的日志分析方法及设备 |
US11921746B2 (en) | 2019-05-05 | 2024-03-05 | Tencent Technology (Shenzhen) Company Limited | Data replication method and apparatus, computer device, and storage medium |
CN113296683A (zh) * | 2020-04-07 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置、服务器和存储介质 |
CN112783980A (zh) * | 2021-02-01 | 2021-05-11 | 北京百度网讯科技有限公司 | 数据同步处理方法、装置、电子设备以及计算机可读介质 |
CN112783980B (zh) * | 2021-02-01 | 2024-05-10 | 北京百度网讯科技有限公司 | 数据同步处理方法、装置、电子设备以及计算机可读介质 |
WO2024178935A1 (zh) * | 2023-02-28 | 2024-09-06 | 华为技术有限公司 | 日志同步方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102609479B (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609479A (zh) | 一种内存数据库节点复制方法 | |
CN101068156B (zh) | 数据同步时冲突处理方法及冲突处理服务器 | |
CN101741911B (zh) | 基于多副本协同的写操作方法、系统及节点 | |
CN103051681B (zh) | 一种面向分布式文件系统的协作式日志系统 | |
CN110309218B (zh) | 一种数据交换系统和数据写入方法 | |
CN101102577B (zh) | 无线通信基站系统前后台数据库表数据增量同步方法 | |
CN110392120B (zh) | 一种消息推送过程中故障的恢复方法及装置 | |
CN110209726A (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
CN106685691A (zh) | 物联网系统中终端设备的高效更新配置方法及系统 | |
CN105975579B (zh) | 一种内存数据库的主备复制方法及内存数据库系统 | |
CN104820701A (zh) | 数据记录和同步方法及系统 | |
CN103902405B (zh) | 一种准连续性数据复制方法及装置 | |
CN103164523A (zh) | 数据一致性检查方法、装置及系统 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN100485628C (zh) | 一种升级过程中数据同步的方法 | |
CN103139157A (zh) | 一种基于socket的网络通信方法、装置及系统 | |
CN109992219A (zh) | 分布式存储方法、装置、设备及计算机可读存储介质 | |
CN101551822B (zh) | 一种数据库复制方法和装置 | |
CN107870982A (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN100426812C (zh) | 一种基于分组数据业务流程的仿真系统 | |
CN110417892B (zh) | 基于报文解析的数据复制链路优化方法及装置 | |
CN105812492A (zh) | 一种数据同步方法及系统 | |
CN106557530B (zh) | 业务系统、数据修复方法及装置 | |
CN113839875B (zh) | 一种堆叠系统中mac地址的同步方法、装置、设备及介质 | |
CN105743669A (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 | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: 100085 Haidian District, Zhongguancun, South Street, No. 6,, building information, floor, No. 16 Applicant after: SI-TECH Information Technology Ltd. Address before: 100085 Haidian District, Zhongguancun, South Street, No. 6,, building information, floor, No. 16 Applicant before: Beijing Digital China SI-TECH Information Technology Co., Ltd. |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY LTD. TO: BEIJING SI-TECH INFORMATION TECHNOLOGY LTD. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |