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

MySQL 管理進階:Binary Log (更新日誌) 配置、自動清理腳本、時間點恢復 (PITR)

     編輯:MySQL 資料庫相關知識

啟用 Binary Log

命令列啟動

mysqld --log-bin=/var/log/mysql/binlog

配置檔持久化 (my.cnf)

[mysqld]
log-bin = /var/log/mysql/binlog
# 可選:expire_logs_days = 7  (自動清理 7 天前舊 log)
max_binlog_size = 100M

自動清理 Shell 腳本 (cron 每週執行)

#!/bin/sh
# 刪除 7 天前舊 binlog
find /var/log/mysql/ -name "binlog.[0-9]*" -type f -mtime +7 -exec rm -f {} \;
# 通知 MySQL 產生新 log (FLUSH LOGS)
/usr/local/mysql/bin/mysqladmin -u root -p'password' flush-logs

時間點恢復 (Point-In-Time Recovery, PITR)

  1. 還原最近一次完整備份:
    mysql -u root -p dbname < full_backup.sql
  2. 重放 Binary Log 到指定時間:
    mysqlbinlog --start-datetime="2024-01-15 10:00:00" \ --stop-datetime="2024-01-15 14:30:00" \ /var/log/mysql/binlog.000001 | mysql -u root -p dbname

單一資料庫恢復 (--one-database)

mysqlbinlog binlog.000001 | mysql -u root -p --one-database dbname

變更日誌 (舊版 Update Log) vs Binary Log

  • Update Log (3.23 以前):純文字、不可重放、已移除
  • Binary Log (3.23+ / 4.0+ 預設):二進位、含事件型別/位置/時間、支援 Replication 與 PITR

最佳實務

  • Binary Log 放在不同磁碟 與資料目錄
  • 啟用 sync_binlog=1 (每次 Commit 刷盤) 保證不丟失
  • 定期測試 PITR 流程,驗證備份可用性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved