目标:什么是数据库备份,怎么去备份
什么是MySQL备份
备份数据库时的状态
- Hot Backup(热备份):正常运行中直接备份
- Cold Backup(冷备份):数据库完全停止后再进行备份
- Warm Backup(温备份):介于热备和冷备之间, 数据库只能读
备份文件的格式
- 逻辑备份:输出文本或SQL语句 (导出成人可读的逻辑性的文本)
- 物理备份(裸文件):备份数据库底层文件
备份的内容
- 完全备份:备份完整数据
- 增量备份:备份数据的差异
- 日志备份:备份Binlog(严格讲也属于增量备份的一种,增量备份一般指逻辑的备份。)
备份工具
- mysqldump:备份的是逻辑备份、热备份、全量备份
- xtrabackup:物理备份、热备份、全量备份 + 增量备份
备份实践
OUTFILE的使用方式
OUTFILE是Mysql的原生SQL指令,它是最原始的逻辑备份方式。
它的备份的功能和效果完全取决于如何写SQL语句
1.导出路径
首先查出Mysql导出路径
show variables like '%secure%';
2.修改导出路径
如果secure_file_priv为Null,则需要修改my.cnf
[mysqld]
secure_file_priv=/home
3.使用INTO导出
注意事项:
- 在INNODB事务下面,可以做到一致性视图
- 修改分隔符:fields terminated by
- 修改换行符:lines terminated by
-- 直接导出
select * into outfile '/home/t3-out' from t3;
-- 修改分隔符,用逗号分隔
select * into outfile '/home/t3-out' fields terminated by ',' from t3;
-- 修改换行符,用分号
select * into outfile '/home/t3-out' fields terminated by ',' lines terminated by ';' from t3;
4. OUTFILE的缺陷
- 输出的文本比较简单
- 很难进行还原,现在往往用来导出简单的数据
mysqldump的使用方式
1.全量备份
全量备份
mysqldump -uroot -p123456 --databases sakila --single-transaction > test.sql
还原
source test.sql
2.全量备份+Binlog增量备份
增量备份思路
- Binlog忠实的记录了Mysql的数据变化
- mysqldump全量备份之后,可用Binlog作为增量
- mysqldump全量备份后,切换新的Binlog文件
- 从零还原时,采用全量备份还原+Binlog还原
全量备份+增量备份的准备工作
- --flush-logs: 备份后切换Binlog文件
- --master-data=2:记录切换后的Binlog文件名,并且注释方式写入到test.sql文件里
mysqldump -uroot -p123456 --databases sakila --single-transaction --flush-logs --master-data=2 > test.sql
Binlog增量备份
- 需要增量备份时,使用mysqladmin切换Binlog文件
- 将所有新增的Binlog文件备份
mysqladmin -uroot -p123456 flush-logs
还原
# 如果全量恢复
source test.sql
# 然后将增量的Binlog还原到数据库
mysqlbinlog 「文件名」| mysql -uroot -p123456
3.mysqldump注意事项
- --single-tranction:在RR(可重复读)级别下进行(INNODB)
- --lock-all-tables:使用FTWRL锁所有表(MyISAM)
- --lock-tables:使用READ LOCAL锁当前库的表(MyISAM)
- --all-databases:备份所有的库
4.mysqldump缺点
- 导出逻辑数据,备份慢,会影响性能
- 还原需要执行SQL,解析速度也比较慢
5.mysqldump总结
- mysqldump使用简单,可以热备份
- SQL文件可以直接执行、占用空间少、可阅读性高
- 备份、还原的性能不如物理备份
XtraBackup备份
物理备份的优点
- 直接备份INNODB底层文件
- 导出不需要转换,速度快
- 工作时对数据库的压力比较小
- 更容易实现增量备份
XtraBackup:下载地址
mysql8.0选择XtraBackup8.0、mysql5.2~5.6选择XtraBackup2.4版本
Comments NOTHING