一种用于MySQL数据库的数据同步系统和方法
【专利摘要】本发明公开了一种用于MySQL数据库的数据同步系统,包括一用于数据存储的MySQL数据库主库;一通过高速互联网络与MySQL数据库主库连接的MySQL数据库备库,所述MySQL数据库备库用于数据备份;其特征在于:还包括一支持数据块原子写的存储系统,所述存储系统包括数据块同步软件和高速IO存储系统;所述存储系统分别设置于MySQL数据库主库和MySQL数据库备库中,MySQL数据库主库中的数据块同步软件用于将MySQL数据库主库的数据同步到MySQL数据库备库的高速IO存储系统中。
【专利说明】—种用于MySQL数据库的数据同步系统和方法
【技术领域】
[0001]本发明涉及数据安全领域,具体地说,特别涉及到一种用于MySQL数据库的数据同步系统和方法。
【背景技术】
[0002]从所周知的是,在磁盘出现故障的情况下,MySQL数据库的数据将会丢失。为了避免上述情况的发生,一般通过搭建MySQL复制的方式异步的将数据同步到另外的服务器,这种办法一定程度上能够保证数据不完全丢失,但其缺陷在于:由于重做日志或者二进制日志数据还在内存中,MySQL数据库在崩溃的时候,无法将这些数据持久化,异步的复制无法保证MySQL的数据完整的全部同步到了另外一台服务器,不能做到零丢失。
[0003]另外一种方式是通过数据块同步软件同步的将MySQL的数据块同步到另外一个服务器上。这种方式的缺陷在于:由于MySQL的数据块为16K,数据块同步软件是基于文件系统的同步,无法保证16K的数据库完整的同步到另外一台服务器,造成MySQL块损坏,数据丢失。
[0004]另外采用同步写的方式数据块需要在两台服务器都写成功才能返回,对应的需要两次IO和一次网络传输,导致底层IO响应时间大大增加,影响MySQL数据库的响应时间,对于需要高并发和提供快速实时访问的应用来说是无法容忍的,这种方案也无法实现高性能的需求。
【发明内容】
[0005]本发明实际需要解决的技术问题是:针对现有技术中的不足,提供一种用于MySQL数据库的数据同步系统和方法,以解决上述问题。
[0006]本发明所解决的技术问题可以采用以下技术方案来实现:
[0007]—种用于MySQL数据库的数据同步系统,包括
[0008]一用于数据存储的MySQL数据库主库;
[0009]一通过高速互联网络与MySQL数据库主库连接的MySQL数据库备库,所述MySQL数据库备库用于数据备份;
[0010]其特征在于:还包括一支持数据块原子写的存储系统,所述存储系统包括数据块同步软件和高速IO存储系统;
[0011]所述存储系统分别设置于MySQL数据库主库和MySQL数据库备库中,MySQL数据库主库中的数据块同步软件用于将MySQL数据库主库的数据同步到MySQL数据库备库的高速IO存储系统中。
[0012]进一步的,所述存储系统还包括一支持指定块大小原子写的文件系统,所述文件系统通过MySQL数据库主库中的数据块同步软件将数据完整的同步到MySQL数据库备库的高速IO存储系统中。
[0013]一种用于MySQL数据库的数据同步方法,其特征在于:包括如下方法:[0014]DMySQL数据库主库发起写操作;
[0015]2)数据块同步软件在高速IO存储系统中写数据,并将数据通过高速互联网络传输至MySQL数据库备库中的数据块同步软件;
[0016]3) MySQL数据库备库中的数据块同步软件将数据提交到MySQL数据库备库的“高速IO存储系统中。
[0017]进一步的,所述步骤1)-4)均包含结果反馈步骤,用于将数据写的结构返回给前者。
[0018]进一步的,所述步骤I)中,MySQL数据库主库发起写操作后,支持指定块大小原子写的文件系统向数据块同步软件写数据。
[0019]与现有技术相比,本发明的有益效果如下:
[0020]利用数据块同步软件、支持指定块大小原子写的文件系统、高速互联网络、高速IO存储系统来共同解决数据库的宕机数据丢失和高性能两者无法兼得的问题。可以在保证MySQL数据库宕机后数据零丢失,还能保证数据库在日常运行的高性能。在对数据库丢失特别敏感,日常数据库性能要求也特别高的场景下特别适合。
【专利附图】
【附图说明】
[0021]图1为本发明所述的数据同步系统的连接结构图。
[0022]图2为本发明所述的数据同步系统的裸设备存储系统图。
[0023]图3为本发明所述的数据同步系统的文件存储系统图
[0024]图4为本发明所述的数据同步方法的裸设备存储系统的流程图。
[0025]图5为本发明所述的数据同步方法的文件存储的流程图。
[0026]图6为本发明所述的实施例1的示意图。
[0027]图中标号说明=MySQL数据库主库1、存储系统2、数据同步软件21、高速IO存储系统22、文件系统23、MySQL数据库备库3、存储系统4、数据同步软件41、高速IO存储系统42、文件系统43、高速互联网络5。
【具体实施方式】
[0028]为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合【具体实施方式】,进一步阐述本发明。
[0029]参见图1,MySQL数据库主库I直接访问支持数据块原子写的存储系统2,由支持数据块原子写的存储系统2使用高速互联网络5来同步数据写,保证数据的零丢失和高性倉泛。
[0030]参见图2,MySQL数据库主库I直接访问裸设备,支持数据块原子写的存储系统2包含了数据块同步软件21和高速IO存储系统22,数据块同步软件21负责将MySQL数据库主库I的写操作同步到MySQL数据库备库3上的高速IO存储系统42。这样MySQL数据库主库I出现了问题以后,MySQL数据库备库3的数据仍然是最新的,并且高速IO存储系统22和42也能够提供足够高性能的数据存储服务。
[0031]参见图4,MySQL数据库主库I直接访问裸设备,提交写请求以后,数据块同步软件负责向MySQL数据库主库I的高速IO存储系统22写入数据,并同时通过高速互联网络5向MySQL数据库备库3的高速IO存储系统42写入数据。只有两边都同时写成功了,数据块同步软件21才会返回给MySQL数据库主库I写成功的信息。
[0032]参见图3,MySQL数据库主库I访问文件系统23,支持数据块原子写的存储系统2包含了支持指定块大小原子写的文件系统数据块同步软件21和高速IO存储系统22。支持指定块大小原子写的文件系统2保证了 MySQL数据库主库I的数据块提交到数据块同步软件21时,不会拆分成多个小的数据块,从而导致数据库块部分成功部分失败,从而导致数据库切换到备库服务器时由于块损坏而导致无法启动。数据块同步软件21负责将MySQL数据库主库I的写操作同步到MySQL数据库备库3上的高速IO存储系统42。这样MySQL数据库主库I出现问题以后,MySQL数据库备库3的数据仍然是最新的,且高速IO存储系统42也能够提供足够高性能的数据存储服务。
[0033]参见图5,MySQL数据库主库I访问文件系统,提交写请求以后,支持指定块大小原子写的文件系统23直接向数据块同步软件21读写数据。数据块同步软件21负责向MySQL数据库主库I的高速IO存储系统22写入数据,并同时通过高速互联网络5向MySQL数据库备库3的高速IO存储系统42写入数据。只有两边都同时写成功了,数据块同步软件21才会返回给MySQL数据库主库I “写成功”的信息。
[0034]实施例1
[0035]参见图6,本实施例是MySQL数据库主库提交一个大小为PAGE_SIZE字节的页数据的写操作,其数据同步过程如下:
[0036]文件系统将会为这个写操作启动一个原子写操作。首先,文件系统会初始化部分变量,并且标记原子写开始。然后文件系统将PAGE_SIZE大小的页,按照底层磁盘系统的块大小进行数据写入,每次写入一个BL0CK_SIZE字节大小的块,直到所有的PAGE_SIZE字节的页数据全部写入到底层存储系统中。注意,每次文件系统的写入都会被同步到MySQL备库的服务器存储系统上。万一在数据写入或者同步过程中出现了任何异常,文件系统都会回滚掉之前所做的任何操作。如果在这个时间段内的任意时刻,数据库或者主机宕机了,都不会导致数据的不一致。因为此时,文件系统只是开启了一个原子写操作,在备机上,文件系统发现数据没有提交的话,这些块都会被回滚掉,不会产生数据丢失和不一致的情况。只有当所有的数据都写入存储系统,并成功同步到MySQL备库的服务器存储系统时,文件系统才会标记原子写成功,返回数据写成功的信息。这个时间段内,如果数据库宕机,由于原子写已经记录在文件系统中,那么数据也不会丢失失去一致性。
[0037]采用同步写的方式,数据块需要在两台服务器都写成功才能返回,网络延迟和底层磁盘的IO响应延迟,将导致数据库IO响应时间大大增加。为了解决IO响应时间增加的问题,本发明采用高速IO存储系统来提高IO延迟时间。目前采用最新的Flash技术磁盘和PCIE卡的并发IO能力以及IO响应时间比普通磁盘要快100倍。同时,为了避免网络延迟给同步带来的性能消耗,该方法要求使用高速互联网络。目前最新的高速互联网络吞吐量是主流千兆网络的560倍,数据延迟时间能够达到IO总线的纳秒级的延迟级别。
[0038]另外,由于采用了原子写的文件系统,可以对MySQL的部分参数进行调优以补偿同步写带来的IO延迟。
[0039]以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
【权利要求】
1.一种用于MySQL数据库的数据同步系统,包括 一用于数据存储的MySQL数据库主库; 一通过高速互联网络与MySQL数据库主库连接的MySQL数据库备库,所述MySQL数据库备库用于数据备份; 其特征在于:还包括一支持数据块原子写的存储系统,所述存储系统包括数据块同步软件和高速IO存储系统; 所述存储系统分别设置于MySQL数据库主库和MySQL数据库备库中,MySQL数据库主库中的数据块同步软件用于将MySQL数据库主库的数据同步到MySQL数据库备库的高速IO存储系统中。
2.根据权利要求1所述的用于MySQL数据库的数据同步方法,其特征在于:所述存储系统还包括一支持指定块大小原子写的文件系统,所述文件系统通过MySQL数据库主库中的数据块同步软件将数据完整的同步到MySQL数据库备库的高速IO存储系统中。
3.一种用于MySQL数据库的数据同步方法,其特征在于:包括如下方法: DMySQL数据库主库发起写操作; 2)数据块同步软件在高速IO存储系统中写数据,并将数据通过高速互联网络传输至MySQL数据库备库中的数据块同步软件; 3)MySQL数据库备库中的数据块同步软件将数据提交到MySQL数据库备库的“高速IO存储系统中。
4.根据权利要求3所述的用于MySQL数据库的数据同步方法,其特征在于:所述步骤I)-4)均包含结果反馈步骤,用于将数据写的结构返回给前者。
5.根据权利要求3所述的用于MySQL数据库的数据同步方法,其特征在于:所述步骤I)中,MySQL数据库主库发起写操作后,支持指定块大小原子写的文件系统向数据块同步软件写数据。
【文档编号】G06F17/30GK103617195SQ201310552466
【公开日】2014年3月5日 申请日期:2013年11月5日 优先权日:2013年11月5日
【发明者】李春, 李建辉, 熊中哲, 罗春, 陈栋 申请人:杭州沃趣网络科技有限公司