如果您使用 MySQL 或 MariaDB 数据库,了解如何备份和恢复数据对您来说非常重要。此外,您需要定期备份数据库,这将有助于您在应用程序崩溃或数据因任何系统故障而损坏时恢复数据。

MySQL 和 MariaDB 包含命令行工具,您可以使用这些工具快速轻松地转储和恢复数据库。该 mysqldump 工具用于将数据库的内容导出到文本文件,而 mysql 客户端可用于将文本文件中的数据导入 MySQL/MariaDB 数据库。

如何使用 MySQL dump命令

该 mysqldump 命令行工具导出数据库SQL文本文件。换句话说,它用于获取 MySQL 数据库转储。

mysqldump命令的语法如下:

mysqldump -u [username] -p [database_name] > [filename].sql

解释如下:

  • username 是您的 MySQL/MariaDB 用户名。
  • -p提示输入此用户的密码。
  • database_name 是要备份的数据库的名称。
  • filename.sql 是包含备份的 sql 转储文件的完整路径。

数据库过程、函数、视图和事件在备份时被转储。

mysqldump:备份单个 MySQL 数据库

在此示例中,数据库名为 linuxmi_wordpress。将其替换为您要导出的数据库的名称。根据语法,将在当前位置创建备份文件。

mysqldump -u root -p linuxmi > linuxmi_backup.sql

命令运行后,输入您的 MySQL 根密码。

这将创建一个名为 MySQL 转储文件linuxmi_backup.sql,其中包含用于创建表和将数据恢复到现有数据库的所有 SQL 语句。如果在导出过程中发生任何错误, mysqldump 会将它们打印到屏幕上。

该命令不会产生视觉输出,但您可以检查my_wordpress_backup.sql 使用 head 命令的内容 来检查它是否是合法的 MySQL 转储文件。

head -n 5 linuxmi_backup.sql
-- MariaDB dump 10.19  Distrib 10.5.9-MariaDB, for Linux (x86_64)
-- Host: localhost    Database: linuxm
 
-- Server version    10.3.27-MariaDB-0+deb10u1

mysqldump:备份多个 MySQL 数据库

要使用一个命令备份多个 MySQL 数据库,您需要使用--databases 后跟要备份的数据库列表的 选项。此外,您可以将结果文件放在您选择的位置。

运行以下命令my_backup.sql在 /home/backups名为my_wordpress 和的两个数据库的目录中创建一个 MySQL 转储文件ftpusers

mysqldump -u root -p --databases my_wordpress ftpusers > /home/backups/my_backup.sql

mysqldump:备份所有 MySQL 数据库

使用该 --all-databases 选项备份所有 MySQL 数据库:

mysqldump -u root -p --all-databases > all_db_backup.sql

如何创建压缩的 MySQL 数据库备份

如果数据库大小非常大,最好压缩输出。要做到这一点,只需将输出通过管道传输到 gzip 命令,然后将其重定向到一个文件,如下所示:

mysqldump -u root -p my_wordpress | gzip > my_wordpress_backup.sql.gz

mysql:从 MySQL 转储文件中恢复 MySQL

要恢复使用 创建的备份mysqldump,您需要使用该 mysql命令。

mysql -u [username] -p [database_name] < [filename].sql

详细解释:

  • username 是您的 MySQL/MariaDB 用户名。
  • -p提示输入此用户的密码。
  • database_name 是要在其中还原的数据库的名称。
  • filename.sql 是包含备份的 sql 转储文件的完整路径。

mysql:恢复单个 MySQL 数据库

您可以从任何特定数据库的 MySQL 转储文件中恢复所有表。

恢复只需使用以下命令执行,我们再次指定用户并提示输入密码,并将my_wordpress_backup.sql文件传递到数据库中my_wordpress

mysql -u root -p my_wordpress < my_wordpress_backup.sql

系统将提示您输入 MySQL 用户的密码。

完成此操作后,数据库应该可以在正在运行的 MySQL 实例中使用。您从中导入的 MySQL 转储文件也将仍然存在,因此您可以此时安全地存储该文件,或者在不再需要时将其删除。

mysql:恢复所有 MySQL 数据库

您可以将任何 MySQL 服务器的所有数据库从 MySQL 转储文件恢复到另一个 MySQL 服务器。

mysql -u root -p < all_db_backup.sql

总结

现在,您可以按照上述步骤定期备份数据库文件并在需要时恢复数据。

当您希望迁移到新服务器时,本教程也适用。只需备份旧服务器上的数据库,然后将 MySQL 转储文件上传到新服务器。在新服务器上创建目标数据库,然后在新数据库中执行上传的 MySQL 转储文件。此外,您还应该从旧 MySQL 服务器到新服务器重新创建用户和权限。