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

Windows 單機雙 MySQL 實例部署:完整步驟與註冊表修正指南

     編輯:MySQL 綜合教學

適用場景

  • 開發/測試環境需隔離多版本或多專案資料庫。
  • 單伺服器資源充足(記憶體 8GB+、多核 CPU)。
  • 避免 Docker/虛擬機開銷,追求原生效能。

部署前提

  • OS: Windows Server 2003 / 2008 / 2012 / 2016 / 2019 / 10 / 11
  • MySQL 5.5 / 5.6 / 5.7 / 8.0(二進位免安裝版或 MSI 安裝版均可)
  • 管理員權限

步驟總覽

  1. 正常安裝第一個實例(預設埠 3306、資料目錄 C:\ProgramData\MySQL\MySQL Server 5.5\data)。
  2. 停止第一個服務:net stop MySQL 或服務管理器。
  3. 複製整個 MySQL 安裝目錄到新位置(如 E:\MySQL\MySQL Server 5.5)。
  4. 建立第二個實例專用 my.ini,修改關鍵路徑與埠號。
  5. 註冊 Windows 服務(mysqld --install)。
  6. 修正註冊表 ImagePath 指向正確 my.ini。
  7. 啟動第二個服務,驗證連線。

關鍵配置檔(E:\MySQL\mysql_base\ini\my.ini)

[client]
port=3307
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
port=3307
basedir="E:/MySQL/MySQL Server 5.5/"
datadir="E:/MySQL/MySQL Server 5.5/data/"
socket=MySQL2
# 效能基礎調整
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=2
innodb_flush_method=unbuffered  # Windows 建議
max_connections=200
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 避免與第一實例衝突
tmpdir="E:/MySQL/MySQL Server 5.5/tmp/"
log-error="E:/MySQL/MySQL Server 5.5/logs/error.log"
slow-query-log-file="E:/MySQL/MySQL Server 5.5/logs/slow.log"

服務註冊與註冊表修正

REM 1. 以管理員身分執行 CMD
cd /d "E:\MySQL\MySQL Server 5.5\bin"

REM 2. 註冊服務(指定預設檔路徑)
mysqld --install MySQL2 --defaults-file="E:\MySQL\mysql_base\ini\my.ini"

REM 3. 修正註冊表 ImagePath(關鍵步驟,否則服務啟動讀取預設 my.ini 導致路徑錯誤)
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\MySQL2" \
  /v ImagePath /t REG_EXPAND_SZ \
  /d "\"E:\MySQL\MySQL Server 5.5\bin\mysqld\" --defaults-file=\"E:\MySQL\mysql_base\ini\my.ini\" MySQL2" /f

REM 4. 啟動服務
net start MySQL2

REM 5. 驗證連線
mysql -uroot -p -P3307 -h127.0.0.1

常見坑與解決

現象原因解決
服務啟動即停止ImagePath 未指定 --defaults-file,讀取預設 my.ini 導致 datadir 錯誤按上述 REG ADD 修正
連線報錯 Can't connect to MySQL server防火牆攔截 3307;或 bind-address 限制開放埠;my.ini 設 bind-address=0.0.0.0
資料目錄初始化失敗datadir 非空或權限不足確保目錄空、SYSTEM/Administrators 完全控制
字元集亂碼兩實例 character-set-server 不一致統一設 utf8mb4

多實例管理腳本(PowerShell)

# start-mysql.ps1 -InstanceName MySQL2
param([string]$InstanceName='MySQL2')
$svc = Get-Service $InstanceName -ErrorAction SilentlyContinue
if ($svc -and $svc.Status -ne 'Running') { Start-Service $InstanceName }
elseif (-not $svc) { Write-Error "Service $InstanceName not found" }
else { Write-Host "$InstanceName already running" }

資源隔離建議

  • 記憶體:兩實例 innodb_buffer_pool_size 總和 ≤ 物理記憶體 70%。
  • CPU:MySQL 5.7+ 支援 innodb_numa_interleave,或用 Windows 工作管理器設定處理器親和性。
  • 磁碟:兩實例資料目錄放不同實體磁碟/RAID 陣列,避免 I/O 爭用。
  • 備份:分不同時段排程,避免 mysqldump 併發衝擊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved