一、备份与还原
1、备份类型
(1)完全备份,部分备份
完全备份:整个数据集
部分备份:只备份数据子集,如部分库或表
(2)完全备份、增量备份、差异备份
增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂
差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单
注意:二进制日志文件不应该与数据文件放在同一磁盘
(3)冷、温、热备份( MyISAM:温备,不支持热备 InnoDB:都支持)
冷备:读写操作均不可进行
温备:读操作可执行;但写操作不可执行
热备:读写操作均可执行
(4)物理和逻辑备份
物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快
逻辑备份:从数据库中“导出”数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可能丢失精度
2、MYSQLDUMP备份与恢复(必须启用二进制日志)
(1)MYSQLDUMP常见选项
-A, --all-databases 备份所有数据库,含create database
-B , --databases db_name… 指定备份的数据库,包括create database语句
-E, --events:备份相关的所有event scheduler
-R, --routines:备份所有存储过程和自定义函数
--triggers:备份表相关触发器,默认启用,用--skip-triggers,不备份触发器
--default-character-set=utf8 指定字符集
--master-data[=#]: 此选项须启用二进制日志
1:所备份的数据之前加一条记录为CHANGE MASTER TO语句,非注释,不指定#,默认为1
2:记录为注释的CHANGE MASTER TO语句
此选项会自动关闭--lock-tables功能,自动打开-x | --lock-all-tables功能(除非开启--single-transaction)
-F, --flush-logs :备份前滚动日志,锁定表完成后,执行flush logs命令,生成新的二进制日志文件,配合-A 或 -B 选项时,会导致刷新多次数据库。建议在同一时刻执行转储和日志刷新,可通过和--single-transaction或-x,--master-data 一起使用实现,此时只刷新一次日志
--compact 去掉注释,适合调试,生产不使用
-d, --no-data 只备份表结构
-t, --no-create-info 只备份数据,不备份create table
-n,--no-create-db 不备份create database,可被-A或-B覆盖
--flush-privileges 备份mysql或相关时需要使用
-f, --force 忽略SQL错误,继续执行
--hex-blob 使用十六进制符号转储二进制列,当有包括BINARY, VARBINARY,BLOB,BIT的数据类型的列时使用,避免乱码
-q, --quick 不缓存查询,直接输出,加快备份速度
MYSQLDUMP备份还原至最新状态
1、确保二进制日志开启
2、使用mysqldump进行完全备份
3、进行数据库修改
4、删除数据库,确保无用户访问再重启数据库服务(可设置防火墙或者配置文件中加skip_networking)
5、查看当前二进位置,根据/data/all.sql中日志位置以及当前二进制位置定位需要的二进制范围
6、关闭二进制日志,导入备份的文件,然后开启二进制日志
7、做检查确认数据库恢复正常,恢复用户访问。
恢复误删除的表
1、确保二进制日志开启
2、使用mysqldump进行完全备份,并修改数据库
3、删除数据库中表并继续在其他表中添加数据
4、确认/data/all.sql中二进制日志位置以及立即刷新二进制日志,备份二进制日志,注释掉删除表的操作
5、删除数据库,重启数据库服务
6、关闭二进制日志,还原数据库文件
7、检查数据库文件是否恢复,最后开启二进制日志,开通用户访问
生产中使用备份数据库脚本
1、for db in `mysql -e 'show databases'|grep -Ev '^(information_schema|performance_schema|Database)$'`;do mysqldump -B $db --single-transaction --master-data=2 |gzip > /data/$db.sql.gz ;done
2、mysql -e 'show databases'|grep -Ev '^(information_schema|performance_schema|Database)$'|sed -rn 's@(.*)@mysqldump -B \1 --single-transaction --master-data=2 |gzip > /data/\1\.sql\.gz@p'|bash
xtrabackup 完全备份还原
1、安装xtrabackup,创建backup文件夹
2、开始备份
3、将文件拷贝到别的机器
4、对备份文件进行预处理
5、把文件拷贝到数据库目录(数据库目录需要为空,数据库服务关闭)
6、修改数据库目录权限,重启数据库服务,检查数据库数据是否正常
xtrabackup 增量备份与还原
1、备份过程
(1)完全备份
(2)第一次修改数据
未修改前表