首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

同一主機運行多個 MySQL 實例:配置隔離與啟動管理

     編輯:MySQL 綜合教學

為何需要多實例?

  • 測試新版本不影響生產環境。
  • 突破單進程檔案描述符限制 (ulimit)。
  • ISP 為不同客戶提供隔離的 MySQL 服務。
  • 不同應用需不同參數/字符集/時區設定。

安裝隔離

不同版本:指定 --prefix


./configure --prefix=/usr/local/mysql-5.7
./configure --prefix=/usr/local/mysql-8.0

各版本獨立目錄,互不干擾。

相同版本多實例:共用二進位,分離資料目錄

  • 資料目錄:--datadir=/data/mysql_3306, /data/mysql_3307
  • 通訊埠:--port=3306, --port=3307
  • Socket:--socket=/tmp/mysql_3306.sock, /tmp/mysql_3307.sock
  • PID 檔:--pid-file=/var/run/mysqld_3306.pid
  • 錯誤日誌:--log-error=/var/log/mysql_3306.err

配置檔管理

全域共用設定 → /etc/my.cnf

僅放置所有實例通用的設定 (如 [client] 區塊)。

實例專屬設定 → $DATADIR/my.cnf


# /data/mysql_3306/my.cnf
[mysqld]
datadir=/data/mysql_3306
port=3306
socket=/tmp/mysql_3306.sock
pid-file=/var/run/mysqld_3306.pid
log-error=/var/log/mysql_3306.err
innodb_buffer_pool_size=512M

啟動時指定專屬配置


mysqld --defaults-file=/data/mysql_3306/my.cnf &

--defaults-file 必須是命令列第一個參數,會忽略其他標準配置檔。

啟動腳本最佳實務

  • 以 mysqld_safe 為基礎撰寫各實例專屬啟動腳本 (如 mysql_3306_start),內含 --defaults-file 參數。
  • 系統開機自動啟動:將各實例啟動腳本加入 /etc/rc.local 或 systemd service unit。
  • 監控:為每個實例配置獨立的監控指標 (Prometheus mysqld_exporter 不同 port)。

資源規劃建議

資源建議
記憶體所有實例 innodb_buffer_pool_size 總和 ≤ 物理記憶體 70%
CPU關聯實例到不同 CPU 核心 (taskset/cgroups)
磁碟 I/O資料目錄置於不同實體磁碟/分區
檔案描述符各實例 open_files_limit 總和 < 系統上限
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved