在單台伺服器運行多個 MySQL 實例的輕量級方案:共用二進制,隔離配置文件、數據目錄、端口、Socket、PID 文件。本文給出從編譯安裝後的最小化配置步驟,適合快速建立測試/開發/隔離環境。
cp support-files/my-medium.cnf /etc/my_crm.cnf
vi /etc/my_crm.cnf
關鍵差異化配置:
[client]
port = 3308
socket = /usr/local/mysql/tmp/mysql.sock
[mysqld]
port = 3308
socket = /usr/local/mysql/tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/pid-file.pid
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
scripts/mysql_install_db \
--defaults-file=/etc/my_crm.cnf \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data
必須指定 --defaults-file,否則讀取默認 /etc/my.cnf 初始化到錯誤目錄。
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my_crm.cnf &
/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/tmp/mysql.sock --defaults-file=/etc/my_crm.cnf
# 客戶端機器
mysql -u root -p -P 3308 -h 192.168.2.129
前提:實例授權允許遠程 IP(GRANT ... TO 'root'@'192.168.2.%' ...),防火牆放行 3308 端口。
| 要素 | 實例 1 (默認) | 實例 2 (CRM) | 隔離方式 |
|---|---|---|---|
| 配置文件 | /etc/my.cnf | /etc/my_crm.cnf | --defaults-file 指定 |
| 端口 | 3306 | 3308 | my.cnf port 參數 |
| Socket | /tmp/mysql.sock | /usr/local/mysql/tmp/mysql.sock | my.cnf socket 參數 |
| 數據目錄 | /var/lib/mysql | /usr/local/mysql/data | my.cnf datadir 參數 |
| PID 文件 | /var/run/mysqld.pid | /usr/local/mysql/pid-file.pid | my.cnf pid-file 參數 |
error.log,常見權限、目錄不存在、端口衝突netstat -tlnp | grep 3308)、防火牆mysql_install_db 未指定 --defaults-file 導致初始化錯誤位置mysqld_multi 統一管理多實例啟停log-error、slow_query_log_filecgroups 限制 CPU/記憶體,避免單實例佔滿mysqld_exporter多實例部署核心是「一份二進制,多份配置」。掌握 --defaults-file 機制與五大隔離要素,即可靈活構建隔離環境。