自主内存数据库基于日志的数据持久或双机热备方法

文档序号:7717890阅读:206来源:国知局
专利名称:自主内存数据库基于日志的数据持久或双机热备方法
技术领域
本发明是有关于一种电信行业计费帐务系统,且特别是有关于一种自主内存数据
库基于日志的数据持久或双机热备方法。
背景技术
现有的自主内存数据库产品MDB,不支持数据持久和双机热备,数据的备份(到磁 盘文件)需要通过手工执行备份命令来执行,这种靠人为干预的备份很不安全,在系统系 统崩溃时,极易造成内存中关键数据的丢失。另外一方面,在故障主机尚未恢复期间,业务 被迫中断,给用户造成损失。目前网上可查阅的关于内存数据库双机热备的资料很少。主 流成熟商业内存数据库(如TimeTen, Altibase)等,其实现机制不明,难以借鉴。

发明内容
本发明的目的是提供一种实现简单,效率较高的自主内存数据库基于日志的数据 持久或双机热备方法。 为达上述目的,本发明提供一种自主内存数据库基于日志的数据持久或双机热备 方法,适用于电信行业计费帐务系统。电信行业计费帐务系统包括与客户端进程通信的主 机和备机,主机包括第一MdbServer服务进程、rcvmsg写日志进程和第一内存数据库,第一 MdbServer服务进程通过TCP/IP协议与客户端进程通信,备机包括synfile同步进程、第二 MdbServer服务进程和储存单元。 自主内存数据库基于日志的数据持久或双机热备方法包括下列步骤
(a).将主机内存发生更改的要素记录为一个包; (b).第一 MdbServer服务进程通过消息队列将包发送至守护进程rcvmsg ;
(c).守护进程rcvmsg的最后一个线程将其余线程中的缓存数据保存到日志文件 中; (d).将日志文件由主机传输至备机; (e).在备机中利用守护进程synfile排重接收到的日志文件;
(f).将需要同步的包写入备机的储存单元。 本发明中,其中步骤(d)中是利用通用的ftp程序将日志文件由主机传输到备机。 本发明中,步骤(a)中发生更改的要素如下 发生更改的表空间编码; 发生更改的起始位置; 发生更改的长度; 发生更改的内容; 发生更改的流水号,该流水号必须按照操作的先后顺序,必须连续,不能跳号。
本发明中,其中步骤(e)中是利用守护进程synfile按照流水号的先后顺序在内 存中组织日志文件并进行排重。
3
综上所述,本发明是按照内存数据库更新的相对位置,记录更新内容到日志文件, 再由日志文件按照相对位置同步到备机的磁盘镜像文件或者内存数据库,相对而言,具有 实现简单,效率较高的特点。更简单的说,在主机发生更新时,2个内存数据库(或内存数据 库和磁盘文件)按照物理位置一一对应进行的同步。


图1为电信行业计费帐务系统进行数据持久或双机热备的系统架构图。
图2为自主内存数据库基于日志的数据持久或双机热备方法的流程图。
具体实施例方式
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例, 并配合附图,作详细说明如下。 图1为电信行业计费帐务系统进行数据持久或双机热备的系统架构图。如图1所 示,电信行业计费帐务系统包括分别与客户端进程1通信的A主机2和B主机(备机)3。 A主机2包括第一 MdbServer服务进程21、 rcvmsg写日志进程22、 A内存数据库23。第一 MdbServer服务进程21通过TCP/IP协议与客户端进程1通信。第一 MdbServer服务进程21 通过内存数据库的DIRECT API访问A内存数据库23,第一 MdbServer服务进程21将和A内 存数据库23交互时内存的变化记录为包,通过IPC的消息队列和rcvmsg进行通信,rcvmsg 中有专门的一些线程负责接收这些包到线程的缓存,rcvmsg中最后一个线程负责定时将其 他线程缓存中的信息写入日志文件。B主机3包括synfile同步进程31、第二 MdbServer 服务进程32、储存单元33,其中储存单元33可以是磁盘文件或内存数据库。synfile同步 进程将日志文件载入内存排重后,通过DIRECT API写入储存单元33 (如内存数据库),第二 MdbServer进程32对外提供对于储存单元33 (如内存数据库)的访问接口 ,第二MdbServer 进程32和储存单元33(如内存数据库)之间的交互可以通过内存数据库的DIRECT API来 进行。 图2为自主内存数据库基于日志的数据持久或双机热备方法的流程图。请同时参 考图1至图2,自主内存数据库基于日志的数据持久或双机热备方法包括下列步骤
S101、记录主机内存发生更改的要素为一个包。这里面主要有以下几个要素需要 记录A、发生更改的表空间编码;B、发生更改的起始位置;C、发生更改的长度;D、发生更改 的内容;E :发生更改的流水号,该流水号必须按照操作的先后顺序,必须连续,不能跳号, 以上5个要素记录为一个包。 S103、第一 MdbServer服务进程通过消息队列将包发送至守护进程rcvmsg。为了 提高消息队列的发送效率,系统采用多个消息队列来发送和接收消息,数量可以配置,一般 建议不低于10个。因为本质上消息队列是操作系统来保证各个进程之间的同步的,理想情 况下同一时间读写仅有l个进程在读写某个消息队列,则效率相对要高些。另外,一个操 作,比如插入数据,可能产生多个数据包,因为它是由多个操作组成,比如需要更新控制区 的记录数,需要进行数据区的空间分配和数据写入,需要更新索引区的索引信息等.我们 假设共有3个包需要写入消息队列,写入时将按照1个包写入一个队列的方式循环写入队 列。尽量保证消息队列能够被均衡的利用。A主机有l个守护进程rcvmsg专门负责接收包,该进程是一个多线程的守护进程。线程数=消息队列数+1。消息队列和线程之间是一
对一的关系,线程从消息队列中接受到数据之后,存放在线程内部的缓存中。 S105、守护进程rcvmsg的最后一个线程将其余线程中的缓存数据保存到日志文
件中,保存时按照配置文件中设置的包的数量来写入日志文件24。 S107、将日志文件由主机传输至备机。日志文件由A主机传输到B主机(备机)是通过通用ftp程序(gftp)来完成的。 S109、在备机中利用守护进程synfile重排接收到的日志文件。synfile将按照流水号的先后顺序在内存中组织日志文件34并进行排重。排重的原理大致如下因为包的写入是按照在内存中相对位置而写入的(包中包含了表空间编码,偏移量和长度),并非每个包都需要写入磁盘文件或内存,比如对于同一个表空间,相同的偏移量和长度,有3次更新,只要写入最后一次即可。这样可以有效的降低写入次数,从而提高写入的效率。
Slll、将需要同步的包写入备机的储存单元。如果系统设定为同步到B主机(备机)的磁盘文件,synfile则将需要同步的包内容按照表空间编码,偏移量,长度写入对应磁盘文件对应位置,从而完成数据的同步。如果系统设定为同步到B主机(备机)的内存数据库,synfile则将需要同步的包的内容按照表空间编码+偏移量+长度,调用DIRECTAPI接口写入内存数据库的对应表空间的对应位置,从而完成数据的同步。值得注意的是,系统采用的消息队列系列DIRECT API是UNIX下的符合posix标准的IPC消息队列DIRECTAPI,在主流UNIX系统环境上,具有很好的可移植性,具体的DIRECT API对本领域中具有通常知识的人来说是公知常识,这里不再描述。 在A主机故障,需要切换到B主机(备机)的情况下,需要检查确认 1 :守护进程rcvmsg接受消息进程的写日志目录下已经没有日志文件; 2 :守护进程synfile同步进程的工作目录下的日志文件都已处理完毕。 如果满足了上述两点,则可以将应用切换到B主机(备机)。 测试insert/update/delete 10000条记录,每条记录commit —次
Insert(us)Update(us)Delete(us)
NG(NG即NGBOSS的简称,
为中国移动的业务支撑系806050
统)要求
无数据持久性能113037
MDB性能(带双机热备)263343 由上表可以看出,使用双机热备,性能有一定的下降,但是总体来说能够满足NG对于内存数据库的要求。 综上所述,本发明是按照内存数据库更新的相对位置,记录更新内容到日志文件,再由日志文件按照相对位置同步到备机的磁盘镜像文件或者内存数据库,相对而言,具有实现简单,效率较高的特点。更简单的说,在主机发生更新时,B主机(备机)的内存数据
库或盘镜像文件按照物理位置一一对应进行的同步。
5
本发明中所述具体实施案例仅为本发明的较佳实施案例而已,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应作为本发明的技术范畴。
权利要求
一种自主内存数据库基于日志的数据持久或双机热备方法,适用于电信行业计费帐务系统,电信行业计费帐务系统包括与客户端进程通信的主机和备机,主机包括第一MdbServer服务进程、rcvmsg写日志进程和第一内存数据库,第一MdbServer服务进程通过TCP/IP协议与客户端进程通信,备机包括synfile同步进程、第二MdbServer服务进程和储存单元,其特征在于,双机热备方法包括下列步骤(a).将主机内存发生更改的要素记录为一个包;(b).第一MdbServer服务进程通过消息队列将包发送至守护进程rcvmsg;(c).守护进程rcvmsg的最后一个线程将其余线程中的缓存数据保存到日志文件中;(d).将日志文件由主机传输至备机;(e).在备机中利用守护进程synfile排重接收到的日志文件;(f).将需要同步的包写入备机的储存单元。
2. 根据权利要求1所述的自主内存数据库基于日志的数据持久或双机热备方法,其特 征在于,其中步骤(d)中是利用通用的ftp程序将日志文件由主机传输到备机。
3. 根据权利要求1所述的自主内存数据库基于日志的数据持久或双机热备方法,其特 征在于,步骤(a)中发生更改的要素如下发生更改的表空间编码; 发生更改的起始位置; 发生更改的长度; 发生更改的内容;发生更改的流水号,该流水号必须按照操作的先后顺序,必须连续,不能跳号。
4. 根据权利要求3所述的自主内存数据库基于日志的数据持久或双机热备方法,其特 征在于,其中步骤(e)中是利用守护进程synfile按照流水号的先后顺序在内存中组织日 志文件并进行排重。
5. 根据权利要求3所述的自主内存数据库基于日志的数据持久或双机热备方法,其特 征在于,其中所述操作是存储空间的分配、记录内容的写入、控制区记录总数的写入或索引 区索引信息的插入。
全文摘要
为达上述目的,本发明提供一种自主内存数据库基于日志的数据持久或双机热备方法,适用于电信行业计费帐务系统,包括下列步骤(a)将主机内存发生更改的要素记录为一个包;(b)第一MdbServer服务进程通过消息队列将包发送至守护进程rcvmsg;(c)守护进程rcvmsg的最后一个线程将其余线程中的缓存数据保存到日志文件中;(d)将日志文件由主机传输至备机;(e)在备机中利用守护进程synfile排重接收到的日志文件;(f)将需要同步的包写入备机的储存单元。本发明具有实现简单,效率较高的特点。
文档编号H04L1/22GK101771567SQ20091021267
公开日2010年7月7日 申请日期2009年11月10日 优先权日2009年11月10日
发明者孙力斌, 张家荣, 张有根, 梁斌, 王卫国, 陈勇, 陈忠敏, 陈旻, 高将飞 申请人:南京联创科技集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1