溫馨提示×

在Ubuntu上如何恢復丟失的MariaDB數據

小樊
38
2025-09-19 04:24:32
欄目: 云計算

在Ubuntu上恢復丟失的MariaDB數據的常見方法

1. 使用邏輯備份(mysqldump)恢復

邏輯備份是最常用的恢復方式,適用于大多數場景,尤其適合中小型數據庫。

  • 步驟1:停止MariaDB服務(可選但推薦)
    為避免恢復過程中數據沖突,建議先停止服務:
    sudo systemctl stop mariadb
    
  • 步驟2:執行恢復命令
    將備份的SQL文件(如full_backup.sql)導入MariaDB:
    mysql -u root -p < /path/to/full_backup.sql
    
    輸入root用戶密碼后,系統會自動執行SQL腳本恢復數據。
  • 步驟3:啟動MariaDB服務并驗證
    恢復完成后,重啟服務并登錄檢查數據:
    sudo systemctl start mariadb
    mysql -u root -p -e "SHOW DATABASES;"  # 查看數據庫列表
    mysql -u root -p -e "USE your_database; SHOW TABLES;"  # 檢查特定數據庫的表
    

2. 使用物理備份(mariabackup)恢復

物理備份直接復制數據庫文件,恢復速度更快,適合大型數據庫或需要快速恢復的場景。

  • 步驟1:安裝mariabackup工具
    若未安裝,可通過以下命令安裝(Ubuntu 22.04+默認倉庫包含):
    sudo apt update && sudo apt install mariadb-backup
    
  • 步驟2:執行恢復操作
    假設備份文件存放在/path/to/backup目錄:
    sudo mariabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
    
    此命令會將備份文件復制到MariaDB的數據目錄(/var/lib/mysql)。
  • 步驟3:設置權限并啟動服務
    確保數據目錄權限正確,然后重啟服務:
    sudo chown -R mysql:mysql /var/lib/mysql
    sudo systemctl start mariadb
    

3. 使用二進制日志(binlog)恢復增量數據

若啟用了二進制日志(默認開啟),可通過binlog恢復誤刪除或特定時間點的數據。

  • 步驟1:定位binlog文件
    binlog文件通常位于/var/lib/mysql/目錄,命名格式為mysql-bin.000001、mysql-bin.000002等??赏ㄟ^以下命令查看當前binlog位置:
    SHOW BINARY LOGS;
    
  • 步驟2:導出并恢復binlog內容
    使用mysqlbinlog工具導出指定區間的binlog(如從mysql-bin.000001mysql-bin.000003),并導入數據庫:
    mysqlbinlog /var/lib/mysql/mysql-bin.000001 /var/lib/mysql/mysql-bin.000002 /var/lib/mysql/mysql-bin.000003 | mysql -u root -p
    
    若需恢復到特定時間點(如2025-09-18 10:00:00),可添加--start-datetime參數:
    mysqlbinlog --start-datetime="2025-09-18 10:00:00" /var/lib/mysql/mysql-bin.000001 | mysql -u root -p
    

4. 使用第三方工具恢復(如Percona XtraBackup)

對于企業級大型數據庫,可使用Percona XtraBackup進行熱備份(在線備份)和恢復。

  • 步驟1:安裝Percona XtraBackup
    sudo apt install percona-xtrabackup-80  # 適用于MariaDB 10.5及以上版本
    
  • 步驟2:準備備份文件
    若已有全量備份,需先“準備”備份(應用redo日志以保證一致性):
    sudo xtrabackup --prepare --target-dir=/path/to/backup
    
  • 步驟3:恢復備份
    將準備好的備份復制到數據目錄并啟動服務:
    sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
    sudo chown -R mysql:mysql /var/lib/mysql
    sudo systemctl start mariadb
    

注意事項

  • 定期備份:無論使用哪種恢復方法,定期備份(邏輯+物理)是防止數據丟失的核心措施。建議設置cron任務自動備份(如每天凌晨備份)。
  • 測試備份:定期測試備份文件的完整性(如嘗試恢復到測試環境),確保備份可用。
  • 避免覆蓋:恢復數據前,確認目標目錄無重要數據,避免誤覆蓋。
  • 日志開啟:確保二進制日志(log_bin)開啟,以便后續增量恢復(修改/etc/mysql/mariadb.conf.d/50-server.cnf文件,添加log_bin = mysql-bin并重啟服務)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女