首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.5 多實例部署實戰:單機多端口、獨立配置、資源隔離

     編輯:MySQL 綜合教學

CentOS 環境下 MySQL 5.5 多實例部署全流程 (mysqld_safe + 多配置文件模式)

多實例:一台服務器運行多個 MySQL 進程,監聽不同端口 (3306/3307...),共享二進制文件,**獨立配置文件、數據目錄、Socket、PID、日誌**,邏輯隔離如同獨立服務器。

一、適用場景與優缺點

優點缺點
資源利用率高 (閒置 CPU/內存/磁盤複用)資源爭搶風險 (某實例慢查詢/高併發影響其它)
節省硬體成本 (適合預算緊張、業務量中小型)故障域共享 (OS/硬體故障波及所有實例)
部署運維統一 (同版本、同補丁)調優難度大 (共享 innodb_buffer_pool 等全局資源)

推薦場景:開發/測試環境、中小型業務隔離、讀寫分離從庫合部署。

二、部署步驟 (以 3306、3307 雙實例為例)

1. 安裝 MySQL 5.5 (源碼編譯),**暫不啟動**

參考《MySQL 5.5 cmake 源碼編譯安裝》。

2. 創建實例數據目錄結構

mkdir -p /data/{3306,3307}/data
tree -L 2 /data/
# /data/
# ├── 3306
# │   └── data
# └── 3307
#     └── data

目錄結構

3. 編寫實例專屬 my.cnf

基於 support-files/my-medium.cnf 修改關鍵參數 (以 3306 為例):

[client]
port = 3306
socket = /data/3306/mysql.sock

[mysqld]
port = 3306
socket = /data/3306/mysql.sock
basedir = /usr/local/mysql
datadir = /data/3306/data
server-id = 1
log-bin = mysql-bin
binlog_format = mixed
max_binlog_size = 500M
skip-name-resolve
# ... 其餘緩衝區參數保持默認或按資源分配調整

[mysqld_safe]
log-error = /data/3306/ilanni.err
pid-file = /data/3306/ilanni.pid

3306 my.cnf

3307 配置:複製 3306 文件,sed -i 's/3306/3307/g' /data/3307/my.cnf 批量替換端口、路徑、server-id。

sed 替換

4. 初始化實例數據字典

/usr/local/mysql/scripts/mysql_install_db \
    --basedir=/usr/local/mysql \
    --datadir=/data/3306/data \
    --user=mysql

/usr/local/mysql/scripts/mysql_install_db \
    --basedir=/usr/local/mysql \
    --datadir=/data/3307/data \
    --user=mysql

關鍵: --user=mysql 確保生成文件屬主為 mysql,啟動時無權限報錯。

初始化 3306
初始化 3307

5. 修正目錄權限 (極重要)

chown -R mysql:mysql /data/3306
chown -R mysql:mysql /data/3307

漏此步驟會導致啟動報錯 Permission denied。

權限修正

6. 啟動多實例

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf &

ps aux | grep mysqld
# 應見兩個 mysqld 進程,分別指向對應 datadir

進程列表

7. 登錄驗證 (必須指定 Socket)

# 本地登錄 3306
mysql -uroot -p -S /data/3306/mysql.sock
# 遠程登錄 3306
mysql -h192.168.1.213 -uroot -p -S /data/3306/mysql.sock

本地登錄
遠程登錄

8. 修改 Root 密碼

mysqladmin -uroot -p password '123456' -S /data/3306/mysql.sock

修改密碼

三、管理技巧

  • 停止實例: mysqladmin -uroot -p -S /data/3306/mysql.sock shutdown
  • 開機自啟: 編寫 Systemd/Vinit 腳本分別拉起各實例 mysqld_safe --defaults-file=...。
  • 資源隔離建議: 不同實例設置不同 innodb_buffer_pool_size、innodb_log_file_size,總和 ≤ 物理內存 70%。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved