經常備份數據庫非常重要,這樣您就可以恢復數據並在出現問題時重新開始。此類問題是:

  • 系統錯誤。
  • 硬件故障
  • 數據庫損壞。
  • 由於用戶錯誤,數據被刪除。

MySQL 提供了多種生成備份和恢復數據庫的方法。您可以選擇最適合您的備份和災難恢復要求的方法。 在升級 MySQL 安裝之前,備份也是一項重要的預防措施。備份還用於將您的 MySQL 安裝轉移到另一個系統或設置克隆服務器。

我需要

  • 任何 Linux 發行版。
  • MySQL 服務器或 MariaDB。
  • mysqldump 實用程序。
  • 對您的 Linux 系統的 Root 特權訪問,或通過 sudo 命令。

如何備份和恢復 MySQL 數據庫

您可以從命令行使用 mysqldump 或 PHPMyAdmin 來備份和恢復 MySQL 數據庫。

從命令行使用 mysqldump 備份 MySQL 數據庫

mysqldump 實用程序是備份 MySQL 數據庫並將它們傳輸到另一個 MySQL 服務器的有效工具。這是用於重新創建原始數據庫的一系列 SQL 語句。

mysqldump 實用程序可以將數據庫備份生成為單個 .sql 文件。該文件包含用於重建數據庫的 SQL 語句(DROP TABLE、CREATE TABLE、INSERT 等)。此實用程序對於將多個數據庫或其對象轉儲到一個文件中的 MySQL 表中也很有用。

您不能使用 mysqldump 實用程序將 MySQL 數據庫或數據備份到另一個 .sql 文件。它也不會轉儲 performance_schema、information_schema 或 MySQL 集群信息數據庫 (ndbinfo)。

注意:如果包含 information_schema 表,則必須顯式指定數據庫名稱並在 mysqldump 命令中包含 –skip-lock-tables 選項。

讓我們看一下mysqldump命令的語法。

mysqldump -u [database_username] –p [database_password] [database_name] [tablename] > [database_backup_file.sql]

以下是此命令組件含義的細分:

  • -u [database_username]: 用於連接 MySQL 服務器的用戶名。
  • -p [database_password]: 數據庫用戶名的密碼。
  • [database_name]: 要備份的數據庫的名稱。
  • [tablename]: 要備份的表名的名稱。這是一個可選參數。
  • > : 生成備份。
  • [database_backup_file.sql]: 保存轉儲文件的備份文件的路徑和名稱。

1.備份單個MySQL數據庫

要備份單個數據庫,您可以使用以下命令語法。輸入此命令後,系統會提示您輸入密碼。

mysqldump -u database_username -p database_name > database_backup_file.sql

這是命令的輸出。

$ mysqldump  -u a056c59a_f56757  -p a056c59a_f56757 > a056c59a_f56757.sql
Enter password: 
$ ll
-rw-rw-r--   1 a056c59a a056c59a 53886 Mar 25 17:16 a056c59a_f56757.sql

使用 –password 選項繞過密碼提示。此命令的語法是: 將 database_password 替換為您的數據庫密碼。

mysqldump -u database_username --password="database_password" database_name > database_backup_file.sql

這是輸出。

$ mysqldump -u a056c59a_f56757 --password="DB_password" a056c59a_f56757 > a056c59a_f56757.sql 
$ ll
-rw-rw-r--  1 a056c59a a056c59a 53886 Mar 25 17:33 a056c59a_f56757.sql

2.備份多個MySQL數據庫

要備份多個數據庫,可以使用以下命令語法:

mysqldump -u database_username -p --databases database_name1 database_name2 > database_backup_file.sql

這是運行此命令的結果:

$ mysqldump -u a056c59a_f56757 -p --databases a056c59a_f56757 a056c59a_g67868 > a056c59a_newdb.sql
Enter password: 
$ ll
-rw-rw-r--   1 a056c59a a056c59a 54159 Mar 27 03:11 a056c59a_newdb.sql

同樣,您可以使用 –password 選項來避免密碼提示。 將 database_password 替換為您的數據庫密碼。

mysqldump -u database_username --password="database_password" --databases database_name1 database_name2  > database_backup_file.sql

這是命令的輸出。

$ mysqldump -u a056c59a_f56757 --password="DB_password" --databases a056c59a_f56757 a056c59a_g67868 > a056c59a_newdb2.sql 
$ ll
-rw-rw-r--  1 a056c59a a056c59a 54159 Mar 27 03:19 a056c59a_newdb2.sql

3.備份所有MySQL數據庫

要一次備份每個 MySQL 或 MariaDB 數據庫,請使用以下命令語法。

mysqldump -u database_username -p --all-databases > all_databases_backup_file.sql

這是輸出。

$ mysqldump -u a056c59a_f56757 -p --all-databases > a056c59a_newdb3.sql
Enter password: 
$ ll
-rw-rw-r--  1 a056c59a a056c59a 54144 Mar 27 03:38 a056c59a_newdb3.sql

這裡我們使用 –password 選項來避免密碼提示。像往常一樣,將 database_password 替換為您的數據庫密碼。

mysqldump --all-databases -u database_username --password="database_password" > all_databases_backup_file.sql

該命令的輸出是:

$ mysqldump --all-databases -u a056c59a_f56757 --password="DB_password" > a056c59a_newdb4.sql
$ ll
-rw-rw-r--  1 a056c59a a056c59a 54144 Mar 27 03:41 a056c59a_newdb4.sql

4.將所有MySQL數據庫備份到單獨的文件中

mysqldump 實用程序沒有將所有數據庫備份到單獨文件的選項。但是,您可以通過簡單的命令行備份文件 bash 循環輕鬆地將數據庫名稱用作每個數據庫的文件名。

for database in $(mysql -e 'show databases' -s --skip-column-names); do
	mysqldump $database > "$database.sql";
done

5.創建時間戳備份

要將多個數據庫備份保存在同一位置,請將當前日期附加到數據庫備份文件名。這是命令語法。

mysqldump database_name -u  database_username -p > database_name-$(date +%Y%m%d).sql

這是輸出。

$ mysqldump a056c59a_f56757 -u a056c59a_f56757 -p > a056c59a_f56757-$(date +%Y%m%d).sql
$ll
-rw-rw-r--   1 a056c59a a056c59a 53834 Mar 28 15:09 a056c59a_f56757-20220328.sql

6.創建一個壓縮的MySQL數據庫備份

如果您的數據庫很大,您可以壓縮輸出以節省磁盤空間。只需將輸出通過管道傳輸到 gzip 實用程序並將其重定向到文件。這是語法。

mysqldump database_name -u  database_username -p | gzip > database_name.sql.gz

輸出如下所示:

$ mysqldump a056c59a_f56757 -u a056c59a_f56757 -p | gzip > a056c59a_f56757.sql.gz
Enter password: 
$ ll
-rw-rw-r--  1 a056c59a a056c59a 11843 Mar 29 04:08 a056c59a_f56757.sql.gz 

使用 mysqldump 恢復 MySQL 數據庫

1.恢復MySQL數據庫

要使用 MySQL 備份恢復 MySQL 數據庫,您可以使用 mysql 工具。命令語法為:

mysql -u  database_username  database_name -p < database_backup_file.sql

輸出如下所示:

$ mysql -u a056c59a_f56757 a056c59a_f56757 -p < a056c59a_f56757-20220329.sql
Enter password: 
$

2. 從完整的 MySQL 轉儲文件恢復單個 MySQL 數據庫。

如果要從包含多個 MySQL 數據庫的數據庫備份文件中恢復單個 MySQL 數據庫,可以在命令中使用 –one-database 選項。

mysql -u database_username --one-database database_name1 -p < all_databases_backup_file.sql

這是輸出。

$ mysql -u a056c59a_f56757 --one-database a056c59a_f56757 -p < a056c59a_full_db.sql
Enter password: 
$

3.一個命令導出和導入MySQL數據庫

您可以使用以下單行命令從一個 MySQL 數據庫創建轉儲文件並將其導入另一個 MySQL 數據庫:此示例將輸出通過管道傳輸到遠程主機上的 MySQL 客戶端並將其導入數據庫。 將 remote_database_name 替換為您選擇的遠程主機數據庫名稱。

mysqldump -u database_username database_name -p | mysql -h remote_host -u remote_database_username remote_database_name -p

注意:無論數據庫是否位於遠程主機服務器上,此命令都會導入數據庫。在運行命令之前,最好確保遠程服務器上不存在數據庫。

使用 phpMyAdmin 備份 MySQL 數據庫

要使用 phpMyAdmin 備份 MySQL 數據庫,請執行以下步驟:

步驟1:

登錄到 phpMyAdmin。

第2步:

從左側導航樹中選擇要備份的數據庫。

第 3 步:

點擊 寫出 標籤。

第4步:

選擇一種導出方法。在本教程中, 快速地 除非您的要求不同,否則單選按鈕。

第 5 步:

完成所有選擇後, 按鈕。

使用 phpMyAdmin 恢復 MySQL 數據庫

要使用 phpMyAdmin 從備份中恢復 MySQL 數據庫,請執行以下步驟:

步驟1:

登錄到 phpMyAdmin。

第2步:

從左側導航樹中選擇要恢復的數據庫。

第 3 步:

點擊 全選 單擊底部的複選框以選擇所有表。

第4步:

點擊 選擇 下拉菜單並選擇 減少.

第 5 步:

點擊 是的 確認。

第 6 步:

點擊 進口 標籤。

第 7 步:

點擊 選擇文件 單擊按鈕瀏覽您的 MySQL 備份。

第 8 步:

點擊 按鈕。

完成後將顯示一條確認消息。

包起來

如果您正在尋求有關備份或恢復數據庫的幫助,本指南適合您。按照本教程和其他最佳實踐來滿足您的備份和恢復需求,確保您的數據安全。

我們為標准或託管提供專用服務器和 VPS 託管選項。 高可用數據庫此外,我們熟練的團隊提供 24/7 全天候支持和監控,因此您可以專注於您的網站。立即聯繫我們的團隊以獲取更多信息。