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

Linux 多實例 MySQL 部署實戰:獨立數據目錄、配置與啟動腳本

     編輯:MySQL 資料庫相關知識

架構設計

在單機運行多個 MySQL 實例,核心在於隔離:獨立的數據目錄、配置文件、端口、Socket、PID 文件、錯誤日誌。本文以 3307 實例為例演示標準化部署流程。

部署步驟

1. 建立獨立數據目錄並初始化

mysql_install_db --datadir=/data/mysql_3307

2. 目錄權限歸屬

chown -R mysql:mysql /data/mysql_3307

關鍵: 權限缺失會導致 Errcode: 13(文件權限拒絕)。

3. 專屬配置文件 my.cnf

cp /etc/my.cnf /data/mysql_3307/my.cnf

編輯關鍵差異化參數:

[mysqld]
port = 3307
socket = /data/mysql_3307/mysql.sock
pid-file = /data/mysql_3307/mysql.pid
log-error = /data/mysql_3307/mysql-error.log
datadir = /data/mysql_3307
basedir = /usr/local/mysql
# 若報錯找不到 errmsg.sys,需額外指定:
language = /usr/local/mysql/share/mysql/english

4. 專用啟動腳本 start_3307.sh

#!/bin/bash
rundir=$(pwd)
datadir=$rundir
cnf=$rundir/my.cnf

echo "server path: $rundir"
echo "data path: $datadir"
echo "cnf: $cnf"

/usr/local/mysql/bin/mysqld_safe \
  --defaults-file="$cnf" \
  --pid-file="$rundir/mysql.pid" \
  --datadir="$datadir" \
  --socket="$rundir/mysql.sock" \
  &

賦予執行權限:chmod +x start_3307.sh

5. 啟動驗證

./start_3307.sh
# 檢查進程
ps -ef | grep mysql
# 連接測試
mysql -S /data/mysql_3307/mysql.sock -u root -p

常見故障與解決

錯誤現象根因解決方案
File './mysql-bin.index' not found (Errcode: 13)數據目錄權限未授予 mysql 用戶chown -R mysql:mysql /data/mysql_3307
Can't find messagefile '/data/mysql_3307/share/mysql/english/errmsg.sys'語言文件路徑未指向基礎安裝目錄my.cnf 添加 language = /usr/local/mysql/share/mysql/english
客戶端連不上未指定正確 socket 或配置文件mysql --defaults-file=/data/mysql_3307/my.cnf -u root -p

生產環境擴展建議

  • 使用 mysqld_multi 統一管理多實例啟停
  • 配置 log-bin、relay-log、server-id 做主從複制
  • 監控掛載 Prometheus mysqld_exporter 區分實例標籤
  • 資源隔離:cgroups 限制 CPU/記憶體,避免單實例佔滿資源
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved