/etc/my.cnf[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
password = your_root_password
[mysqld1] # 原有實例改名
user = mysql
pid-file = /var/run/mysqld/mysqld1.pid
socket = /var/run/mysqld/mysqld1.sock
port = 3306
datadir = /var/lib/mysql
bind-address = 127.0.0.1
[mysqld2] # 新增第二實例
user = mysql
pid-file = /var/run/mysqld/mysqld2.pid
socket = /var/run/mysqld/mysqld2.sock
port = 3307
datadir = /var/lib/mysql2
bind-address = 127.0.0.1
log-error = /var/lib/mysql2/error.log
mkdir -p /var/lib/mysql2
chown -R mysql:mysql /var/lib/mysql2
# 若需複製現有數據作為種子:
# cp -R /var/lib/mysql/* /var/lib/mysql2/
# chown -R mysql:mysql /var/lib/mysql2
若為全新實例,需執行 mysql_install_db --datadir=/var/lib/mysql2 --user=mysql 初始化系統表。
# 啟動雙實例
mysqld_multi start 1,2
# 查看狀態
mysqld_multi report
# 停止指定實例
mysqld_multi stop 2
# 連接實例 1 (預設 socket)
mysql -u root -p -S /var/run/mysqld/mysqld1.sock
# 連接實例 2 (指定 port 或 socket)
mysql -u root -p -P 3307 -h 127.0.0.1
# 或
mysql -u root -p -S /var/run/mysqld/mysqld2.sock
mysqld_multi start 1,2 加入 /etc/rc.local 或 systemd service。--collect.global_status --collect.global_variables --collect.slave_status --config.my-cnf=/etc/my.cnf 並用 --web.listen-address 区分端口。mysqldump --socket=/var/run/mysqld/mysqld2.sock --all-databases 針對性備份。mysqld_multi 是官方內建的多實例管理利器,配合清晰的 [mysqldN] 配置段,讓單機多實例部署變得標準化、可維護。無論是開發測試、業務隔離還是低成本高可用演練,皆是得心應手的選擇。