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

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


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

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

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

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

- 使用新密碼驗(yàn)證登錄:
# 登錄3311實(shí)例 mysql -uroot -p -S /data/mysql3311/data/mysql3311.sock # 登錄3312實(shí)例 mysql -uroot -p -S /data/mysql3312/data/mysql3312.sock

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

- 單獨(dú)停止3311實(shí)例:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf stop 3311

- 單獨(dú)啟動(dòng)3311實(shí)例:
mysqld_multi --defaults-extra-file=/data/mysqld_multi/conf/my.cnf start 3311

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

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

