Mysql数据备份与恢复实战


为什么要备份?

备份是为了:
  灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作等数据丢失场景。

备份类型

完全备份:整个数据集
部分备份:只备份数据子集,如部分库或表
增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂
差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单。

冷备份:读写操作均不可进行,数据库停止服务
温备份;读操作可执行,但写操作不可执行
热备份:读写操作均可执行

MyISAM: 温备,不支持热备
InnoDB: 都支持

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

注意:二进制日志文件不应该与数据文件放在同一磁盘。

备份内容

备份什么?
  1.数据
  2.二进制日志、InnoDB的事务日志
  3.用户账号,权限设置,程序代码(存储过程、函数、触发器,事件调度器)
  4.服务器的配置文件

备份工具

mysqldump备份

Schema和数据存储在一起、巨大的SQL语句、单个巨大的备份文件
mysqldump是MySQL的客户端命令,通过mysql协议连接至mysql服务器进行备份

参考手册:https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

命令格式

Usage: mysqldump [OPTIONS] database [tables]    支持指定数据库和指定多表的备份,但数据库本身定义不备份
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

实战案例:恢复误删除的表

案例说明:
   每天凌晨2:30做完全备份,早上10:00误删除了students表,10:10才发现故障,
   现在需要将数据库还原到10:10的状态,且恢复被删除的students表。

准备工作

恢复数据之前的准备工作
  1.准备数据库和数据表
  2.确保二进制日志已经开启

现有hellodb数据库中的students、teachers…等数据表

mysql> use hellodb;
Database changed

mysql> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes           |
| coc               |
| courses           |
| scores            |
| students          |
| teachers          |
| toc               |
+-------------------+
7 rows in set (0.01 sec)

现students、teachers表中有如下数据

mysql> select * from students;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
 ......
|    24 | Xu Xian       |  27 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值