备份的基本流程如下:
FLUSH TABLES
功能:关闭实例上所有打开表
目的:为第二步prepare,为了避免较长的事务操作造成FLUSH TABLES WITH READ LOCK操作迟迟得不到锁,但同时又阻塞了其它客户端操作
FLUSH TABLES WITH READ LOCK
功能:加全局读锁
目的:获得DB一致性状态
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
功能:设置当前会话的事务隔离等级为RR,RR可避免不可重复读和幻读
目的:确保在备份事务中任何时刻数据都相同
START TRANSACTION WITH CONSISTENT SNAPSHOT
功能:获取当前数据库的快照,这个是由mysqldump中--single-transaction决定的
目的: 简而言之,就是开启事务并对所有表执行了一次SELECT操作,这样可保证备份时,在任意时间点执行select * from table得到的数据和执行START TRANSACTION WITH CONSISTENT SNAPSHOT时的数据一致
obtain Log position
功能:获取binlog的相关信息,这个是由--master-data决定的
目的:记录了开始备份时,binlog的状态信息,包括MASTER_LOG_FILE和MASTER_LOG_POS
innobackupex的本质:innobackupex 脚本用来备份非 InnoDB 表,同时会调用 xtrabackup 命令来备份 InnoDB 表
备份的基本流程如下:
逻辑备份mysqldump和物理备份xtrabackup的流程
原文地址:http://blog.51cto.com/11257187/2119413