首页 > 编程笔记 > MySQL笔记 阅读:13

MySQL数据恢复的3种方法(新手必看)

管理人员操作的失误、计算机故障以及其他意外情况,都会导致数据的丢失和破坏。当数据丢失或意外破坏时,可以通过恢复已经备份的数据尽量减少数据丢失和破坏造成的损失。

使用MySQL命令恢复

对于已经备份的包含 CREATE、INSERT 语句的文本文件,可以使用 MySQL 命令导入到数据库中。接下来介绍 MySQL 命令导入 sql 文件的方法。

备份的 sql 文件中包含 CREATE、INSERT 语句(有时也会有 DROP 语句)。MySQL 命令可以直接执行文件中的这些语句。其语法如下:
mysql -u user -p [dbname] < filename.sql

如果 filename.sql 文件为 mysqldump 工具创建的、包含创建数据库语句的文件,执行的时候不需要指定数据库名。

【实例 1】 使用 MySQL 命令将 C:\backup\booksdb_20220301.sql 文件中的备份导入到数据库中,输入语句如下:
mysql -u root -p booksDB < C:/backup/booksdb_20220301.sql
执行该语句前,必须先在 MySQL 服务器中创建 booksDB 数据库,如果 booksDB 数据库不存在,恢复过程将会出错。命令执行成功之后 booksdb_20220301.sql 文件中的语句就会在指定的数据库中恢复以前的表。

如果已经登录 MySQL 服务器,还可以使用 source 命令导入 sql 文件。source 语句语法如下:
source filename

【实例 2】使用 root 用户登录到服务器,然后使用 source 导入本地的备份文件 booksdb_20220301.sql,输入语句如下:
--选择要恢复到的数据库
mysql> use booksDB;
Database changed

--使用source命令导入备份文件
mysql> source C:\backup\booksdb_20220301.sql
命令执行后,会列出备份文件 booksdb_20220301.sql 中每一条语句的执行结果。source 命令执行成功后,booksdb_20220301.sql 中的语句会全部导入到现有数据库中。

提示,执行 source 命令前,必须使用 use 语句选择数据库。否则,恢复过程中会出现“ERROR 1046 (3D000): No database selected”的错误。

直接复制到数据库目录

如果数据库通过复制数据库文件备份,可以直接复制备份的文件到 MySQL 数据目录下实现恢复。

通过这种方式恢复时,备份数据的数据库和待恢复的数据库服务器的主版本号必须相同。而且这种方式只对 MyISAM 引擎的表有效,对于 InnoDB 引擎的表不可用。

执行恢复以前关闭 MySQL 服务,将备份的文件或目录覆盖 MySQL 的 data 目录,再重新启动 MySQL 服务。

对于 Linux/UNIX 操作系统来说,复制完文件需要将文件的用户和组更改为 MySQL 运行的用户和组,通常用户是 mysql,组也是 mysql。

mysqlhotcopy快速恢复

mysqlhotcopy 备份后的文件也可以用来恢复数据库,在 MySQL 服务器停止运行时,将备份的数据库文件复制到 MySQL 存放数据的位置(MySQL 的 data 文件夹),重新启动 MySQL 服务即可。

如果以根用户执行该操作,必须指定数据库文件的所有者,输入语句如下:
chown -R mysql.mysql /var/lib/mysql/dbname
【实例 3】从mysqlhotcopy备份文件恢复数据库,输入语句如下:
cp -R  /usr/backup/test usr/local/mysql/data
执行完该语句,重启服务器,MySQL 将恢复到备份状态。

提示,如果需要恢复的数据库已经存在,则在使用 DROP 语句删除已经存在的数据库之后,恢复才能成功。另外,MySQL 不同版本之间必须兼容,恢复之后的数据才可以使用。

相关文章