一、前言
1、我为什么要学备份。
答:是为了要恢复。
2、追求快速备份的技术是不是对的?
答:错的,越追求快速备份的技术,数据就越难恢复,甚至造成恢复失败!
3、是否可以用数据库的复制技术以及RAID阵列来代替备份?
答:不可以,复制技术和RAID 根本恢复不了drop 掉的database ,根本代替不了备份!不小心删除数据库的菜鸟绝对有!
二、设计Mysql备份方案的套路
1、大数据库必须要物理备份,小数据可以用逻辑备份!
2、保留多个备份集!
3、定期从逻辑备份(或者物理备份)中抽取数据,进行恢复测试!
4、保存二进制日志用于基于故障时间点的恢复!
二进制日志比较重要参数:expire_logs_days:保留二进制日志的天数, 这篇文章解释的很好,http://fity.cn/post/497/
5、借助第三方监控工具来验证备份是否正常!
6、通过演练整个恢复过程来测试备份和恢复!
7、对安全性认真考虑!如果有人能接触生产服务器,是否也能访问备份服务器!
8、在线备份还是离线备份!
答:如果生成服务数据量特别大,一直高负载状态,关机重启代价昂贵,那就得选择在线备份,由于有些企业对高标准的数据一致性需求,在线备份仍然会有明显的中断,所以还得选择业务低峰期进行!
如果关机重启代价不昂贵,就可以选择离线备份,保证了最简单、最安全,而且数据损坏和一致性的风险最小!
重点命令:FLUSH TABLES WITH READ LOCK http://www.cnblogs.com/cchust/p/4603599.html
总结:在FLUSH TABLES WITH READ LOCK的时候,恰巧有慢查询和大查询,会触发Waiting for table flush,以及导致mysql连接数满载,导致服务中断。
解决方案,监控慢查询日志,杀掉所有的长查询或等查询结束 以及要在低负载下执行备份操作等。
备份考虑的几个点:1、锁时间、2、备份时间、3、备份负载、4、恢复时间。
9、逻辑备份还是物理备份!
答案:混合式备份方案才是最佳:先使用物理备份,然后周期性的执行逻辑备份,
说明:选择混合式备份是降低因为单一选择物理本分或者逻辑备份所产生的缺点。
缺点:物理备份:不能夸平台
逻辑备份:占用cpu周期,恢复时间长,无法保证还原一定是同样的数据,
逻辑备份这个我出现过不一致的现象,也没查出来是啥原因!用的可视化客户端的导出功能。所以备份和恢复也要经过严格的测试才行!
10、备份什么!
-
数据;
-
配置文件;
-
代码:存储过程、存储函数、触发器
-
os相关的配置文件
-
复制相关的配置
-
二进制日志
11、考虑数据一致性和文件一致性!
自动备份方案:http://os.51cto.com/art/201309/410092.htm
备份详解:http://www.jb51.net/article/41570.htm