物理备份和逻辑备份

  • 为了防止数据丢失,应定期对MySQL数据库服务器做备份。如果数据库中的数据丢失或者出现错误,就可以使用备份的数据进行恢复。主从服务器之间的数据同步问题可以通过复制功能实现。

物理备份

  • 备份磁盘上的数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。

逻辑备份

  • 对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工具为 mysqldump逻辑备份就是 备份sql语句 ,在恢复的时候执行备份的sql语句实现数据库数据的重现。

mysqldump实现逻辑备份

  • 可以通过数据库工具实现对数据库和表实现逻辑备份,生成.sql文件

    数据库备份与恢复 - 图1

物理备份

  • 直接将MySQL中的数据库文件复制出来。这种方法最简单,速度也最快。MySQL的数据库目录位置不一定相同:

    • 在Windows平台下,MySQL 8.0存放数据库的目录通常默认为 “ C:\ProgramData\MySQL\MySQLServer 8.0\Data ”或者其他用户自定义目录;
    • 在Linux平台下,数据库目录位置通常为/var/lib/mysql/;
    • 在MAC OSX平台下,数据库目录位置通常为“/usr/local/mysql/data”
  • 但为了保证备份的一致性。需要保证:

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

这种方式方便、快速,但不是最好的备份方法,因为实际情况可能 不允许停止MySQL服务器 或者 锁住 表 ,而且这种方法 对InnoDB存储引擎 的表不适用。对于MyISAM存储引擎的表,这样备份和还原很方便,但是还原时最好是相同版本的MySQL数据库,否则可能会存在文件类型不同的情况。

物理恢复

  • 步骤

    • 将备份的数据库数据拷贝到数据目录下,并重启MySQL服务器

    • 查询相关表的数据是否恢复。需要使用下面的 chown 操作。

      数据库备份与恢复 - 图2