1、备份类型
  • 完全备份,部分备份
    • 完全备份:整个数据集
    • 部分备份:只备份数据子集,如部分库或表
  • 增量备份、差异备份
    • 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂
    • 差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单
      //注意:二进制日志文件不应该与数据文件放在同一磁盘

2、备份种类

冷、温、热备份

  • 冷备:读写操作均不可进行
  • 温备:读操作可执行;但写操作不可执行
  • 热备:读写操作均可执行

MyISAM引擎:温备,不支持热备

InnoDB引擎: 都支持

  • 物理和逻辑备份
  • 物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快
  • 逻辑备份:从数据库中“导出”数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可能丢失精度
3、mysqldump备份与恢复(逻辑备份)

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表的数据为

mysql备份与恢复_Mysql

模拟误删数据:

1、先插入一条数据,id=6,name=诸葛亮,age=30

2、再删除id为5的数据

3、最后修改id为1的数据,name改为张飞1

需求:现在想要跳过操作2,保留操作1和操作3

 

先flush logs刷新日志,再全量恢复到最近一次备份

执行show master status,找出当前二进制文件名

mysql备份与恢复_Mysql_02

导出二进制文件:

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):

mysql备份与恢复_Mysql_03