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

單機多MySQL實例部署指南:mysqld_multi配置、資源隔離、主從同機實戰

     編輯:MySQL 資料庫相關知識

單機多實例核心價值

  • ✅ 充分利用多核CPU:繞過單實例擴展性瓶頸
  • ✅ 邏輯隔離:不同業務/租戶獨立實例,故障域隔離
  • ✅ 同機主從:無需額外硬體實現高可用/讀寫分離
  • ✅ 版本並行:不同版本共存,平滑遷移驗證

實戰案例:雙實例 (3306 / 3307)

配置檔 /etc/my.cnf 多實例區段


# 實例 1 (原有預設)
[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
log = /var/lib/mysql/log.log

# 實例 2 (新增)
[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 = /var/lib/mysql2/log.log

資料目錄初始化與權限


# 複製實例1資料目錄結構 (含 mysql 系統庫)
cp -R /var/lib/mysql /var/lib/mysql2

# 修正擁有者權限
chown -R mysql:mysql /var/lib/mysql2

# 或全新初始化 (MySQL 5.7+)
mysqld --initialize-insecure --datadir=/var/lib/mysql2 --user=mysql

mysqld_multi 管理命令


# 啟動實例 1,2
mysqld_multi start 1,2

# 停止實例 1,2
mysqld_multi stop 1,2

# 重啟實例 2
mysqld_multi restart 2

# 檢查狀態
mysqld_multi report 1,2

# 查看進程
ps aux | grep mysql

客戶端連線指定實例


# 方法一:指定埠號
mysql -P 3307 -u root -p

# 方法二:指定 Socket (更可靠)
mysql -u root -p -S /var/run/mysqld/mysqld2.sock

# 方法三:指定主機 + 埠
mysql -h 127.0.0.1 -P 3307 -u root -p

資源配置策略:避免爭用

資源配置原則範例 (16GB RAM, 8核)
記憶體總和 ≤ 物理記憶體 80%實例1: innodb_buffer_pool=6G, 實例2: 4G
CPUthread_concurrency = 核心數 × 2各實例 thread_concurrency=8
磁碟 I/O分離資料目錄到不同物理磁碟/分區實例1: /dev/sdb, 實例2: /dev/sdc
連線數max_connections 總和 ≤ 系統檔案描述符限制各實例 max_connections=500
日誌獨立錯誤日誌、慢查詢日誌log-error=/var/log/mysql1/error.log

同機主從復制配置


# 主庫 (實例1 3306) my.cnf
[mysqld1]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW

# 從庫 (實例2 3307) my.cnf
[mysqld2]
server-id = 2
relay-log = mysql-relay
read-only = 1
super-read-only = 1

# 建立復制帳號 (主庫)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1' IDENTIFIED BY 'replpass';

# 配置從庫連線
CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='replpass',
MASTER_AUTO_POSITION=1;

START SLAVE;
SHOW SLAVE STATUS\G

系統級管理優化

  • systemd 服務模板:/etc/systemd/system/mysqld@.service 管理多實例
  • logrotate:各實例獨立日誌輪轉
  • 監控:Prometheus mysqld_exporter 多目標採集 (不同 port)
  • 備份:mysqldump --protocol=TCP --port=3307 指定實例備份

擴展至 N 實例

重複上述模式:[mysqld3] port=3308 datadir=/var/lib/mysql3 ... 以此類推。建議單機不超過 CPU 核心數實例數。

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