一种数据同步控制方法和装置的制造方法

文档序号:9765964阅读:588来源:国知局
一种数据同步控制方法和装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术,特别涉及一种数据同步控制方法和装置。
【背景技术】
[0002] 目前数据库已经成为不可缺少的数据存储设备,可W用于企业存储业务数据,并 且为了提供较高的可靠性保障,通常设置主备数据库进行备份,称为主库和备库,主库的数 据要及时同步到备库。此外,较大的企业通常在不同的区域分别设置用于数据存储的数据 库,比如A地数据库和B地数据库,该两地的数据库之间也需要进行数据同步,W满足业务 需求,送种类型的数据同步可W称为应用同步,采用精卫、DRC等数据同步方式同步更新数 据。
[0003] 当前的数据同步中,应用同步和备库同步通常都会采取尽力发送的原则,只要IO 很强,郝么数据同步就会尽多尽快的执行,但是送会占用较大带宽,并且造成如下问题:一 方面,作为保障性作用的备库其优先级较高,应用同步将占用较多带宽影响备库的数据同 步,当备库同步延迟较大时可能造成备库不可用;另一方面,主库的数据不仅用于上述的数 据同步,还用于业务使用,比如业务执行时调取数据库的数据进行使用,数据同步占用较大 带宽时,将影响业务的响应速度,降低业务的执行效率。

【发明内容】

[0004] 有鉴于此,本发明提供一种数据同步控制方法和装置,W控制数据同步的速度,降 低对备库和业务的影响。
[0005] 具体地,本发明是通过如下技术方案实现的:
[0006] 第一方面,提供一种数据同步控制方法,所述方法应用于数据同步控制装置,所述 装置包括数据发送模块和同步监控模块;所述方法包括:
[0007] 数据发送模块获取待同步的更新数据;
[0008] 所述数据发送模块判断是否满足预设的休眠条件,若是,则所述数据发送模块在 经过预设的休眠时间之后,将所述更新数据发送至同步装置。
[0009] 第二方面,提供一种数据同步控制装置,包括:数据发送模块和同步监控模块;其 中,所述数据发送模块,用于获取待同步的更新数据,并判断是否满足预设的休眠条件,若 是,则所述数据发送模块在经过预设的休眠时间之后,将所述更新数据发送至同步装置;所 述预设的休眠条件是由所述同步监控模块设置。
[0010] 本发明的数据同步控制方法和装置,通过在满足预设的休眠条件时,将数据发送 停止一段休眠时间,实现了对数据同步速度的控制,比如可W通过控制休眠条件和休眠时 间的长度,来调整数据发送的速度,从而相对于传统方式中的数据发送不受限制的尽力发 送,降低了数据同步占用的带宽,降低了对备库和业务的影响。
【附图说明】
[0011] 图I是本发明实施例提供的数据同步控制方法的应用示意图;
[0012] 图2是本发明实施例提供的数据同步控制装置的结构示意图;
[0013] 图3是本发明实施例提供的数据同步控制方法的流程示意图;
[0014] 图4是本发明实施例提供的数据同步控制装置的模块关系图;
[0015] 图5是本发明实施例提供的数据同步控制方法中的Binlog发送线程执行的流程 示意图;
[0016] 图6是本发明实施例提供的数据同步控制方法中的同步监控模块执行的流程示 意图。
【具体实施方式】
[0017] 在进行数据同步时,本申请实施例的数据同步控制方法,通过由数据同步控制装 置来执行该方法,完成数据的同步。该数据同步控制装置例如可W是设置在数据库服务器 上的程序指令,参见图1所示,图1示出了服务器的简单示意结构,在服务器的存储器中, 不仅存储有待同步的数据,还存储有上述的数据同步控制装置;与存储器通过总线连接的 处理器,可W调用该数据同步控制装置,通过执行该装置对应的程序指令,来执行本实施例 的数据同步控制方法,通过网络接口将待同步的数据同步到其他设备,比如同步至备库,或 者,通过精卫或者DRC的数据同步方式将数据同步至其他应用服务器。
[0018] 本实施例的数据同步控制方法,通过在存储器中设置了上述的数据同步控制装置 由处理器调用执行,来实现对数据同步时的控制,改变传统方式中服务器总是在尽力传送 的原则,使得数据同步的速度能够得到一定的控制,减少数据同步所占用的带宽,降低对业 务使用数据的影响。
[0019] 基于此,本实施例的数据同步控制装置,包括两个模块,分别是数据发送模块和同 步监控模块,参见图2所示的装置结构。通过送两个模块,该同步控制装置可W执行图3所 示的流程:
[0020] 301、数据发送模块获取待同步的更新数据;
[0021] 302、数据发送模块判断是否满足预设的休眠条件,若是,则所述数据发送模块在 经过预设的休眠时间之后,将所述更新数据发送至同步装置。
[0022] 在上述的步骤中可W看到,数据发送模块在发送待同步的更新数据时,不再是像 传统方式中的获取到数据立刻发送,而是会在满足预设的休眠条件时,停止一段休眠时间 (也就是说获取到待同步的更新数据时不立刻发送,先停止一段时间),然后经过该预设的 休眠时间后再发送该数据至同步装置(比如应用服务器),送样就实现了对数据同步速度 的控制和对同步占用带宽的降低。
[0023] 如下将详细描述该数据同步控制的过程,其中,通过图4说明数据同步控制装置 中的两个模块,在执行数据同步控制时的逻辑关系,后续结合该图4来具体说明数据同步 虹制:
[0024] 首先,对Binlog简单说明如下;数据库服务器中存储的数据发生更新时,更新数 据都是存储在Binlog文件中,送些更新数据例如包括;新增的某条业务数据、或者删除某 些数据、或者修改某些数据等等,并且,更新数据是W Binlog_event为单位存储,比如,对 某个表项中的数据进行修改,郝么在记录时该表项的标识可W称为一个event,数据更改的 内容(将数据al修改为a2)可W作为一个event (事件),也就是说,如果将"对某个表项 中的数据进行修改"称为一个事物,该事物可能包含多个Binlog_event。可选的,在存储时 例如可W存储为如下表1中所示的表项,可W产生H个event ;
[00 巧]表 1 Binlog_event [0026]
[0027] 在进行数据同步时,也是通过Binlog_event来进行同步,比如,数据发送模块读 取一个Binlog_event,将该event同步至备库,然后再读取下一个event发送至备库等。 备库、精卫、DRC在与主库进行数据同步时,都是通过Binlog协议来进行同步的,即通过 Binlog协议向主库发送同步请求消息,主库根据该请求W Binnog_evcnt为单位读取在本 地的Binlog文件(该文件是请求中指定的或者默认的),然后将文件中的各个Binlog_ event发送给备库或者应用服务器。
[0028] 本实施例中,数据库服务器可W预先设置两个系统参数,如下:
[0029] binlog_send_idle_pe;riod送是Binlog发送线程每次的"休眠时间",单位是微 砂,默认值是100 ;其中,Binlog发送线程就是上述的数据发送模块,休眠时间就是指该模 块在发送数据之前需要停止一段时间再发送。
[0030] binlog_send_limit_users送是Binlog发送线程的速度配置,默认值可W是空。 利用该参数可W对特定的同步线程的速度进行限制,例如,设置如下;setglobal binlog_ send_limit_users =化C: 3, jingwei : 10,其作用是设置 DRC 拉取 Binlog (拉取 Binlog 即 进行Binlog同步)的上限速度是3MB/s,jingwei拉取Binlog的上限速度是lOMB/s,其中 的DRC和jingwei时应用服务器在拉取Binlog时使用的用户名称。
[0031] 接着,假设本实施例的数据发送模块即Binlog发送线程具体是Dump Mnlog线 程,其启动时按照图5所示的流程图执行。
[0032] Binlog dump线程启动后,将查看其连接的用户名是否应该被限速,该用户名指的 是前面所述的DRC、jingwei等,也就是说,Binlog dump线程查看该线程本身是采用的何种 方式进行数据同步。而是否应用被限速,该Binlog dump线程可W是根据上述的预先设置的 系统参数binlog_send_limit_users来判断,该预先设置的系统参数binlog_send_limit_ users可W称为预设的限速信息。
[0033] 例如,设置 binlog_send_limit_users =化c:3,郝就是说设置 DRC 拉取 Binlog 的 上限速度是3MB/S,该限速信息中的化C是数据同步方式的标识,3是对应该数据同步方式 的速度阔值。如果Binlog dump线程查看自己连接的用户名是DRC,结合该速度限制可W确 定该线程自身是需要限速的,则Binlog dump线程会将自己加入限速列表,具体是将自己对 应的线程标识加入列表,限速列表如下表2 :
[0034] 表2限速列表
[0035]

[0036] 如上的表2,限速列表中记录了需要被限速的线程标识(可能有多个线程都是使 用DRC方式拉取Binlog),该限速列表主要是用于供同步监控模块使用的,同步监控模块只 对限速列表中包括的线程进行数据发送速度的监控,如果线程的速度过高将调整线程的休 眠条件,送些后续在对同步监控模块的执行流程中进行详述。同理,如果Binlog dump线程 停止运行时,比如线程结束或者断开连接,则该线程也会将自身对应的线程标识从上述的 限速列表移除。而且,每次更新设置binlog_send_limit_users时,系统可W对当前运行的 所有线程进行遍历,将需要被限制的线程加入限速列表,不受限制的线程移出列表即可,不 会对线程的运行造成影响,实时生效,非常方便。
[0037] Binlog dump线程在将自己加入限速列表后,还要获取用于控制数据发送速度的 一些速度限制参数,比如获取"次数阔值"和"休眠时间"。该"次数阔值"是Binlog d
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1