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

文档序号:9765964阅读:来源:国知局
ump 线程用于判断是否满足预设的休眠条件,即判断"当前线程是否需要休眠"。例如,该"次数 阔值"设置为"每发送五次,休眠一次",郝么Binlog dump线程就是要判断从上一次休眠开 始,更新数据的发送次数是否达到预设的次数阔值。具体实现中,参见图5所示的流程,可 W通过增加 binlog_event_sent计数,来判断次数是否足够,比如,Binlog dump线程每次 发送一个binlog_event,发送一次计数增加 1,当发送了五个binlog_event时就可W休眠 了;在休眠时可W将该计数清零,重新计算开始下一轮的判断。
[0038] 图5中所示的binlog_event_^tes_sent计数,是用于供同步监控模块计算 Binlog dump线程的数据发送速度所使用,后续在同步监控模块的流程中描述。Binlog dump线程根据次数阔值如果确定需要休眠,则将当前线程休眠"休眠时间"即binlog_ send_idle_pe;rid微砂,然后再将读取的Binlog_event发送出去。
[0039] 假设某个线程并不需要被限速,比如备库,郝么备库同步对应的Binlog dump线 程在启动后判断自己是否应该被限速时,将确定自己并不需要限速,因为binlog_send_ limit_users中并没有自己连接的用户名,不将自己加入限速列表,从而也不需要获取速度 限制参数,读取到Binlog_event后直接发送即可,不需要进行休眠。可W看到,通过设置 binlog_send_limit_users,可W对特定的线程进行速度限制,比如对DRC、jingwei进行速 度限制,而对备库的同步不进行限制,避免了 DRC、jingwei的同步占用较多带宽对备库同 步造成影响,防止备库同步的延迟,保证备库的可用性,提高数据的可靠保障。
[0040] 如下结合图6所示的流程,说明同步监控模块的执行过程,同步监控模块是用于 对Binlog dump线程进行速度监控的线程,可W称为Binlog speed监控线程,主要是用于 计算Binlog dump线程的数据发送速度,并据此进行调整,实现对数据发送的速度控制。
[0041] 参见图6, Binlog speed监控线程随着数据库服务器AliS化的启动而启动,在启 动后定时扫描限速列表,如果线程不为空,也就是限速列表中存在线程,则计算该当前线程 的数据发送速度。在计算速度时,Binlog speed监控线程可W是从Binlog dump线程获取 发送参数,比如图5中所示的binlog_event_^tes_sent计数,Binlog dump线程每发送一 个binlog_event,就会将该event对应的字节数进行累计,Binlog speed监控线程根据发 送的字节数和时间来计算Binlog dump线程的数据发送速度。
[0042] 例如,该Binlog speed监控线程是每隔1毫砂执行一次,也就是每隔1毫砂进行 一次发送速度的计算;在距离上一次计算速度达到1毫砂时,Binlog speed监控线程将当 前Binlog dump线程反馈的binlog_event_^tes_sent计数与上一次计算时的计数做差 值,就是在1毫砂时间内发送的字节数,可W计算得到速度。
[0043] Binlog speed监控线程将上述计算得到的数据发送速度,与预设的速度阔值进 行比较,并进而调整预设的休眠条件,具体是调整Binlog dump线程中的net_tbead_ 化equency成员,该成员参数用于指示发送频率,该发送频率也就是上面描述的次数阔值, 通过调整该次数阔值实现对数据发送速度的控制。
[0044] 例如,如果数据发送速度低于速度阔值,则调整net_threat化equen巧成员,提 高发送频率。比如,在调整之前的次数阔值是5,也就是每发送5次Binlog dump线程休眠 一次;经过比较发现,需要提高发送频率,调整后变更为每发送3次休眠一次,次数阔值降 低了。
[0045] 又例如,如果数据发送速度高于速度阔值,则调整net_thread_hequen巧成员, 降低发送频率。比如,在调整之前的次数阔值是5,也就是每发送5次Binlogdump线程休眠 一次;经过比较发现,需要降低发送频率,调整后变更为每发送7次休眠一次,次数阔值提 高了。
[0046] Binlog speed监控线程对于限速列表中的每一个线程,都会按照上述的方式进 行速度控制,即获取该Binlog dump线程的一些相关的发送参数,据W计算线程的数据发 送速度,并结合预设的速度阔值调整发送频率,使得次数阔值得到更改;Binlog dump线程 根据该次数阔值判断是否进行休眠,从而数据发送速度得到了对应的调整。当确定好某个 Binlog dump线程的发送频率后,Binlog speed监控线程将获取限速列表中的下一个线程, 仍然执行上述的速度控制。
[0047] 当遍历完整个限速列表中的所有线程后,Binlog speed监控线程将让出CPUl毫 砂之后,再次扫描限速列表,即Binlog speed监控线程可W每毫砂执行一次。
[0048] 本实施例的数据同步控制方法,通过设置binlog_send_limit_users,可W准确限 定指定线程的数据发送速度,比如binlog_sentlimit_users =化c:3,就是针对DRC方式 的Binlog dump线程进行了上限速度的限定,从而可W有效控制DRC、jingwei等方式的数 据同步占用较多带宽而对备库同步造成延迟影响,保证了备库的及时更新,也避免数据同 步速度过高占用过多带宽而对业务的响应造成影响。此外,采用该方法对某个线程进行限 速,对线程不会造成很大的影响,只要将需要限速的线程加入到限速列表即可,监控线程会 扫描该限速列表,对列表中的线程进行速度控制,被监控线程不需要重新连接,加入列表即 可进行速度控制的生效。而且,该方法是在数据库(例如AliSQL)内核实现,方案统一,易 于运维调度。
[0049] W上所述仅为本发明的较佳实施例而已,并不用W限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1. 一种数据同步控制方法,其特征在于,所述方法应用于数据同步控制装置,所述装置 包括数据发送模块和同步监控模块;所述方法包括: 数据发送模块获取待同步的更新数据; 所述数据发送模块判断是否满足预设的休眠条件,若是,则所述数据发送模块在经过 预设的休眠时间之后,将所述更新数据发送至同步装置。2. 根据权利要求1所述的方法,其特征在于,所述预设的休眠条件是:从上一次休眠开 始,更新数据的发送次数达到预设的次数阈值。3. 根据权利要求1所述的方法,其特征在于,在所述数据发送模块获取待同步的更新 数据之前,还包括: 所述数据发送模块获取预设的限速信息,所述限速信息包括:数据同步方式的标识、以 及对应所述数据同步方式的速度阈值; 在确定所述数据发送模块使用的数据同步方式与所述限速信息中的标识相同时,所述 数据发送模块将自身对应的模块标识加入限速列表,以使得所述同步监控模块根据所述限 速列表中的模块标识,设置所述数据发送模块对应的所述预设的休眠条件。4. 根据权利要求3所述的方法,其特征在于,所述设置所述数据发送模块对应的所述 预设的休眠条件,包括: 所述同步监控模块计算所述数据发送模块的数据发送速度; 在确定所述数据发送速度低于所述速度阈值时,所述同步监控模块调整所述预设的休 眠条件,以使得所述数据发送速度提高; 在确定所述数据发送速度高于所述速度阈值时,所述同步监控模块调整所述预设的休 眠条件,以使得所述数据发送速度降低。5. 根据权利要求3所述的方法,其特征在于,还包括: 当所述数据发送模块停止运行时,所述数据发送模块将自身对应的模块标识从所述限 速列表移除。6. -种数据同步控制装置,其特征在于,包括:数据发送模块和同步监控模块;其中, 所述数据发送模块,用于获取待同步的更新数据,并判断是否满足预设的休眠条件,若 是,则所述数据发送模块在经过预设的休眠时间之后,将所述更新数据发送至同步装置;所 述预设的休眠条件是由所述同步监控模块设置。7. 根据权利要求6所述的装置,其特征在于,所述预设的休眠条件是:从上一次休眠开 始,更新数据的发送次数达到预设的次数阈值。8. 根据权利要求6所述的装置,其特征在于, 所述数据发送模块,还用于在获取待同步的更新数据之前,获取预设的限速信息,所述 限速信息包括:数据同步方式的标识、以及对应所述数据同步方式的速度阈值;在确定所 述数据发送模块使用的数据同步方式与所述限速信息中的标识相同时,所述数据发送模块 将自身对应的模块标识加入限速列表; 所述同步监控模块,用于根据所述限速列表中的模块标识,设置所述数据发送模块对 应的所述预设的休眠条件。9. 根据权利要求8所述的装置,其特征在于, 所述同步监控模块,用于计算所述数据发送模块的数据发送速度;在确定所述数据发 送速度低于所述速度阈值时,所述同步监控模块调整所述预设的休眠条件,以使得所述数 据发送速度提高;在确定所述数据发送速度高于所述速度阈值时,所述同步监控模块调整 所述预设的休眠条件,以使得所述数据发送速度降低。10.根据权利要求8所述的装置,其特征在于, 所述数据发送模块,还用于在所述数据发送模块停止运行时,将自身对应的模块标识 从所述限速列表移除。
【专利摘要】本发明提供一种数据同步控制方法和装置,所述方法应用于数据同步控制装置,所述装置包括数据发送模块和同步监控模块;其中方法包括:数据发送模块获取待同步的更新数据;所述数据发送模块判断是否满足预设的休眠条件,若是,则所述数据发送模块在经过预设的休眠时间之后,将所述更新数据发送至同步装置。本发明降低了数据同步占用的带宽,降低了对备库和业务的影响。
【IPC分类】G06F17/30
【公开号】CN105528366
【申请号】CN201410521771
【发明人】张青林, 张文亮
【申请人】阿里巴巴集团控股有限公司
【公开日】2016年4月27日
【申请日】2014年9月30日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1