- 完全备份,部分备份
- 完全备份:整个数据集
- 部分备份:只备份数据子集,如部分库或表
- 增量备份、差异备份
- 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂
- 差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单
//注意:二进制日志文件不应该与数据文件放在同一磁盘
2、备份种类
冷、温、热备份
- 冷备:读写操作均不可进行
- 温备:读操作可执行;但写操作不可执行
- 热备:读写操作均可执行
MyISAM引擎:温备,不支持热备
InnoDB引擎: 都支持
- 物理和逻辑备份
- 物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快
- 逻辑备份:从数据库中“导出”数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可能丢失精度
3.1、备份user表和config表
mysqldump -uroot -p -h127.0.0.1 webchat user config > E:/mysql备份/user-config-201911041126.sql
3.2、备份webchat库
mysqldump -uroot -p -h127.0.0.1 --databases webchat > E:/mysql备份/webchat-201911041131.sql
恢复:
mysql -uroot -p -h127.0.0.1 < E:/mysql备份/webchat-201911041131.sql
3.3、备份整个数据库
mysqldump -uroot -p -h127.0.0.1 --all-databases > E:/mysql备份/all-201911041137.sql
恢复:
mysql -uroot -p -h127.0.0.1 < E:/mysql备份/all-201911041137.sql
4、基于时间点和基于位置的恢复
前提:mysql开启二进制日志
在my.ini里加上
log_bin=mysql_bin
server_id=1
4.1、基于时间点的恢复
1、创建测试库test和测试表student,student表的数据为
模拟误删数据:
1、先插入一条数据,id=6,name=诸葛亮,age=30
2、再删除id为5的数据
3、最后修改id为1的数据,name改为张飞1
需求:现在想要跳过操作2,保留操作1和操作3
先flush logs刷新日志,再全量恢复到最近一次备份
执行show master status,找出当前二进制文件名
导出二进制文件:
mysqlbinlog D:\mysql\mysql-5.7.25-winx64\data\mysql_bin.000007 > E:/mysql备份/mysql_bin.000007.txt
在二进制文件里找出上述三步操作的时间点分别为:
191105 22:23:17
191105 22:23:38
191105 22:24:02
那么执行下述语句即可完成基于时间点的增量恢复
mysqlbinlog –-stop-datetime="2019-11-05 22:23:36" D:\mysql\mysql-5.7.25-winx64\data\mysql_bin.000007 | mysql –uroot –p
mysqlbinlog –-start-datetime="2019-11-05 22:23:40" D:\mysql\mysql-5.7.25-winx64\data\mysql_bin.000007 | mysql –uroot –p
遇到的问题(已解决,解决方法:全量恢复之前需要flush logs):