前提條件
在開始之前,確保你有一個有sudo權限的用戶和一個MySQL數據庫服務器。
查找數據目錄
使用root密碼登錄到MySQL服務器。$ sudo mysql -u root -p
下面的SQL顯示MySQL實例的數據目錄。mysql> select @@datadir;
輸出類似于+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
替代方法
定位MySQL數據路徑$ sudo mysqld --verbose --help | grep ^datadir
輸出類似于datadir /var/lib/mysql/
備份數據庫
停止MySQL服務。$ sudo systemctl stop mysql
創建存儲MySQL文件備份的目錄,使用當前日期創建父目錄和子目錄,$ sudo mkdir -p /var/mysql_backups/2020_07_13_backup
用cp復制數據庫文件。$ sudo cp -R /var/lib/mysql/. /var/mysql_backups/2020_07_13_backup
啟動數據庫服務器。$ sudo systemctl start mysql
還原數據庫
停止MySQL服務。$ sudo systemctl stop mysql
重命名當前的MySQL數據目錄,此步驟保留當前狀態的備份副本。$ sudo mv /var/lib/mysql /var/lib/mysql_old
創建新的MySQL數據目錄。$ sudo mkdir /var/lib/mysql
恢復MySQL備份。$ sudo cp -R /var/mysql_backups/2020_07_13_backup/. /var/lib/mysql
將/var/lib/mysql的所有權更改為mysql用戶。$ sudo chown -R mysql:mysql /var/lib/mysql
啟動數據庫服務器。$ sudo systemctl start mysql
測試備份
通過以root身份登錄到MySQL服務器來測試備份。$ sudo mysql -u root -p
驗證數據庫架構是否正確。mysql> SHOW DATABASES;
將顯示數據庫,例如:+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
小結
在本指南中,你已經創建了MySQL數據庫的物理備份,此方法非常適合大型數據庫,并且在重新安裝數據庫服務器時恢復更容易。