发生数据故障时恢复数据库的能力非常重要。 数据故障可能是由于意外或恶意修改、删除或损坏数据造成的。
在本指南中,您将了解如何使用 mysqldump 实用程序在 Red Hat Enterprise Linux (RHEL) 8 上备份现有的 MySQL 数据库。 此外,您将学习如何恢复 MySQL 数据库以从数据故障中恢复。
备份 MySQL 数据库
您可以使用 mysql转储 实用程序来备份您的 MySQL 数据库。 首先,运行以下命令确认mysql服务处于活动状态(正在运行。)
$ sudo systemctl status mysqld
按 q 返回到终端提示符。
如果您看到一条消息表明 mysql 服务已禁用或处于非活动状态(死),则运行下一个命令以启动 mysql 服务。
$ sudo systemctl start mysqld
一旦 mysql 服务处于活动状态(正在运行),您就可以登录。
$ sudo mysql -u root -p
笔记: 你可以更换 根 酌情与另一个 mysql 用户一起使用。
创建示例数据库和表
出于本教程的目的,我通过运行以下查询创建了一个示例数据库和表。 你也可以这样做。
mysql> CREATE DATABASE cars;
mysql> USE cars;
mysql> CREATE TABLE suvs (make varchar(25), model varchar(25), VIN varchar(17));
mysql> INSERT INTO suvs VALUES ('Toyota', 'Rav4', '12345678901234567'), ('Honda', 'Crv', '09876543211234567'), ('Nissan', 'Pathfinder', '25162435453647567');
mysql> SELECT * FROM suvs;
运行下一条命令退出 mysql。
mysql> quit
使用 mysqldump 导出数据库
mysqldump 命令的语法是:
mysqldump -u username -p database_to_backup > backup_file_name.sql
代替:
- 用户名 具有对数据库具有适当权限的实际用户名
- database_to_backup 使用您要备份的数据库的实际名称
- 备份文件名 使用您想要的备份文件名称
以示例汽车数据库为例,以下命令会将数据库备份到我的主目录中的 database_backups 文件夹中。
$ mysqldump -u root -p cars > /home/shola/database_backups/cars_bk.sql
如果没有显示错误,则操作成功完成。
验证数据库备份
接下来,您可以通过运行以下命令快速检查数据库备份文件的内容。 请记住相应地替换 backup_file_name。
$ head backup_file_name.sql
有关示例输出,请参见下图。
恢复 MySQL 数据库
唯一比备份更重要的是确保在发生任何数据故障时您可以实际恢复这些备份。
想象一下,我们之前创建的示例汽车数据库刚刚被恶意破坏。 幸运的是,我们有汽车数据库的备份,我们可以按如下方式恢复它。
创建一个新数据库
我们需要登录 mysql 并为恢复操作创建一个新数据库。
按如下方式登录mysql。
$ mysql -u root -p
接下来,运行以下查询以创建一个新数据库。
mysql> CREATE DATABASE cars2;
一旦查询成功执行(OK),我们就可以退出 mysql。
mysql> quit
从备份导入数据库
用于恢复 mysql 数据库的基本 mysql 语法是:
mysql -u username -p new_database_name < backup_file_name.sql
代替:
- 用户名 具有对数据库具有适当权限的实际用户名
- 新数据库名称 使用为还原操作创建的新数据库的名称
- 备份文件名 带有数据库备份文件的名称
例如,以下命令从备份中恢复汽车数据库。
$ mysql -u root -p cars2 < /home/shola/database_backups/cars_bk.sql
如果没有显示错误,则恢复操作成功完成。
验证数据库还原
我们可以登录到mysql并验证数据库恢复操作如下。
$ mysql -u root -p
登录后,运行下面的查询以显示可用的数据库。
mysql> SHOW DATABASES;
下一个查询选择 cars2 数据库。
mysql> USE cars2;
使用以下查询显示 cars2 数据库中的表。
mysql> SHOW TABLES;
最后,从 suvs 表中选择所有记录,如下所示。
mysql> SELECT * FROM suvs;
结论
在本指南中,我们在 Red Hat Enterprise Linux 8 上成功备份和恢复了 MySQL 数据库。如果您有任何问题或意见,请告诉我们。