共计 1443 个字符,预计需要花费 4 分钟才能阅读完成。
前言:
上篇文章介绍了 mydumper 备份工具的应用办法,文中有提到 mydumper 和 myloader 是一对互相的命令,即 mydumper 负责备份(导出),myloader 负责复原(导入)。那么 myloader 又该如何应用呢?本篇文章咱们一起来看下。
1. myloader 介绍
myloader 是与 mydumper 工具配合应用的多线程备份复原工具,能够间接以 mydumper 输入文件为输出,复原备份数据。次要用于将 dump 进去的 sql 文件以并行的形式进行复原。
执行 myloader –help 能够查看帮忙信息,同样的,咱们来看下 myloader 相干参数:
参考官网介绍,以下简要阐明局部罕用的参数。
参数名 | 缩写 | 含意 |
---|---|---|
–user | -u | 应用的用户名 |
–pasword | -p | 连贯所用的用户明码 |
–host | -h | MySQL 服务端地址 |
–port | -P | MySQL 端口号 |
–threads | -t | 开启的线程数,默认是 4 |
–directory | -d | 指定待复原的备份目录 |
–queries-per-transaction | -q | 每次事务执行的查问数量,默认是 1000 |
–overwrite-tables | -o | 如果要复原的表存在,则先 drop 掉该表 |
–database | -B | 须要还原到哪个数据库(指标数据库) |
–source-db | -s | 抉择被还原的数据库(源数据库) |
–enable-binlog | -e | 在复原时开启 binlog |
咱们晓得,myloader 也是多线程的,面对 mydumper 备份进去的那么多文件,复原的时候是如何程序执行的呢?各个线程是如何工作的?myloader 具体工作流程可参考下图:
即首先会创立一个主线程,主线程负责主逻辑,子线程为 worker 线程,执行具体复原数据工作,子线程执行实现后再由主线程创立函数、存储过程、事件及视图、触发器这些对象。
2. myloader 复原示例
咱们以上篇文章备份出的文件为例,来看下如何用 myloader 进行复原:
# 复原备份文件中的全副 若表已存在则先删除
myloader -u root -p 123456 -o -d /backups/all3
# 从全备中复原指定库
myloader -u root -p 123456 -s db1 -o -d /backups/all3
# 将某个数据库备份还原到另一个数据库中(指标库不存在则会新建)myloader -u root -p 123456 -B recover_db1 -s db1 -o -d /backups/all3
myloader -u root -p 123456 -B recover_db1 -o -d /backups/db1
# 复原时开启 binlog(有备库的时候须要开启)myloader -u root -p 123456 -e -o -d /backups/db1
# 无奈间接还原单表 只能找到单表的 sql 文件 进入命令行 source 执行
source db1.tb1-schema.sql 还原表构造
source db1.tb1.sql 还原表数据
能够看到应用 myloader 复原数据还是很不便的,并且有多个参数可选,复原场景也更加灵便。比方咱们能够从全备中复原出单个库,或者将备份复原到一个新库中等等,这些场景根本能笼罩日常复原需要。尽管不反对单表复原,但咱们能够到文件夹中轻松找到该表的建表及插数据的 sql 脚本,进入 mysql 命令行中再执行单个脚本也能实现复原单表的需要。
不过要留神的是 myloader 复原时默认不开启 binlog,这尽管能够放慢复原速度,然而当存在从库时,肯定要留神应用 -e 参数来关上 binlog 记录。