MySQL單機多實例部署兩種實用方案
在實際運維工作中,MySQL多實例部署能有效節(jié)省服務器資源、隔離不同業(yè)務數(shù)據(jù),同時方便統(tǒng)一管理。本文將詳細介紹兩種常用的MySQL多實例部署方案,包含完整操作步驟與關鍵命令,適用于Linux環(huán)境下的MySQL運維場景。
一、方案一:手動復制實例文件,分別啟動多實例
該方案通過復制已安裝的MySQL基礎實例,修改配置文件與啟動腳本實現(xiàn)多實例運行,適合實例數(shù)量較少、需靈活配置的場景。
1.1 安裝基礎MySQL實例
首先需在服務器上部署一個基礎MySQL實例,可通過現(xiàn)成的安裝腳本快速完成:
# 進入腳本目錄 cd /data/scripts/ # 執(zhí)行安裝腳本(需確保腳本已提前準備) sh mysql_install.sh
1.2 復制數(shù)據(jù)目錄與啟動腳本
基礎實例安裝完成后,需為新實例復制核心文件,同時清理冗余數(shù)據(jù)避免沖突:
- 停止基礎MySQL實例,防止文件占用:
/etc/init.d/mysql.server stop
- 清空基礎實例的日志文件與大數(shù)據(jù)庫文件,減少復制體積:
# 查看MySQL目錄下文件大小 cd /data/mysql du -sh * # 清空日志文件(> 符號表示清空文件內容,保留文件本身) cd log/ ll -h >mysql-general.log >mysql-slow.log >mysql.err # 清空大數(shù)據(jù)庫文件(替換[大數(shù)據(jù)庫文件]為實際文件名,如test_db) cd ../data/ du -sh * rm [大數(shù)據(jù)庫文件] # 查看磁盤空間,刪除備份文件(若存在) cd /data du -sh * df -Th rm mysql_bak -rf
- 復制數(shù)據(jù)目錄與啟動腳本,新實例以端口3307區(qū)分(基礎實例默認3306):
# 復制數(shù)據(jù)目錄,命名為mysql3307 cp -rf /data/mysql /data/mysql3307 # 復制啟動腳本,命名為mysql3307.server cp /etc/init.d/mysql.server /etc/init.d/mysql3307.server
1.3 修改配置文件與啟動腳本
新實例需修改路徑、端口等關鍵配置,避免與基礎實例沖突:
- 修改啟動腳本中的目錄路徑與鎖文件名稱:
# 編輯新實例啟動腳本 vim /etc/init.d/mysql3307.server # 在vim編輯器中執(zhí)行替換命令(全局替換數(shù)據(jù)目錄路徑) :%s/\/data\/mysql/\/data\/mysql3307/g # 修改鎖文件路徑,避免與基礎實例爭搶鎖文件 lock_file_path="$lockdir/mysql3307"
- 修改新實例的MySQL配置文件(my.cnf):
# 編輯新實例配置文件 vim /data/mysql3307/conf/my.cnf # 全局替換數(shù)據(jù)目錄路徑 :%s/\/data\/mysql/\/data\/mysql3307/g # 替換sock文件名稱(用于本地連接標識) :%s/mysql.sock/mysql3307.sock/g # 替換端口號(從3306改為3307) :%s/3306/3307/g
1.4 修復權限并啟動實例
MySQL運行依賴mysql用戶權限,需確保新實例目錄屬組正確:
- 修改數(shù)據(jù)目錄屬組:
chown mysql.mysql /data/mysql3307/ -R
- 啟動基礎實例與新實例,驗證進程:
# 啟動兩個實例 /etc/init.d/mysql.server start /etc/init.d/mysql3307.server start # 查看MySQL進程,確認兩個實例均正常運行 ps -ef | grep mysql

1.5 測試多實例連接
通過端口區(qū)分登錄不同實例,驗證部署結果:
# 登錄基礎實例(默認3306端口) mysql -uroot -p # 查看數(shù)據(jù)庫列表 show databases; exit; # 登錄3307端口的新實例 mysql -uroot -p -P 3307 # 查看數(shù)據(jù)庫列表 show databases; exit; # 如需停止實例,執(zhí)行以下命令 /etc/init.d/mysql.server stop /etc/init.d/mysql3307.server stop


二、方案二:使用mysqld_multi工具集中管理多實例
mysqld_multi是MySQL官方提供的多實例管理工具,支持通過單個配置文件管理多個實例,適合實例數(shù)量較多、需統(tǒng)一運維的場景。
2.1 準備目錄與配置文件
首先創(chuàng)建實例數(shù)據(jù)目錄與工具配置目錄,規(guī)范文件結構:
- 創(chuàng)建兩個新實例(3311、3312端口)的數(shù)據(jù)目錄:
mkdir -p /data/{mysql3311,mysql3312}/data- 創(chuàng)建mysqld_multi的配置文件與日志目錄:
mkdir -p /data/mysqld_multi/conf/ mkdir /data/mysqld_multi/log/
- 編寫mysqld_multi配置文件(my.cnf):
vim /data/mysqld_multi/conf/my.cnf
配置內容如下(包含工具全局配置與兩個實例的獨立配置):
[mysqld_multi] # 指定mysqld_safe與mysqladmin路徑(需根據(jù)實際安裝路徑調整) mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin # 工具運行日志路徑 log = /data/mysqld_multi/log/mysqld_multi.log # 管理實例的默認賬號密碼(后續(xù)可修改) user = root pass = martin # 3311端口實例配置 [mysqld3311] socket = /data/mysql3311/data/mysql3311.sock # 實例本地連接標識 port = 3311 # 端口號 pid-file = /data/mysql3311/data/mysql3311.pid # 進程ID文件 datadir = /data/mysql3311/data/ # 數(shù)據(jù)目錄 user = mysql # 運行用戶 # 3312端口實例配置 [mysqld3312] socket = /data/mysql3312/data/mysql3312.sock port = 3312 pid-file = /data/mysql3312/data/mysql3312.pid datadir = /data/mysql3312/data/ user = mysql
2.2 初始化多實例數(shù)據(jù)目錄
新實例需初始化數(shù)據(jù)目錄,生成系統(tǒng)表與臨時root密碼:
# 初始化3311實例(指定數(shù)據(jù)目錄與運行用戶)root@localhost: k*sN45P0NaWw mysqld --datadir=/data/mysql3311/data/ --user=mysql --initialize # 初始化3312實例 root@localhost: *V)kHsr47Try mysqld --datadir=/data/mysql3312/data/ --user=mysql --initialize
關鍵注意:初始化過程中會生成臨時root密碼(類似“root@localhost: Xxxxxxxx”),需記錄下來,后續(xù)登錄需使用。

2.3 啟動多實例并驗證
通過mysqld_multi工具一鍵啟動所有實例,簡化操作:
- 啟動所有配置的實例:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf start
- 查看實例進程,確認啟動狀態(tài):
ps -ef | grep mysql
正常情況下,會顯示3311與3312端口對應的MySQL進程。

2.4 修改實例root密碼
使用臨時密碼登錄實例,修改為自定義密碼(此處統(tǒng)一改為“martin”):
- 登錄3311實例(通過socket文件定位實例):
mysql -uroot -p -S /data/mysql3311/data/mysql3311.sock
輸入初始化時記錄的臨時密碼,登錄后執(zhí)行密碼修改命令:
alter user user() identified by 'martin'; exit;

- 同理修改3312實例密碼:
mysql -uroot -p -S /data/mysql3312/data/mysql3312.sock alter user user() identified by 'martin'; exit;

- 使用新密碼驗證登錄:
# 登錄3311實例 mysql -uroot -p -S /data/mysql3311/data/mysql3311.sock # 登錄3312實例 mysql -uroot -p -S /data/mysql3312/data/mysql3312.sock

2.5 管理多實例狀態(tài)與啟停
mysqld_multi支持查看實例狀態(tài)、單獨啟停實例,運維更靈活:
- 查看所有實例狀態(tài):
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf report

- 單獨停止3311實例:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf stop 3311

- 單獨啟動3311實例:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf start 3311

- 再次查看狀態(tài),確認3311實例已恢復運行:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf report

三、兩種方案對比與選擇建議
| 對比維度 | 方案一(手動復制實例) | 方案二(mysqld_multi工具) |
|---|---|---|
| 適用場景 | 實例數(shù)量少(2-3個)、需靈活配置 | 實例數(shù)量多(3個以上)、需統(tǒng)一管理 |
| 配置復雜度 | 每個實例單獨修改配置,步驟繁瑣 | 單個配置文件集中管理,配置簡潔 |
| 運維效率 | 啟停需執(zhí)行不同腳本,效率低 | 一鍵啟停所有實例,支持單獨管理 |
| 學習成本 | 無需額外學習工具,易上手 | 需熟悉工具命令,有一定學習成本 |
選擇建議:
- 若業(yè)務僅需2-3個MySQL實例,且每個實例配置差異大,優(yōu)先選方案一;
- 若需部署多個實例(如測試環(huán)境多版本驗證、生產(chǎn)環(huán)境多業(yè)務隔離),優(yōu)先選方案二,減少運維工作量。
四、注意事項
- 端口沖突:部署前需確認端口未被占用(使用
netstat -tuln | grep 端口號檢查); - 數(shù)據(jù)備份:操作前務必備份基礎實例數(shù)據(jù),避免誤刪或配置錯誤導致數(shù)據(jù)丟失;
- 權限控制:所有MySQL目錄需歸屬mysql用戶,避免權限不足導致實例啟動失敗;
- 生產(chǎn)環(huán)境:生產(chǎn)環(huán)境建議為每個實例配置獨立的日志文件(錯誤日志、慢查詢日志),便于問題排查。
通過以上兩種方案,可滿足不同場景下的MySQL多實例部署需求,實際操作時需根據(jù)服務器環(huán)境與業(yè)務需求靈活調整命令路徑與配置參數(shù)。
到此這篇關于MySQL單機多實例部署兩種實用方法詳解的文章就介紹到這了,更多相關mysql多實例部署內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL性能優(yōu)化之一條SQL在MySQL中執(zhí)行的過程詳解
天天和數(shù)據(jù)庫打交道,一天能寫上幾十條 SQL 語句,但你知道系統(tǒng)是如何和數(shù)據(jù)庫交互的嗎?下面這篇文章主要給大家介紹了關于MySQL性能優(yōu)化之一條SQL在MySQL中執(zhí)行的過程的相關資料,需要的朋友可以參考下2023-02-02
解決Navicat for Mysql連接報錯1251的問題(連接失敗)
記得在之前給大家介紹過Navicat for Mysql連接報錯的問題,可能寫的不夠詳細,今天在稍作修改補充下,對Navicat for Mysql連接報錯1251問題感興趣的朋友跟隨小編一起看看吧2021-05-05
mysql創(chuàng)建用戶以及給用戶授予權限實現(xiàn)方式
文章講解了MySQL用戶創(chuàng)建與授權方法,包括設置空密碼、分配特定數(shù)據(jù)庫表權限及全部權限,強調安全授權的重要性,并提及回收和修改權限的命令2025-07-07

