主备板的数据库双向同步方法和系统的制作方法
【专利摘要】本发明提供一种主备板的数据库双向同步方法,包括如下步骤:根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据;检测主备板的运行状态;若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复。本发明还提供对应的系统,能在主备板重启或异常宕机时,保证主备板数据库保持同步状态。
【专利说明】主备板的数据库双向同步方法和系统
【技术领域】
[0001]本发明涉及数据库同步【技术领域】,特别是涉及一种主备板的数据库双向同步方法,以及一种主备板的数据库双向同步系统。
【背景技术】
[0002]在网关的HA (High Availability,高可靠性)切换过程中,主备板的数据库数据同步是必不可少的一步。Mysql数据库因其高性能、稳定可靠和免费开源,被广泛用于中小型项目的数据载体。Mysql自身带有数据库复制功能,即数据库同步功能,具体原理如图1。简单来说,Mysql数据库的同步是通过日志来进行的,备板获取主机的日志,然后在本端解析执行,来完成数据同步。
[0003]Mysql自带的同步功能在正常情况下工作良好,但是一旦涉及到板卡系统重启或者掉电,同步就会产生不可预知的异常,这部分异常产生的主要源于对数据库的操作日志没办法即时写入磁盘和网络传输过程中的丢失。另外在异常宕机时,甚至可能产生数据库崩溃的严重情况,而网关HA切换过程,就经常涉及到掉电重启等情况。
[0004]在互为主/备(master/slave)的两个数据库之间。slave上mysql的同步工作有两个线程I/O thread和SQL thread, I/O线程的作用是从master的3306端口(Mysql默认端口)把它的binlog取过来(master在被修改了任何内容后,就会把修改了什么写到自己的binlog等待slave更新),然后写到本地的relay-log上;而SQL线程则是去读本地的relay-log,再转换成本mysql所能理解的语句,于是同步就这样一步步完成。
[0005]正常情况下,配置过Mysql双向同步后,能够按照上面的描述工作,双主的两台机A,B能够同步所有对数据库的操作。这里有一点需要注意,对于数据库自增的主键,需要在配置里面添加配置避免主键冲突。
[0006]但是在系统宕机、重启、或者掉电时,应用程序对数据库的操作的日志很可能没那么即时的刷写到磁盘上去,导致这部分数据没法同步到对端数据库中;而且传输中的数据也可能丢失。
【发明内容】
[0007]基于此,本发明提供一种主备板的数据库双向同步方法和系统,能在主备板运行异常时,保证主备板数据库保持同步状态。
[0008]一种主备板的数据库双向同步方法,包括如下步骤:
[0009]根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据;
[0010]检测主备板是否重启过;
[0011]若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复。
[0012]一种主备板的数据库双向同步系统,包括:
[0013]备份模块,用于根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据;[0014]检测模块,用于检测主备板是否重启过;
[0015]恢复模块,用于若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复。
[0016]上述主备板的数据库双向同步方法和系统,根据主备板的工作状态,可设定在网关较为空闲的时候分别对主备板的数据库进行备份,如果板卡同时重启并且重启后数据库服务都不正常,则通过备份的数据进行恢复,保证在主备板同时运行异常时仍能保持数据同步;本发明实现过程简单,能良好的保证数据库同步状态正确,解决了主备板运行异常时的数据同步难题。
【专利附图】
【附图说明】
[0017]图1为传统技术数据库同步的示意图。
[0018]图2为本发明主备板的数据库双向同步方法在一实施例中的流程示意图。
[0019]图3为本发明主备板的数据库双向同步方法在一实施例中的逻辑框图。
[0020]图4为本发明主备板的数据库双向同步系统在一实施例中的结构示意图。
【具体实施方式】
[0021]下面结合实施例及附图对本发明作进一步详细说明,但本发明的实施方式不限于此。
[0022]如图2所示,是本发明一种主备板的数据库双向同步方法,包括如下步骤:
[0023]S21、根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据;
[0024]在本步骤中,可根据主备板的工作状态,设定在网关较为空闲的时候分别对主备板的数据库进行备份;或者也可设定更为频繁的备份方式,如每小时进行一次数据库备份;如果板卡同时重启并且重启后数据库服务都不正常,则通过备份的数据进行恢复;主备板备份的数据分别存储在各自对应的数据库中。
[0025]S22、检测主备板的运行状态;
[0026]S23、若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复;
[0027]板卡系统若重启或者掉电,数据库双向同步就会产生不可预知的异常,这部分异常产生的原因主要源于对数据库的操作日志没办法即时写入磁盘和网络传输过程中的丢失。另外在异常宕机时,甚至可能产生数据库崩溃的严重情况,而网关HA切换过程,就经常涉及到掉电重启等情况;
[0028]在本实施例中,循环检测主备板的运行状态,当主板与备板都重启过时,由于两板同时重启或者被整机断电过,因此无法预知哪一个板卡的数据是正确的,因此两板同时宕机时,以备份的数据分别对各自的数据库进行数据恢复,保证主备板数据同步。
[0029]在一较佳实施例中,还可包括步骤:
[0030]若主板重启过,备板未重启,则以备板的数据库对主板的数据库进行恢复;
[0031]若主板未重启,备板重启过,并且备板的数据库与主板的数据库不同步,则以主板的数据库对备板的数据库进行数据恢复;
[0032]在本实施例中,主板重启过,则主板数据库的数据可能发生异常,需恢复主板数据库的数据;由于备板未重启过,其数据库运行正常,以备板数据库当前的数据对主板的数据库进行恢复;
[0033]备板重启,则检测双板数据库的同步状态,若备板数据库与主板数据库的数据不同步,则以主板的数据库当前的数据对备板的数据库进行数据恢复;若同步,则可不进行备板数据库恢复操作。
[0034]在一较佳实施例中,可在根据预设的时间周期对数据库进行备份时,将当前备份的数据覆盖上一次备份的数据,在减少占用资源的同时保证当前的备份数据为最新的数据。
[0035]在一较佳实施例中,在通过备份数据对数据库进行数据库恢复时,将备份数据逐条写入数据库,防止设备宕机时丢失过多数据,例如可通过shell脚本进行配置,配置sync_binlog限定每次同步进磁盘的语句条数。
[0036]在一较佳实施例中,还可包括在主备板初始化时分别对其数据库进行主键自增起始值和偏移量设置的步骤,在设备初始化时配置数据库双向同步,shell脚本下可设置auto_increment_offset偏移量和auto_increment_increment自增量防止自增主键在同步过程中产生冲突;
[0037]例如,自增主键设置为:
[0038]auto_increment_offset=l, auto_increment_increment=2 ;
[0039]数据同步设置为:
[0040]auto_increment_off set=2, auto_increment_increment=2 ;
[0041]则可防止自增主键在同步过程中产生冲突。
[0042]接下来通过一具体实施例详细阐述本发明,如图3所示,示出了其中一种实现本发明的逻辑框图。
[0043]步骤1:配置数据库双向同步。需要配置设置auto_increment_offset偏移量和auto_increment_increment自增量防止自增主键在同步过程中产生冲突,并配置sync_binlog限定每次同步进磁盘的语句条数,同时配置每天3点钟时对数据库进行备份。
[0044]步骤2:循环检测,判断A机是否重启,如果A机重启了,去到步骤3 ;否则去到步骤7。
[0045]步骤3:如果检测到A机重启过,则以B机的数据库数据为准。
[0046]步骤4:判断B机是否也是开机重启过,如果是,去到步骤5 ;否则去到步骤6。
[0047]步骤5:如果A,B两机同时重启或者被整机断电过,此时无法预知那边数据是正确的,本发明采用恢复成每天早上3点钟备份的那份数据库。当然,这里有不同的解决方法,为了更准确,也可以每小时做一次数据库备份,两机同时宕机时,以前一次备份的数据库为准进行恢复,去到步骤10。
[0048]步骤6:A宕机,B正常工作,此时以B机数据库数据为准进行恢复,去到步骤10。
[0049]步骤7:如果A机未重启,则数据库数据以A机的为准,去到步骤8。
[0050]步骤8:检测B机是否重启过,如果B机重启了,则去到步骤9 ;否则,去到步骤10。
[0051]步骤9:以A机数据库数据为准进行数据库恢复,去到步骤10。
[0052]步骤10:循环检测A,B两机同步状态,一般来说,异常只出现在宕机的时候,正常情况下A,B两机应该是同步状态的。[0053]在异常掉电的情况下,Mysql有较小几率出现无法提供正常服务的情况。本发明对于这种情况的处理方式为:在开机的时候检测Mysql的服务状态,如果服务状态异常,则需要重新安装数据库,并以数据库服务正常的那边数据库为准进行恢复,如果两边数据库服务都不正常,则回退到3点钟的数据库数据,并进行同步配置。
[0054]如图4所示,是本发明一种主备板的数据库双向同步系统的结构示意图,包括:
[0055]备份模块41,用于根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据;
[0056]在本步骤中,可根据主备板的工作状态,设定在网关较为空闲的时候分别对主备板的数据库进行备份;或者也可设定更为频繁的备份方式,如每小时进行一次数据库备份;如果板卡同时重启并且重启后数据库服务都不正常,则通过备份的数据进行恢复;主备板备份的数据分别存储在各自对应的数据库中。
[0057]检测模块42,用于检测主备板的运行状态;
[0058]恢复模块43,用于若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复;
[0059]板卡系统若重启或者掉电,数据库双向同步就会产生不可预知的异常,这部分异常产生的主要原因源于对数据库的操作日志没办法即时写入磁盘和网络传输过程中的丢失。另外在异常宕机时,甚至可能产生数据库崩溃的严重情况,而网关HA切换过程,就经常涉及到掉电重启等情况;
[0060]在本实施例中,循环检测主备板的运行状态,当主板与备板都重启过时,由于两板同时重启或者被整机断电过,无法预知哪一个板卡的数据是正确的,因此两机同时宕机时,以备份的数据分别对数据库进行数据恢复,保证主备板数据同步。
[0061]在一较佳实施例中,还可包括:
[0062]主板恢复模块,用于若主板重启过,备板未重启,则以备板的数据库对主板的数据库进行恢复;
[0063]备板恢复模块,用于若主板未重启,备板重启过,并且备板的数据库与主板的数据库不同步,则以主板的数据库对备板的数据库进行数据恢复;
[0064]在本实施例中,主板重启过,则主板数据库的数据可能发生异常,需恢复主板数据库的数据;由于备板未重启过,其数据库运行正常,以备板当前数据库的数据对主板的数据库进行恢复;
[0065]备板重启,则检测双机数据库的同步状态,若备板数据库与主板数据库的数据不同步,则以主板的数据库对备板的数据库进行数据恢复;若同步,则不进行备板数据库恢复操作。
[0066]在一较佳实施例中,可在根据预设的时间周期对数据库进行备份时,将当前备份的数据覆盖上一次备份的数据,在减少占用资源的同时保证当前的备份数据为最新的数据。
[0067]在一较佳实施例中,可在通过备份数据对数据库进行数据库恢复时,将备份数据逐条写入数据库,防止设备宕机时丢失过多数据,例如可通过shell脚本进行配置,配置sync_binlog限定每次同步进磁盘的语句条数。
[0068]在一较佳实施例中,还可包括设置模块,用于根据预设值在主备板初始化时分别对数据库的主键自增起始值和偏移量进行设置,在设备初始化时配置数据库双向同步,shell 脚本下可设置auto_increment_offset 偏移量和 auto_increment_increment 自增量防止自增主键在同步过程中产生冲突。
[0069]本发明主备板的数据库双向同步方法和系统,根据主备板的工作状态,设定在网关较为空闲的时候分别对主备板的数据库进行备份,如果板卡同时重启并且重启后数据库服务都不正常,则通过备份的数据进行恢复,保证在主备板同时运行异常时仍能保持数据同步;若是其中一板重启,则根据两板重启后的数据库状态确定数据恢复操作;本发明实现过程简单,能良好的保证数据库同步状态正确,解决了主备板运行异常时的数据同步难题。
[0070]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种主备板的数据库双向同步方法,其特征在于,包括如下步骤: 根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据; 检测主备板的运行状态; 若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复。
2.根据权利要求1所述的主备板的数据库双向同步方法,其特征在于,还包括步骤: 若主板重启过,备板未重启,则以备板的数据库对主板的数据库进行恢复; 若主板未重启,备板重启过,并且备板的数据库与主板的数据库不同步,则以主板的数据库对备板的数据库进行数据恢复。
3.根据权利要求1所述的主备板的数据库双向同步方法,其特征在于,在根据预设的时间周期对数据库进行备份时,将当前备份的数据覆盖上一次备份的数据。
4.根据权利要求1或2所述的主备板的数据库双向同步方法,其特征在于,在通过备份数据对数据库进行数据库恢复时,将备份数据逐条写入数据库。
5.根据权利要求1所述的主备板的数据库双向同步方法,其特征在于,还包括根据预设值在主备板初始化时分别对其数据库进行主键自增起始值和偏移量设置的步骤。
6.一种主备板的数据库双向同步系统,其特征在于,包括: 备份模块,用于根据预设的时间周期分别对主备板的数据库进行备份,得到对应的备份数据; 检测模块,用于检测主备板的运行状态; 恢复模块,用于若主备板都重启过,则主备板的数据库分别通过其备份数据进行数据恢复。
7.根据权利要求6所述的主备板的数据库双向同步系统,其特征在于,还包括: 主板恢复模块,用于若主板重启过,备板未重启,则以备板的数据库对主板的数据库进行恢复; 备板恢复模块,用于若主板未重启,备板重启过,并且备板的数据库与主板的数据库不同步,则以主板的数据库对备板的数据库进行数据恢复。
8.根据权利要求6所述的主备板的数据库双向同步系统,其特征在于,在根据预设的时间周期对数据库进行备份时,将当前备份的数据覆盖上一次备份的数据。
9.根据权利要求6或7所述的主备板的数据库双向同步系统,其特征在于,在通过备份数据对数据库进行数据库恢复时,将备份数据逐条写入数据库。
10.根据权利要求6所述的主备板的数据库双向同步系统,其特征在于,还包括设置模块,用于根据预设值在主备板初始化时分别对数据库的主键自增起始值和偏移量进行设置。
【文档编号】G06F17/30GK103488721SQ201310416525
【公开日】2014年1月1日 申请日期:2013年9月12日 优先权日:2013年9月12日
【发明者】吴志鹏, 李高朋, 刘志勇, 邓梅娟, 姚舜, 谭廷柱, 徐胤 申请人:京信通信系统(中国)有限公司