一种基于binlog的可配置的mysql数据库实时同步方法
【专利摘要】本发明公开了一种基于binlog的可配置的mysql数据库实时同步方法,该方法基于mysql的动作事件触发,用户在页面对系统的配置操作影响的数据库,配置文件以及与底层系统的交互动作都可以在一次mysql动作事件中在备份服务器执行,也就是说用户在主服务器做的某个动作可以实时完整的复制到备份服务器。保证热备的两台服务器配置一致,在切换后能正常提供服务,提高系统的可靠性和稳定性。
【专利说明】
一种基于b i η I og的可配置的mysq I数据库实时同步方法
技术领域
[0001]本发明涉及数据同步领域,尤其涉及一种基于binlog的可配置的mysql数据库实时同步方法。
【背景技术】
[0002]热备是一种服务器的容灾方式,是服务器的一种备份形式,当主服务器出现问题,系统自动将备份服务器启用,完成服务的切换。所以两台服务器之间的配置应该同步,虽然mysql提供了数据库复制功能,可以实现两个数据库同步,同时还有很多文件同步的软件可以同步文件。但是这种方式数据库和文件的同步是相互独立的,有可能造成数据库和配置文件不一致,而且在一些与底层系统有交互的应用中,那些交互动作无法被同步,造成两台服务器不一致,热备切换后某些功能无法正常运行。
【发明内容】
[0003]本发明的目的在于针对现有技术在数据同步过程中的问题,提供一种基于binlog的可配置的mysql数据库实时同步方法。
[0004]本发明是在mysql的binlog基础上,通过mysql的sql操作来触发同步动作,同时用配置文件灵活控制同步的表以及需要特殊处理的数据。该方法包括以下步骤:
[0005]步骤1:将待同步的服务器A和服务器B均配置binlog,并且均配置成主机;使用1gf ile文件来存储当前binlog的文件名,1gpos文件来存储当前binlog的位置;在配置文件中配置需要同步的表以及需要特殊处理的表;
[0006]步骤2:服务器A与服务器B之间进行初始化,使两台主机处于相同的初始状态;
[0007](2.1)服务器A将需要同步的表、配置文件以及1gfile和1gpos文件打包,通过rsync传送到服务器B ;
[0008](2.2)服务器B通过服务器A传输过来的文件包覆盖当前表的内容以及配置文件的内容,执行初始化脚本;
[0009]步骤3:服务器B通过服务器A的binlog进行同步;
[00?0] (3.1)服务器B根据服务器A同步过来的1gfile与1gpos文件确定读取binlog的位置,读取服务器A的一条binlog数据,并更新logfi Ie与1gpos文件;
[0011](3.2)如果读取的数据是不需要同步的,则跳转到步骤3.1;
[0012](3.3)如果读取的数据是需要特殊处理的数据,调用处理特殊功能的API,然后跳转到步骤3.1;
[0013](3.4)判断sql语句是什么操作类型,如果是insert操作,则跳转到步骤3.5,如果是update操作,则跳转到步骤3.6,如果是delete操作,则跳转到步骤3.7 ;
[0014](3.5)插入对应的mysql数据,然后以表名、主键和主键值为参数调用API完成新数据插入后的交互操作;
[0015](3.6)首先以表名、主键和主键值为参数调用API完成数据更新前的交互操作,然后更新mysql的数据,再调用API完成数据更新后的交互操作;
[0016](3.7)首先以表名、主键和主键值为参数调用API完成数据删除前的交互操作,然后删除mysql的数据;
[0017](3.8)一条数据处理完成,跳转到步骤3.1。
[0018]本发明的有益效果是:本发明提出的数据同步方法,由于该方法基于mysql的动作事件触发,用户在页面对系统的配置操作影响的数据库,配置文件以及与底层系统的交互动作都可以在一次mysql动作事件中在备份服务器执行,也就是说用户在主服务器做的某个动作可以实时完整的复制到备份服务器。保证热备的两台服务器配置一致,在切换后能正常提供服务,提尚系统的可靠性和稳定性。
【附图说明】
[0019]图1是数据同步的流程示意图。
【具体实施方式】
[0020]下面结合附图和具体实施例对本发明作进一步详细说明。
[0021 ]如图1所示,本发明是在mysql的binlog基础上,通过mysql的sql操作来触发同步动作,同时用配置文件灵活控制同步的表以及需要特殊处理的数据。具体的实现步骤如下:
[0022]步骤1:将待同步的服务器A和服务器B均配置binlog,并且均配置成主机;使用1gf ile文件来存储当前binlog的文件名,1gpos文件来存储当前binlog的位置。在配置文件中配置需要同步的表以及需要特殊处理的表。
[0023]步骤2:服务器A与服务器B之间进行初始化,使两台主机处于相同的初始状态;
[0024](2.1)服务器A将需要同步的表、配置文件以及1gf ile和1gpos文件打包,通过rsync传送到服务器B ;
[0025](2.2)服务器B通过服务器A传输过来的文件包覆盖当前表的内容以及配置文件的内容,执行初始化脚本;
[0026]步骤3:服务器B通过服务器A的binlog进行同步;
[0027](3.1)服务器B根据服务器A同步过来的1gfile与1gpos文件确定读取binlog的位置,读取服务器A的一条binlog数据,并更新logfi Ie与1gpos文件;
[0028](3.2)如果读取的数据是不需要同步的,则跳转到步骤3.1;
[0029](3.3)如果读取的数据是需要特殊处理的数据,例如某张表中存储着主机名、网关以及DNS,其中主机名是不能被同步的,其它字段都需要同步,此时就可以调用处理这张表的特定API来完成这个同步,然后跳转到步骤3.1;
[0030](3.4)判断sql语句是什么操作类型,如果是insert操作,则跳转到步骤3.5,如果是update操作,则跳转到步骤3.6,如果是delete操作,则跳转到步骤3.7 ;
[0031](3.5)插入对应的mysql数据,然后以表名、主键和主键值为参数调用API完成新数据插入后的交互操作。例如新增用户操作,底层操作系统也需要创建该用户,而且用户表里存储的密码是加密的时候。就需要先调用API解密密码,然后根据解密出来的密码创建对应的用户;
[0032](3.6)首先以表名、主键和主键值为参数调用API完成数据更新前的交互操作,然后更新mysql的数据,再调用API完成数据更新后的交互操作。例如系统中有路由配置功能,在修改路由配置之后需要先将原先的路由规则删除,再添加修改之后的路由规则。所以在mysql更新数据前后需要分别调用删除路由规则的API和添加路由规则的API;
[0033](3.7)首先以表名、主键和主键值为参数调用API完成数据删除前的交互操作,然后删除mysql的数据。例如删除用户操作,先将底层系统的用户删除再删除mysql数据;
[0034](3.8)—条数据处理完成,跳转到步骤3.1。
【主权项】
1.一种基于binlog的可配置的mysql数据库实时同步方法,其特征在于,该方法包括以下步骤: 步骤1:将待同步的服务器A和服务器B均配置binlog,并且均配置成主机;使用1gfile文件来存储当前binlog的文件名,1gpos文件来存储当前binlog的位置;在配置文件中配置需要同步的表以及需要特殊处理的表; 步骤2:服务器A与服务器B之间进行初始化,使两台主机处于相同的初始状态; (2.1)服务器A将需要同步的表、配置文件以及1gfiIe和1gpos文件打包,通过rsync传送到服务器B; (2.2)服务器B通过服务器A传输过来的文件包覆盖当前表的内容以及配置文件的内容,执行初始化脚本; 步骤3:服务器B通过服务器A的binlog进行同步; (3.1)服务器B根据服务器A同步过来的logfiIe与1gpos文件确定读取binlog的位置,读取服务器A的一条binlog数据,并更新logfi Ie与1gpos文件; (3.2)如果读取的数据是不需要同步的,则跳转到步骤3.1; (3.3)如果读取的数据是需要特殊处理的数据,调用处理特殊功能的API,然后跳转到步骤3.1; (3.4)判断sql语句是什么操作类型,如果是insert操作,则跳转到步骤3.5,如果是update操作,则跳转到步骤3.6,如果是delete操作,则跳转到步骤3.7 ; (3.5)插入对应的mysql数据,然后以表名、主键和主键值为参数调用API完成新数据插入后的交互操作; (3.6)首先以表名、主键和主键值为参数调用API完成数据更新前的交互操作,然后更新mysql的数据,再调用API完成数据更新后的交互操作; (3.7)首先以表名、主键和主键值为参数调用API完成数据删除前的交互操作,然后删除mysql的数据; (3.8)—条数据处理完成,跳转到步骤3.1。2.根据权利要求1所述的一种基于binlog的可配置的mysql数据库实时同步方法,其特征在于,所述步骤3.5中,对于新增用户操作,底层操作系统需要创建该用户,且用户表里存储的密码是加密时候,先调用API解密密码,然后根据解密出来的密码创建对应的用户。3.根据权利要求1所述的一种基于binlog的可配置的mysql数据库实时同步方法,其特征在于,所述步骤3.6中,系统中有路由配置功能时,在修改路由配置之后先将原先的路由规则删除,再添加修改之后的路由规则,所以在mysql更新数据前后分别调用删除路由规则的API和添加路由规则的API。4.根据权利要求1所述的一种基于binlog的可配置的mysql数据库实时同步方法,其特征在于,所述步骤3.7中,删除用户操作时,先将底层系统的用户删除再删除mysql数据。
【文档编号】G06F17/30GK105956207SQ201610525981
【公开日】2016年9月21日
【申请日】2016年7月1日
【发明人】陈云, 吴建波
【申请人】杭州帕拉迪网络科技有限公司