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

單機運行多實例 MySQL 完整指南:不同端口、Socket、數據目錄與啟動腳本配置

     編輯:MySQL 資料庫相關知識

核心原則

多實例隔離三要素:不同 TCP 端口、不同 Unix Socket 文件、不同數據目錄。配置文件 [mysqld] 區塊分別設置。

方案一:編譯時指定(永久隔離)


./configure --with-tcp-port=3307 \
            --with-unix-socket=/tmp/mysql2.sock \
            --prefix=/usr/local/mysql-3307
  • --prefix 指定獨立安裝目錄,避免二進制/庫文件衝突。
  • 適用於不同版本並行測試。

方案二:運行時參數覆蓋(推薦,輕量)

同一安裝包,啟動時指定參數:


# 實例 1(默認)
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf &

# 實例 2
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &

配置文件示例 /etc/my3307.cnf


[mysqld]
port = 3307
socket = /tmp/mysql3307.sock
datadir = /data/mysql3307
pid-file = /data/mysql3307/mysqld.pid
log-error = /data/mysql3307/error.log
basedir = /usr/local/mysql
user = mysql
server-id = 2
# 其他獨立參數...

初始化獨立數據目錄


mkdir -p /data/mysql3307
chown -R mysql:mysql /data/mysql3307
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my3307.cnf --user=mysql

系統服務管理(Systemd 多實例)


# 複製服務單元
cp /usr/lib/systemd/system/mysqld.service /etc/systemd/system/mysqld@.service
# 編輯 mysqld@.service,EnvironmentFile=-/etc/sysconfig/mysql-%i
# 創建 /etc/sysconfig/mysql-3307 指向 my3307.cnf

systemctl daemon-reload
systemctl start mysqld@3307
systemctl enable mysqld@3307

連接驗證


mysql -u root -p -P 3307 -h 127.0.0.1 --protocol=TCP
mysql -u root -p -S /tmp/mysql3307.sock

關鍵避坑指南

  • 嚴禁共享數據目錄:雙實例寫入同一目錄會導致數據損壞、鎖衝突、崩潰。
  • server-id 必須唯一:若啟用 Binlog/復制,每實例需不同 server-id。
  • 防火牆開放所有實例端口。
  • 日誌、PID、Socket 路徑全隔離,避免啟動衝突。
  • 資源總和控制:內存參數(innodb_buffer_pool_size 等)總和 < 物理內存 70%。

應用場景

  • 新版本驗證不影響生產實例。
  • 多租戶隔離(SaaS 數據庫實例級隔離)。
  • 測試/開發/只讀分析 實例共存。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved