数据库备份的重要性
在生产环境中,数据的安全性至关重要,任何数据的丢失都可能产生严重的后果。
造成数据丢失的原因有:程序错误、人为操作错误、运算错误、磁盘故障、灾难(如火灾、地震)和盗窃。
数据库备份的分类
从物理与逻辑的角度,备份可分为:
物理备份
对数据库操作系统的物理文件 (如数据文件,日志文件等)的备份。
物理备份方法
冷备份 (脱机备份):是在关闭数据库的时候进行的。
热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件。
温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作。
逻辑备份
对数据库逻辑组件 (如:表等数据库对象)的备份。
从数据库的备份策略角度,备份可分为:
完全备份:每次对数据库进行完整的备份。
差异备份:备份自从上次完全备份之后被修改过的文件。
增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份。
MySQL完全备份与恢复
每次进行完全备份,这样会导致备份文件占用空间巨大并且会有大量的重复数据。
恢复的时候,直接使用备份的文件即可。
MySQL差异备份与恢复
差异备份,都会备份上一次完全备份之后的数据,可能会出现备份重复的数据,也会导致占用额外的磁盘空间。
恢复时,先恢复完全备份的数据,再恢复差异备份的数据。
MySQL增量备份与恢复
每次增量备份都是上一次完全备份数据增量之后的数据 不会出现备份重复数据的情况,也不会占用额外的磁盘空间。
恢复时,需要按次序 完全备份 第一次增量 第二次增量。
MySQL备份恢复命令
全量备份
1、完全备份一个或多个完整的库 (包括这个库下的所有表 )
mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql
2、完全备份中 备份mysq1所有的库
mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql
3、完全备份 指定库中的某张表
mysqldump -u root -p[密码] 库名 [表名1] [表名2] ... > /备份路径/备份文件名.sql
例:mysqldump -u root -p -d kgc info1 info2 > /opt/kgc_info1.sql
使用“-d”选项,说明只保存数据库的表结构
不使用“-d"选项,说明表数据也进行备份,只做为一个表结构模板
4、查看备份文件
grep -v "^--" /opt/kgc_info1.sql | grep -v "^/" | grep -v "^$"
恢复
1、使用source恢复数据库
source /opt/info.sql
show tables
2、 mysql -uroot -p123 数据库 < /文件目录/备份文件.sql
mysql -uroot -p123 -e 'show tables from 数据库;'
注:mysqldump 严格来说属于温备份,会需要对表进行写入的锁定。
当备份时加 --databases ,表示包含ky13库。
当备份时不加 --databases,表示不包含ky13库,只备份数据库下的所有表。