怎样在 Ubuntu 20.04 上备份和恢复 MySQL 或 MariaDB

介绍

本教程介绍了在 Ubuntu 20.04 LTS 上正确备份 MySQL/MariaDB 服务器的步骤。 备份数据库是生产中最重要的任务之一; 人为错误或简单的分心可能会导致大问题,如果没有备份,这些问题就不容易解决。

先决条件

本指南已在新的 Vultr Ubuntu 20.04 LTS 云服务器实例上进行了测试。

一个完全更新的 Ubuntu 20.04 LTS 服务器一个非 root sudo 用户一个工作的 MySQL/MariaDB 实例

备份

选择要备份的数据库

使用有权查看所有数据库的用户登录(默认: root) 并检查数据库列表。 如果需要使用密码登录账号,添加 -p 到下面的命令。

$ mysql -u USERNAME

建立连接后,运行以下命令以列出所有数据库。

> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| test_data          |
| important_db       |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.012 sec)

退出 SQL 控制台。

> exit;

使用 mysqldump

如果您使用密码登录帐户,请添加 -p 到下面的命令。 如果需要保存所有数据库,可以使用快捷方式 --all-databases 代替 --databases names.

$ mysqldump -u USERNAME --databases test_data important_db > database_dump.sql

将创建一个名为“database_dump.sql”的文件,其中包含用于重建所选数据库的所有数据。

保护备份

如果数据库中的数据包含敏感数据,最好在保存或在服务器之间移动之前对其进行加密。 执行下面的第一个命令,然后输入密码; 它不会显示在您的屏幕上。

$ openssl enc -aes-256-cbc -pbkdf2 -in database_dump.sql -out database_dump.sql.enc
  enter aes-256-cbc encryption password:
  Verifying - enter aes-256-cbc encryption password:

$ rm database_dump.sql

要解密新服务器中的备份,请使用以下命令。

$ openssl enc -d -aes-256-cbc -pbkdf2 -in database_dump.sql.enc -out database_dump.sql
  enter aes-256-cbc encryption password:

移动备份

有时 .sql 可能太大,通过住宅互联网连接的传输过程可能需要太多时间。 相反,可以使用类似的工具 rsync 直接在服务器之间共享数据,利用 Vultr 实例的网络速度。

$ rsync -a ./database_dump.sql [email protected]:/tmp/

代替 [email protected] 使用您在远程服务器上的用户名。 代替 192.0.2.1 使用远程服务器的 IP 地址。 代替 /tmp/ 与远程服务器上的目录位置。

恢复数据库

要恢复数据库转储,请使用 mysql 公用事业。

$ mysql -u USERNAME < database_dump.sql

如果您需要密码登录帐户,请添加 -p 到减号前的以下命令。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com