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

mysqld_multi 實現 MySQL 多實例部署:配置範本與關鍵參數詳解

     編輯:MySQL 綜合教學

核心原則

  • 每個實例獨立 datadir、socket、port、pid-file
  • 共用二進制檔,透過 [mysqld#] 群組區分配置
  • 由專用 multi_admin 帳號(僅需 SHUTDOWN 權限)統一管理啟停

標準 my.cnf 範本

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = multi_admin
password   = your_strong_password

# 實例 2
[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /var/lib/mysql2/hostname.pid2
datadir    = /var/lib/mysql2
language   = /usr/share/mysql/english
user       = unix_user1

# 實例 3(指定專用 mysqld_safe 路徑)
[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /var/lib/mysql3/hostname.pid3
datadir    = /var/lib/mysql3
language   = /usr/share/mysql/swedish
user       = unix_user2

# 實例 4
[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /var/lib/mysql4/hostname.pid4
datadir    = /var/lib/mysql4
language   = /usr/share/mysql/estonia
user       = unix_user3

# 實例 6(編號可不連續,靈活擴展)
[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /var/lib/mysql6/hostname.pid6
datadir    = /var/lib/mysql6
language   = /usr/share/mysql/japanese
user       = unix_user4

關鍵配置項說明

參數用途備註
mysqld啟動腳本路徑建議用 mysqld_safe 以獲得自動重啟保護
ledirmysqld 二進制目錄僅 mysqld_safe 識別,直接傳給 mysqld 會報錯
datadir資料目錄強烈不建議 多實例共用同一 datadir(效能、鎖衝突、損壞風險)
portTCP 埠每實例唯一,防火牆同步放行
socketUnix 域套接字本地連線必須指定對應 socket
pid-filePID 檔案每實例獨立,避免衝突
user運行使用者若指定非 root 使用者,需以 root 執行 mysqld_multi

建立管理帳號

GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'your_strong_password';
FLUSH PRIVILEGES;

需在所有受控實例執行上述授權。

常用管理指令

# 啟動所有實例
mysqld_multi start

# 啟動指定實例(2,4)
mysqld_multi start 2,4

# 停止實例 3
mysqld_multi stop 3

# 查看狀態
mysqld_multi report

系統服務整合

MySQL 發布包含 support-files/mysqld_multi.server.sh,可部署為 /etc/init.d/mysqld_multi 並加入 chkconfig 實現開機自啟。

避坑指南

  • InnoDB 不支援共享 datadir:並發寫入會導致資料損壞,務必隔離目錄。
  • 啟動順序:若實例間有主從關係,先啟動 Master 再啟動 Slave。
  • 監控區分:Prometheus/MySQL Exporter 需配置多個 data_source_name 對應不同 socket/port。
  • 備份策略:每實例獨立備份排程,避免同時備份佔滿 I/O 頻寬。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved