使用 MySQL SOURCE 命令恢复数据库

MySQL 提供了 SOURCE 命令帮助你将备份的数据恢复到现有的数据库中。

要将备份的 SQL 文件恢复到 MySQL 数据库服务器中,您可以是用 MySQL SOURCE 语句,或者 mysql 命令。

下面演示了备份和恢复 Sakila 示例数据库的过程。

备份数据库

请使用管理员用户或者具有权限的用户备份 sakila 数据库:

mysqldump --user=root --password=<password> --databases sakila --result-file=/bak/sakila.sql

运行成功后,将会生成文件 /bak/sakila.sql

使用 root 用户登录 MySQL 服务器,并使用下面的命令删除 sakila 数据库。

DROP DATABASE sakila;

使用 SOURCE 恢复备份

以下是使用 SOURCE 命令恢复备份的步骤:

  1. 使用 mysql 客户端工具连接到 MySQL 服务器:

    mysql -u root -p
    

    输入 root 帐户的密码并按 Enter

    Enter password: ********
    
  2. 运行以下 SOURCE 命令恢复 sakila 数据库:

    SOURCE /bak/sakila.sql
    
  3. 使用 SHOW DATABASES 语句查看数据库列表来检查是否已经重新创建数据库:

    SHOW DATABASES LIKE 'sakila';
    
    +-------------------+
    | Database (sakila) |
    +-------------------+
    | sakila            |
    +-------------------+

    现在,sakila 数据库已经创建了。

  4. 使用 SHOW TABLES 语句查看表的列表来检查是否已经重新创建了表:

    SHOW TABLES FROM 'sakila';
    
    +----------------------------+
    | Tables_in_sakila           |
    +----------------------------+
    | actor                      |
    | actor_copy                 |
    | actor_info                 |
    | address                    |
    | category                   |
    | city                       |
    | country                    |
    | customer                   |
    | customer_list              |
    | film                       |
    | film_actor                 |
    | film_category              |
    | film_list                  |
    | film_text                  |
    | inventory                  |
    | language                   |
    | nicer_but_slower_film_list |
    | payment                    |
    | rental                     |
    | sales_by_film_category     |
    | sales_by_store             |
    | staff                      |
    | staff_list                 |
    | store                      |
    | student                    |
    | student_score              |
    | subscribers                |
    | test                       |
    | user                       |
    +----------------------------+

    现在,sakila 数据库中的表也恢复了。

使用 mysql 命令恢复

SOURCE 命令需要登录后才能运行,而 mysql 本身就支持直接导入数据。请使用如下 mysql 命令恢复数据库:

mysql --user=root --password=<password> < /bak/sakila.sql

运行完成后,您可以使用 SHOW DATABASESSHOW TABLES 验证数据库是否已经恢复。

结论

在 MySQL 中, SOURCE 命令可以帮您将数据库备份文件恢复到数据库中。除此之外,您还可以直接使用 mysql 命令恢复数据库。