MySQL备份与恢复
MySQL备份与恢复
Mysql备份与恢复
使用工具: mysqldump
备份数据库
mysqldump -u$USER -p$PASSWD -h$HOST -P$PORT --default-character-set=utf8 --dump-slave=2 --single-transaction management > ${BAK_DIR}/${today}/management.sql
- --dump-slave=2 表示需要记录导出数据时主库的binlog位置,会在生成的文件中插入语句
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=68691269;
(在从库上备份时使用,在主库上备份使用--master-data) - --single-transaction 取消锁库并利用Innodb事务特性确保数据一致,但对MyISAM引擎不能确保一致性(即备份期间的写入,仍有可能被导出到备份文件中)
恢复数据库
恢复的具体操作方法,就是先通过冷备份将数据库还原到备份点,然后在通过binlog生成从冷备点恢复的sql。分别执行下两个sql文件就可以了。
解析binlog文件
在冷备数据的基础上,借助binlog可以恢复到冷备时间点至最新binlog之间的任意时刻。
使用mysqlbinlog工具,对binlog文件进行解析
sudo mysqlbinlog mysql-bin.000019 -j 68691269 -d db_name > /tmp/binlog.sql
- --start-position=N, -j N 表示从binlog的那个位置开始解析,而这个起始点可以通过备份时的--dump-slave或--master-data参数得到
- --database=db_name, -d db_name 表示从binlog中输出与db_name相关的记录