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

單機多實例部署 MySQL 完全指南:編譯參數、埠號隔離、資料目錄與啟動腳本配置

     編輯:MySQL 資料庫相關知識

部署模式對比

模式二實戰配置 (推薦)

1. 目錄結構規劃

/opt/mysql/
├── 3306/          # 實例 1
│   ├── data/
│   ├── logs/
│   ├── tmp/
│   └── my.cnf
├── 3307/          # 實例 2
│   ├── data/
│   ├── logs/
│   ├── tmp/
│   └── my.cnf
└── bin/           # 共享 mysqld 二進位 (或軟連結)

2. 實例配置檔範例 (/opt/mysql/3306/my.cnf)

[mysqld]
port = 3306
socket = /opt/mysql/3306/tmp/mysql.sock
datadir = /opt/mysql/3306/data
pid-file = /opt/mysql/3306/tmp/mysqld.pid
log-error = /opt/mysql/3306/logs/error.log
slow_query_log_file = /opt/mysql/3306/logs/slow.log
tmpdir = /opt/mysql/3306/tmp
basedir = /opt/mysql/bin
# 其餘參數依實例需求調整

3. 初始化與啟動

# 初始化實例 1
/opt/mysql/bin/mysqld --initialize-insecure --datadir=/opt/mysql/3306/data --basedir=/opt/mysql/bin

# 啟動 (使用 mysqld_safe 或 systemd)
/opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/3306/my.cnf &

# 或 systemd 服務檔 (/etc/systemd/system/mysqld@.service)
[Service]
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/opt/mysql/%i/my.cnf
# systemctl start mysqld@3306

4. 客戶端連線

# 指定 Socket
mysql -u root -p -S /opt/mysql/3306/tmp/mysql.sock

# 或指定 Port (需啟用 TCP)
mysql -u root -p -h 127.0.0.1 -P 3306

# 環境變數簡化
export MYSQL_UNIX_PORT=/opt/mysql/3306/tmp/mysql.sock
mysql -u root -p

關鍵隔離清單

  • Port:3306, 3307, 3308...
  • Socket:各實例獨立 tmp/mysql.sock
  • Datadir:完全獨立目錄
  • Log:error.log, slow.log, binlog 目錄分離
  • PID:獨立 pid-file
  • tmpdir:避免臨時表衝突

監控與備份

  • Prometheus mysqld_exporter 指定 --collect.global_status --collect.global_variables --config.my-cnf=/opt/mysql/3306/my.cnf。
  • 備份腳本遍歷實例目錄,讀取對應 my.cnf 取得 Socket/Port 執行 mysqldump。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
模式隔離層級資源共享維護複雜度適用場景
編譯時指定不同 prefix/port/socket完全獨立 (二進位、配置、資料)無高 (升級需重編)測試新版本、嚴格隔離租戶
同二進位,不同配置檔 + 啟動參數資料、埠、Socket、日誌隔離共享二進位、庫低 (推薦)多租戶、開發/測試/生產共機