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

Linux 下 MySQL 安全重啟正確姿勢:mysqladmin shutdown + mysqld_safe,拒絕 kill -9

     編輯:MySQL 資料庫相關知識

為什麼不能 `kill -9` / `killall mysql`?

  • 數據損壞風險:InnoDB 緩存池髒頁未刷盤、Redo Log 未同步、雙寫緩衝未持久化,強制殺進程導致表空間不一致,甚至系統表空間損壞。
  • 啟動延遲**:下次啟動需執行 **Crash Recovery** (回滾未提交事務、重放 Redo Log),大表可能耗時數小時。
  • 複製中斷**:主從同步位點異常,需重新搭建從庫。

標準安全重啟三步法 (源碼安裝/通用)

1. 關閉:`mysqladmin shutdown`

$MYSQL_DIR/bin/mysqladmin -u root -p shutdown
# 提示輸入 root 密碼
# 發送 SHUTDOWN 命令,MySQL 線程執行:
# 1. 關閉連接、停止接受新請求
# 2. 刷新髒頁到磁盤 (Checkpoint)
# 3. 關閉存儲引擎、釋放資源
# 4. 進程正常退出 (exit code 0)

2. 啟動:`mysqld_safe &`

$MYSQL_DIR/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
# mysqld_safe 特性:
# - 監護進程:mysqld 崩潰自動重啟
# - 錯誤日志重定向
# - 設置核心文件大小限制
# - 從 /etc/my.cnf 讀取配置
# & 後台運行

3. 驗證

ps -ef | grep mysqld
# 應看到 mysqld_safe 和 mysqld 兩個進程
mysql -u root -p -e "SELECT 1;"  # 連接測試

包管理器安裝 (RPM/DEB) 系統服務管理

操作Systemd (CentOS 7+/Ubuntu 16+)SysVinit (CentOS 6/Debian 7)
啟動`systemctl start mysqld` / `systemctl start mysql``service mysqld start` / `/etc/init.d/mysql start`
停止`systemctl stop mysqld``service mysqld stop`
重啟`systemctl restart mysqld``service mysqld restart`
狀態`systemctl status mysqld``service mysqld status`
開機自啟`systemctl enable mysqld``chkconfig mysqld on`

Windows 下重啟服務

C:\> net stop mysql
C:\> net start mysql
# 或 服務管理器 (services.msc) 圖形界面操作

緊急情況:正常關閉失效 (極罕見)

  1. 嘗試 `mysqladmin -u root -p shutdown` 等待 60-120 秒 (大檢查點可能較慢)。
  2. 檢查錯誤日志確認卡在何處。
  3. **最後手段**:`kill -15 ` (SIGTERM,觸發信號處理器嘗試優雅關閉)。
  4. **絕不**直接 `kill -9` (SIGKILL),除非接受數據損壞和極長恢復時間。

重啟前檢查清單 (生產環境)

  • [ ] 確認無長事務運行 (`SHOW ENGINE INNODB STATUS\G` 看 History list length / TRX)。
  • [ ] 確認從庫同步正常 (`SHOW SLAVE STATUS\G` Seconds_Behind_Master=0)。
  • [ ] 通知業務方維護窗口 (如非熱重啟)。
  • [ ] 備份當前配置文件 (`cp /etc/my.cnf /etc/my.cnf.bak`)。
  • [ ] 準備回滾方案 (配置錯誤導致無法啟動時)。

總結

**MySQL 重啟鐵律:`mysqladmin shutdown` → `mysqld_safe &` (源碼裝) / `systemctl restart mysqld` (包裝裝) / `net stop/start mysql` (Windows)**。**拒絕 `kill -9`**,寧可等待檢查點完成,不可承擔數據損壞與數小時恢復代價。生產環境重啟必走變更流程、驗證主從、監控錯誤日志。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved