萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 多實例配置與管理完整教學

什麼是多實例?

在單一伺服器上運行多個獨立的 MySQL 服務,各自擁有獨立的 資料目錄、端口、Socket、配置檔、進程,邏輯上完全隔離,適合開發/測試/多租戶/版本並行等場景。

官方推薦工具:mysqld_multi

MySQL 官方內建 mysqld_multi 管理多實例,配置集中在單一 my.cnf,透過群組編號(GNR)啟停、狀態查詢。

一、配置檔 /etc/my.cnf 範例(雙實例)

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = your_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

[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

二、初始化資料目錄

mkdir -p /data/db/my1 /data/db/my2
chown -R mysql:mysql /data/db/my1 /data/db/my2

/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

三、安裝管理工具到 PATH

cp /usr/local/mysql/bin/my_print_defaults /usr/bin/
cp /usr/local/mysql/bin/mysqld_multi /usr/bin/

四、建立管理帳號並授權

CREATE USER 'multi_admin'@'192.168.1.%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'multi_admin'@'192.168.1.%';
FLUSH PRIVILEGES;

五、常用管理命令

mysqld_multi start 1mysqld_multi start 1-2mysqld_multi restart 1mysqld_multi stop 1-2mysqld_multi report 1,2mysqld_multi --defaults-extra-file=/etc/my.cnf start 1mysqld_multi --defaults-extra-file=/etc/my.cnf stop 8,10-13
操作命令範例
啟動實例 1
啟動實例 1-2
重啟實例 1
停止實例 1-2
查看狀態
指定配置檔啟動
指定配置檔停止多組

六、客戶端連線指定實例

mysql -u multi_admin -p -P 3307 -S /tmp/mysql3307.sock

七、GNR(群組編號)規則說明

  • 對應 [mysqldN] 中的 N。
  • 支援單一編號(1)、範圍(10-13)、多組逗號分隔(8,10-13)。
  • 命令列中 GNR 後不可有空白,否則後續內容被忽略。

八、替代方案:systemd 多實例(MySQL 8.0+ / MariaDB 10.4+)

# 建立實例服務單元
cp /usr/lib/systemd/system/mysqld.service /etc/systemd/system/mysqld@.service
# 編輯 EnvironmentFile 指向各實例專屬 my.cnf
systemctl daemon-reload
systemctl start mysqld@instance1
systemctl enable mysqld@instance1

systemd 方式更現代化,支援依賴管理、資源限制、日誌整合,建議新部署優先考慮。

總結

mysqld_multi 是傳統多實例管理的標準工具,配置集中、操作統一。生產環境請務必:資料目錄隔離、端口/Socket 不衝突、管理帳號最小權限、監控各實例健康度。新版部署可評估 systemd 範本化方案。

copyright © 萬盛學電腦網 all rights reserved