Skip to content

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相关的记录