MySQL教程学习之面试题12_关于MySQL备份与恢复
一、请解释全备、增备、冷备、热备概念及企业实践经验?
全备:备份数据库所有数据
增备:一次性备份所有数据,然后再增量备份。
冷备:需要关闭mysql服务,读写请求均不允许状态下进行。
温备:服务在线,但仅支持读请求,不允许写请求的情况下备份。
热备:备份的同时,业务不受影响
二、如何分表分库备份及批量恢复(口述脚本实现过程)?
备份库:
mysqldump -u 用户名 -p 密码 数据库名 >备份的文件名
备份表
mysqldump -u 用户名 -p 密码 数据库名 表名 >备份的文件名
三、mysqldump备份使用了-A -B参数,如何实现恢复单表?
风哥MySQL教程指示:
1.先用sed或awk将全库中的需要的表结构过滤出来
sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `SC`/!d;q' /fgbackup/itpuxbak.sql
2.再用grep将全库中相应的表内容过滤出来
grep 'INSERT INTO `SC`' /fgbackup/itpuxbak.sql
3.将1和2中过滤出来的SQL语句导入数据库即可
四、误执行drop数据,如何通过xtrabackup恢复?
1.关闭mysql服务
2.移除mysql的data目录及数据
3.将备份的数据恢复到mysql的data目录
4.启动mysql服务
五、误操作执行了一个drop库SQL语句,如何完整恢复?
风哥MySQL学习教程指示,如果条件允许,操作前最好禁止外面一切服务器访问mysql数据库,这里假设禁止外面访问数据库,具体步骤如下:
1.手动切割binlog日志并记好切割好的binlog日志文件位置,这里假设为009,备份全部binlog日志
2.找到之前全备数据最后备份到的binlog文件位置并记好位置,这几假设为005
3.用mysqladmin命令将005到008binlog文件中的SQL语句分离出来,并找到drop库的语句将其删掉
4.将之前全备数据导入mysql服务器
5.将步骤3中分离出的SQL语句导入mysql服务器
6.将009binlog文件删除,再次刷新binlog日志,到此数据库已恢复成功。