Mysqldump 模拟备份还原
mysql 备份还原是非常有必要的,用来防止误操作或者磁盘损坏的情况;
mysqldump是mysql官方自带的逻辑备份工具,针对myisam引擎进行温备(只能读,无法写,在线备份),针对Innodb进行(热备或者温备)
主要用于当数据量不是很大的情况下进行操作,方便快捷
备份策略:
每周 一次全备,每天一次增量备份,模拟当周二的时候,发生磁盘故障的情况下进行及时点还原;
==============
操作开始:
备份:
step1: 全备
每周日一次全备:
mysqldump --all-databases --flush-logs--master-data=2 --lock-all-tables > /tmp/mysql_bak/fullbak_20180505.sql
周一白天,新建db apple
Step2
周一夜里进行增量备份:
将所有二进制日志另存磁盘:cp mysql-bin.* /tmp/mysql_bak/
less fullbak_20180505.sql 可以看到全备截止的binlog
清理多余二进制日志,因为其内容已经被包含在全备中,所以这些二进制日志可以删除
purge binary logs to 'mysql-bin.000010';
flush logs, 刷新二进制日志
将第一天的增量mysql-bin.000010和mysql-bin.000011进行备份
cp mysql-bin.000010 /tmp/mysql_bak/
cp mysql-bin.000011 /tmp/mysql_bak/
Step3:
周二白天,插入数据
而后,模拟数据文件的磁盘坏了,二进制日志一般放其他磁盘,所以讲二进制日志mysql-bin.000012 COPY出来;
cp mysql-bin.000012 /tmp/mysql_bak
删除整个data目录,以模拟磁盘损坏情况的发生;
此时,无法启动或停止mysqld
Step4:还原
pkill mysqld 杀死mysqld进程
./scripts/mysql_install_db 初始化数据库
初始化后,账户root,密码空
service mysqld start 启动mysqld
进行周日全备的恢复: mysql -uroot -p </tmp/mysql_bak/fullbak_20180505.sql
登陆后可以看到数据库,此时还没有apple 库;
然后进行增量备份的恢复:mysql-bin.000010 和mysql-bin.000011
mysqlbinlog mysql-bin.000010 | mysql -uroot–p
mysqlbinlog mysql-bin.000011 | mysql -uroot-p
此时恢复到周一夜里备份的时间;
此时,可以看到apple库已被建立,contact表 id<10被删除;
然后恢复到故障时间点,需要使用二进制日志mysql-bin.000012
mysqlbinlog mysql-bin.000012 | mysql -uroot-p
此时可以看到插入的数据 lulijuan