首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 備份恢復實戰:基於備份檔與二進制日誌的時間點恢復 (PITR)

     編輯:MySQL 資料庫相關知識

恢復雙軌制

完整恢復需兩個資訊源:

  1. 備份檔:將資料庫恢復至備份時間點
  2. 二進制日誌:重放備份後至故障點的事務,實現時間點恢復 (PITR)

完整資料庫恢復步驟

  1. 將待恢復資料庫目錄完整備份他處(防呆)
  2. 載入最近備份:
    • mysqldump 備份:mysql < backup.sql 或 zcat backup.sql.gz | mysql
    • 實體檔備份:停止服務 → 複製檔案到資料目錄 → 重啟服務
  3. 重放二進制日誌:
    # 簡單版(日誌檔名長度相同時)
    ls -t -r -l binlog.[0-9]* | xargs mysqlbinlog | mysql --one-database db_name
    
    # 通用版(Perl 排序數字後綴)
    #!/usr/bin/perl -w
    use strict;
    my @files = <>;  # 讀入檔名列表
    @files = sort { 
        my $anum = $1 if $a =~ /\.(\d+)$/;
        my $bnum = $1 if $b =~ /\.(\d+)$/;
        $anum <=> $bnum;
    } @files;
    print @files;

單一資料表恢復

同理,備份載入後配合 mysqlbinlog --database=db --table=tbl 過濾重放特定表的事務。

關鍵前提

  • 啟用 log-bin 二進制日誌
  • 備份時記錄對應的 binlog 位置(FLUSH LOGS 或 SHOW MASTER STATUS)
  • 備份檔與日誌檔完整保存,異地備份更佳
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved