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

MySQL 預防性維護自動化:備份、巡檢、啟動檢查與 Cron/Systemd 部署

     編輯:MySQL 資料庫相關知識

MySQL 生產環境預防性維護自動化部署指南

「事前防範勝於事後救火」。建立三層防線:備份兜底、定期巡檢、啟動自檢。提供可直接落地的 Shell 腳本、Cron 任務、Systemd/SysV 啟動掛鉤方案。

三大維護支柱

  1. 常規備份 + 二進制日志:mysqldump --single-transaction --master-data=2 + log-bin + expire_logs_days。
  2. 定期表巡檢:myisamchk --fast --silent / mysqlcheck --all-databases --check。
  3. 啟動前自檢:非正常關機後必檢,防止帶傷運行。

通用巡檢腳本(MyISAM/InnoDB 通用)

#!/bin/bash
# check_mysql_tables.sh
# 用法:放入 /usr/local/mysql/bin/,chmod +x

DATADIR="/var/lib/mysql"
MYSQLCHECK="/usr/bin/mysqlcheck"
USER="root"
PASS="your_password"

# 1. mysqlcheck 原生檢查(支持 InnoDB/MyISAM,無需停庫)
$MYSQLCHECK -u$USER -p$PASS --all-databases --check --silent --fast

# 2. 若仍需 myisamchk(純 MyISAM 環境),防參數過長用 find+xargs
# find $DATADIR -name "*.MYI" -print0 | xargs -0 myisamchk --fast --silent

exit 0

部署方案對比

場景調度方式配置示例
傳統 Linux (SysVinit)/etc/crontab0 3 * * 0 mysql /usr/local/mysql/bin/check_mysql_tables.sh(每週日 3:00)
現代 Linux (Systemd)Systemd Timer創建 mysql-check.service + mysql-check.timer,OnCalendar=weekly
啟動前檢查 (SysV)/etc/rc.local在 service mysql start **之前**調用腳本
啟動前檢查 (Systemd)服務依賴[Unit] Before=mysql.service + Type=oneshot

Systemd Timer 完整配置

# /etc/systemd/system/mysql-check.service
[Unit]
Description=MySQL Tables Check
Before=mysql.service

[Service]
Type=oneshot
ExecStart=/usr/local/mysql/bin/check_mysql_tables.sh
User=mysql

# /etc/systemd/system/mysql-check.timer
[Unit]
Description=Weekly MySQL Check Timer

[Timer]
OnCalendar=weekly
Persistent=true

[Install]
WantedBy=timers.target

# 啟用
systemctl daemon-reload
systemctl enable --now mysql-check.timer

關鍵避坑指南

  • 外部鎖衝突:若 skip_external_locking=OFF,巡檢時服務器可能修改表導致誤報。建議啟用 skip_external_locking=ON(默認)並用 mysqlcheck 連接服務器檢查。
  • 參數過長:myisamchk *.MYI 可能超過命令行長度限制,改用 find ... -print0 | xargs -0。
  • 多實例:腳本接收 --datadir 參數,為每個實例部署獨立 Timer/服務。
  • 靜默模式:--silent 僅錯誤輸出,避免 Cron 郵件風暴。

驗證清單

  1. 手動執行腳本,確認無報錯輸出。
  2. 故意損壞一張測試表,驗證巡檢能發現並報警。
  3. 模擬非正常關機(kill -9 mysqld),重啟驗證啟動檢查生效。
  4. 確認備份可還原、二進制日志連續、監控告警通達。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved