参考资料
第19章_数据库备份与恢复.pdf · 资料文件 · 语雀

1 概述

逻辑备份:对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工具为mysqldump 。逻辑备份就是 备份sql语句 ,在恢复的时候执行备份的sql语句实现数据库数据的重现。
物理备份:备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以用xtrabackup工具来进行物理备份。

2 数据库备份与恢复

逻辑备份与恢复

  1. 逻辑备份

MySQL 中常用的逻辑备份工具为mysqldump

  • 备份一个数据库:mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname...]]> 备份文件名称.sql
  • 备份部分表:mysqldump -uroot -p officialweb book> book.sql

其他操作(如只备份结构不备份数据)

详见:第19章_数据库备份与恢复.pdf · 资料文件 · 语雀->2. mysqldump实现逻辑备份

  1. 逻辑恢复

逻辑备份得到的是sql语句(如insert一堆数据),此时可以通过执行命令mysql –u root –p [dbname] < backup.sql以恢复数据。

详见:第19章_数据库备份与恢复.pdf · 资料文件 · 语雀->3. mysql命令恢复数据

物理备份与恢复

  1. 物理备份

直接将MySQL中的数据库文件复制出来,特点:

  • 这种方式方便、快速,但不是最好的备份方法,因为实际情况可能 不允许停止MySQL服务器 或者 锁住表 ,而且这种方法 对InnoDB存储引擎 的表不适用。
  • 对于MyISAM存储引擎的表,这样备份和还原很方便,但是还原时最好是相同版本的MySQL数据库,否则可能会存在文件类型不同的情况。
  • 物理备份完毕后,执行 UNLOCK TABLES 来结算其他客户对表的修改行为。

为了保证备份的一致性,常用物理备份的准备方法:

  • 方式1:备份前,将服务器停止。
  • 方式2:备份前,对相关表执行FLUSH TABLES WITH READ LOCK操作。这样当复制数据库目录中的文件时,允许其他客户继续查询表。同时,FLUSH TABLES语句来确保开始备份前将所有激活的索引页写入硬盘。

    说明:MySQL的数据库目录位置不一定相同。

    • 在Windows平台下,MySQL 8.0存放数据库的目录通常默认为 “ C:\ProgramData\MySQL\MySQLServer 8.0\Data ”或者其他用户自定义目录;
    • 在Linux平台下,数据库目录位置通常为/var/lib/mysql/;
    • 在MAC OSX平台下,数据库目录位置通常为“/usr/local/mysql/data”
  1. 物理恢复

直接将备份的数据库数据拷贝到数据目录下,并重启MySQL服务器,然后设置权限。详见下方文档

详见:第19章_数据库备份与恢复.pdf · 资料文件 · 语雀->5. 物理恢复:直接复制到数据库目录

3 表的导出和导入

详见:第19章_数据库备份与恢复.pdf · 资料文件 · 语雀->6. 表的导出与导入

4 数据库迁移

最常见和最安全的方式是使用mysqldump命令导出数据,然后在目标数据库服务器中使用MySQL命令导入

详见:第19章_数据库备份与恢复.pdf · 资料文件 · 语雀->7. 数据库迁移

image.png

5 删除挽救

详见:第19章_数据库备份与恢复.pdf · 资料文件 · 语雀->8. 删库了不敢跑,能干点啥?