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

MySQL 多實例部署完整教程:mysqld_multi 配置與管理實戰

     編輯:MySQL 綜合教學

為什麼需要多實例?

在單台伺服器上運行多個隔離的 MySQL 實例,可實現資源共享與業務隔離,適用於開發測試環境、多租戶架構、版本兼容性測試等場景。官方工具 mysqld_multi 是標準解決方案。

核心配置:my.cnf 多實例區塊

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = your_secure_password

[mysqld1]
datadir         = /data/db/my1
port            = 3306
socket          = /tmp/mysql3306.sock
log-bin         = /data/db/mylog1/mysql-bin
binlog_format   = mixed
binlog_cache_size = 32M
expire_logs_days  = 30
server-id       = 1

[mysqld2]
datadir         = /data/db/my2
port            = 3307
socket          = /tmp/mysql3307.sock
log-bin         = /data/db/mylog2/mysql-bin
binlog_format   = mixed
binlog_cache_size = 32M
expire_logs_days  = 3
server-id       = 2

初始化與權限設定

# 1. 建立資料目錄
mkdir -p /data/db/my1 /data/db/my2 /data/db/mylog1 /data/db/mylog2
chown -R mysql:mysql /data/db/

# 2. 初始化資料庫 (MySQL 5.7+ 使用 mysqld --initialize-insecure)
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my1 --user=mysql
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my2 --user=mysql
chown -R mysql:mysql /data/db/my1 /data/db/my2

# 3. 安裝管理工具到系統路徑
cp /usr/local/mysql/bin/my_print_defaults /usr/bin/
cp /usr/local/mysql/bin/mysqld_multi /usr/bin/

# 4. 建立管理用戶並授權 (需在實例啟動後執行)
CREATE USER 'multi_admin'@'192.168.1.%' IDENTIFIED BY 'your_secure_password';
GRANT SHUTDOWN, PROCESS, SUPER, RELOAD ON *.* TO 'multi_admin'@'192.168.1.%';
FLUSH PRIVILEGES;

實例生命週期管理指令

操作指令範例說明
啟動單一實例mysqld_multi start 1啟動 GNR=1 ([mysqld1])
啟動多個實例mysqld_multi start 1-3啟動 1 到 3 號實例
重啟實例mysqld_multi restart 2
停止實例mysqld_multi stop 1,3停止 1 和 3 號
查看狀態mysqld_multi report 1-2顯示運行狀態、PID、Port

客戶端連線指定實例

# 連線實例 2 (Port 3307)
mysql -u user -p -h 127.0.0.1 -P 3307 -S /tmp/mysql3307.sock

# 或使用 TCP/IP 連線 (需確認 bind-address=0.0.0.0)
mysql -u user -p -h 127.0.0.1 -P 3307

進階:指定配置檔啟動

# 指定額外配置檔啟動特定群組
mysqld_multi --defaults-extra-file=/etc/my.cnf start 1

# 停止多個群組
mysqld_multi --defaults-extra-file=/etc/my.cnf stop 8,10-13

常見問題排查

  • 啟動失敗:檢查 `datadir` 權限、`socket` 路徑衝突、`port` 佔用、錯誤日誌 (`log-error`)。
  • mysqld_multi 找不到:確認已複製至 `/usr/bin/` 或使用絕對路徑。
  • 實例間資料隔離:各實例獨立 `datadir`、`binlog`、`socket`,互不干擾。

總結

透過 mysqld_multi 統一管理多實例,配合獨立的 `datadir`、`port`、`socket`、`server-id`,可在單機上安全運行多個 MySQL 服務。生產環境建議結合資源限制、監控告警與備份策略完善運維體系。

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