如何更安全地做数据备份和恢复?
本节内容主要参考:极客时间李玥老师的《后端存储实战课》
全量备份
定期保存数据库快照
全量备份的缺点
1、丢失上次备份到宕机之间时间段的数据
2、全量备份的代价非常高
首先,备份文件包含数据库中的所有数据,占用的磁盘空间非常大;
其次,每次备份操作都要拷贝大量数据,备份过程中会占用数据库服务器大量的 CPU、磁盘 IO 资源,并且为了保证数据一致性,还有可能会锁表,这些都会导致备份期间,数据库本身的性能严重下降。所以,我们不能经常对数据库执行全量备份。
如何更安全地做数据备份和恢复?
使用mysqldump命令来执行全量备份。通过定期的全量备份,配合 Binlog增量备份,就可以把数据恢复到任意一个时间点
执行备份和恢复的注意事项
第一,“不要把所有的鸡蛋放在同一个篮子中”,无论是全量备份还是Binlog,都不要和数据库存放在同一个服务器上。
第二,在回放 Binlog 的时候,指定的起始时间可以比全量备份的时间稍微提前一点儿,确保全量备份之后的所有操作都在恢复的 Binlog 范围内,这样可以保证恢复的数据的完整性。因为回放 Binlog 的操作是具备幂等性的,多次操作和一次操作对系统的影响是一样的,所以重复回放的那部分 Binlog 并不会影响数据的准确性。
如何来实现数据库的高可用,避免宕机停服
但是,如果数据量比较大的话,这个恢复数据的时间是很长的,有可能需要恢复几个小时。通过双机热备HA来解决。
主从复制
可以阅读《MySQL主从复制》