乐趣区

关于mysql:使用myloader恢复数据教程

前言:

上篇文章介绍了 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 记录。

退出移动版