网易视频云:开源 MYSQL 多线程逻辑导入工具 MYLOADER 原理与改进 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
shipinyun2016
V2EX    云计算

网易视频云:开源 MYSQL 多线程逻辑导入工具 MYLOADER 理与改进

  •  
  •   shipinyun2016 2016-06-24 10:35:04 +08:00 2233 次点击
    这是一个创建于 3482 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的 PASS 服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。现在,网易视频云与大家分享一下开源 MYSQL 多线程逻辑导入工具 MYLOADER 原理与改进.

    本篇聊聊与 mydumper 配合使用的 myloader 工具。

    myloader 是 MySQL 领域少有的多线程的恢复工具,为了能够更好的理解其如何进行工作,有必要对 mydumper 所生成的备份结果进行简单介绍,下图即为 mydumper 0.9.1 版本所输出的备份目录结构: 1rds-user@import-blogbench-test:~$ ls mydumper-data/ 2dumpdb.dumptable.00000.sql dumpdb.dumptable-schema.sql dumpdb-schema-post.sql 3dumpdb.dumptable.00001.sql dumpdb.dumptable-schema-triggers.sql metadata 4dumpdb.dumptable.00002.sql dumpdb.dumptable-schema-view.sql 5dumpdb.dumptable.00003.sql dumpdb-schema-create.sql

    a 、 metadata 保存一致性数据导出时的 BinLog 信息和导出开始和结束时间,形如: 1Started dump at: 2016-03-20 21:18:54 2SHOW MASTER STATUS: 3Log: mysql-bin.000027 4Pos: 350229576 5Finished dump at: 2016-03-20 21:19:04

    b 、 dumpdb 和 dumptable 分别表示导出的数据库和表的名称;

    c 、 dumpdb-schema-create.sql 和 dumpdb-schema-post.sql 分别保存数据库 dumpdb 的建库语句和该库的 functions 、 procedures 及 events ;

    d 、 dumpdb.dumptable-schema.sql 保存建表语句; dumpdb.dumptable-schema-view.sql 保存表相关视图; dumpdb.dumptable-schema-triggers.sql 保存表相关的触发器;

    e 、 dumpdb.dumptable.00000.sql ~ dumpdb.dumptable.00003.sql 保存 dumptable 表所导出的数据

    可将整个过程分为三个阶段:

    1. 首先由 myloader 主线程完成建库建表,依次将备份目录下 dumpdb-schema-create.sql 和 dumpdb.dumptable-schema.sql 中的建库和建表语句应用到目标数据库实例中;

    2. 接着 myloader 主线程会生成多个工作线程,由这些工作线程将所有 dumpdb.dumptable..sql 文件中的记录导入到对应表中,这个阶段是并行的,并行粒度为文件,工作线程完成所有 dumpdb.dumptable..sql 文件数据导入后销毁;

    3. 最后主线程将 dumpdb-schema-post.sql 、 dumpdb.dumptable-schema-view.sql 和 dumpdb.dumptable-schema-triggers.sql 文件中存在的 schema 导入对应数据库和表中 myloader 参数比较简单,主要有如下几个:

    -d ,指定待恢复的备份目录,注意,该目录必须是 mydumper 生成的, myloader 会判断该目录下是否存在 metadata 文件;

    -q ,即 queries-per-transaction ,表示在工作线程导入表数据时,多少条记录做一次 commit ,默认为 1000 ;

    -o ,该参数作用于 myloader 第一阶段,为 true 时会删除目标数据库实例对应数据库下的同名表;

    -B ,表示恢复时,将表恢复到指定的数据库中;

    -s ,该参数为 myloader 0.9.1 新增参数,用于恢复备份目录中指定的数据库;

    -e ,表示在恢复时开启 BinLog ;

    -t ,表示主线程需要创建的工作线程数目,影响 myloader 数据恢复并发度,需要综合存储 IO 性能等因素确定具体值。

    网易 RDS 对 myloader 工具做了以下几点优化:

    增强-s 参数,官方版本-s 仅能指定某个数据库,网易 RDS 对其进行了增强,可以指定多个数据库; 增加-M 参数,用于在多线程情况下,调节数据并发度,如设置 Threads_running=100 ,则工作线程在读取每个数据文件前,会先判断当前数据库实例负载是否达到或超过该值,若是,则该工作线程暂时进入休眠状态; 与 mydumper 相似,网易 RDS 为 myloader 也增加了进度查询功能,能够查询工作线程所需执行的所有导入任务数、当前已经完成的导入任务数及每个导入任务所花费时间。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4054 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 05:26 PVG 13:26 LAX 21:26 JFK 00:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86