主要步骤概括
主线程 FLUSH TABLES WITH READ LOCK, 施加全局只读锁,以阻止DML语句写入,保证数据的一
致性
读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中,以供即使点恢
复使用
N个(线程数可以指定,默认是4)dump线程 START TRANSACTION WITH CONSISTENT
SNAPSHOT; 开启读一致的事物
dump non-InnoDB tables, 首先导出非事物引擎的表
主线程 UNLOCK TABLES 非事物引擎备份完后,释放全局只读锁
dump InnoDB tables, 基于事物导出InnoDB表
事物结束
Mydumper的less locking模式
Mydumper使用 --less-locking 可以减少锁等待时间,此时mydumper的执行机制大致为
主线程 FLUSH TABLES WITH READ LOCK(全局锁)
Dump线程 START TRANSACTION WITH CONSISTENT SNAPSHOT;
LL Dump线程 LOCK TABLES non-InnoDB(线程内部锁)
主线程UNLOCK TABLES
LL Dump线程 dump non-InnoDB tables
LL DUmp线程 UNLOCK non-InnoDB
Dump线程 dump InnoDB tables
Mydumper备份所生成的文件
所有的备份文件在一个目录中,目录可以自己指定。
目录中包含一个metadata文件
记录了备份数据库在备份时间点的二进制日志文件名,日志的写入位置,如果是在从库进行备份,
还会记录备份时同步至主库的二进制日志文件及写入位置
每个表有两个备份文件
database.table-schema.sql 表结构文件
database.table.sql 表数据文件
如果对表文件分片,将生成多个备份数据文件,可以指定行数或指定大小分片
binary logs(新版已废弃)
启用 --binlogs 选项后,二进制文件存放在binlog_snapshot目录下
daemon mode
在这个模式下,有五个目录0、1、binlogs、binlog_snapshot、last_dump。
备份目录是0和1,间隔备份,如果mydumper因某种原因失败而仍然有一个好的快照,当快照完
成后,last_dump指向该备份。
Mydumper安装
Mydumper使用C语言编写,使用glibc库。mydumper安装所依赖的软件包: glibc 、 zlib 、
pcre 、 pcre-devel 、 gcc 、 gcc-c++ 、 cmake 、 make 、 mysql客户端库文件 。
安装依赖包
Centos
评论