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

Linux 開機自動啟動 MySQL:rc.d 腳本部署與 Systemd 現代化方案

     編輯:MySQL 資料庫相關知識

傳統 SysVinit 方案 (CentOS 6 / Ubuntu 14.04 前)

1. 建立啟動腳本

#!/bin/sh
# /etc/rc.d/init.d/mysqld-auto
# chkconfig: 345 99 01
# description: Auto start MySQL on boot

MYSQLD_SAFE=/opt/mysql/bin/mysqld_safe
DATADIR=/opt/mysql/data
USER=mysql

case "$1" in
  start)
    $MYSQLD_SAFE --datadir=$DATADIR --user=$USER &
    ;;
  stop)
    mysqladmin -u root -p shutdown
    ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac

2. 註冊開機自啟

chmod +x /etc/rc.d/init.d/mysqld-auto
chkconfig --add mysqld-auto
chkconfig mysqld-auto on

或手動建立連結:

ln -s /etc/rc.d/init.d/mysqld-auto /etc/rc.d/rc3.d/S99mysqld

現代 Systemd 方案 (CentOS 7+ / Ubuntu 16.04+ / RHEL 7+)

1. 官方套件自帶單元檔

systemctl enable mysqld
systemctl start mysqld

2. 自編譯/二進制部署建立單元檔

# /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target syslog.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
ExecStop=/opt/mysql/bin/mysqladmin -u root -p shutdown
PIDFile=/opt/mysql/data/mysqld.pid
TimeoutSec=300
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

3. 啟用並驗證

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld

多實例管理

# 實例 1
systemctl enable mysqld@3306
# 實例 2
systemctl enable mysqld@3307
# 模板單元檔 /etc/systemd/system/mysqld@.service 使用 %i 區分 port/datadir

常見問題

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因解決
啟動失敗datadir 權限、my.cnf 路徑錯誤檢查 journalctl -u mysqld -xe
停止超時InnoDB 刷盤慢調大 TimeoutSec、檢查 innodb_max_dirty_pages_pct
重複啟動舊 SysV 腳本殘留chkconfig mysqld off / systemctl disable 舊服務