Mysql 數據庫單機多實例部署手記


    最近的研發機器需要部署多個環境,包括數據庫。為了管理方便考慮將mysql數據庫進行隔離,即采用單機多實例部署的方式。
找了會資料發現用的人也不是太多,一般的生產環境為了充分發揮機器性能都是單機單實例運行,再進行一系列的配置調優..

多實例的運行機制

    通過mysqld_multi啟動多個mysqld實例進程,每個實例擁有獨立的配置、監聽端口、數據庫文件、臨時文件(日志、socket)等

實現步驟

1  初始化數據目錄

mysql_install_db --datadir=/web/mysql/prd/data --user=mysql
mysql_install_db --datadir=/web/mysql/dev/data --user=mysql
 
//當然數據目錄也可以拷貝已有的

2 配置多實例文件

multi.cnf:
#multi server
[mysqld_multi]
mysqld = /home/root/local/mysql/bin/mysqld_safe
mysqladmin = /home/root/local/mysql/bin/mysqladmin
 
#mysqld_multi log
log = /web/mysql/multi.log
#用戶名密碼,用以mysqld_multi操作時透傳給mysqladmin(初始化時一般為匿名訪問,注釋掉即可)
#user=root
#password=
 
#dev server
[mysqld3306]
user = mysql
port = 3306
socket = /web/mysql/dev/var/mysql.sock
pid-file = /web/mysql/dev/var/mysqld.pid
log-error = /web/mysql/dev/var/mysqld.log
datadir = /web/mysql/dev/data
max_connections = 200
default-storage-engine = innodb
character_set_server = utf8mb4
 
#prd server
[mysqld3307]
user = mysql
port = 3811
socket = /web/mysql/prd/var/mysql.sock
pid-file = /web/mysql/prd/var/mysqld.pid
log-error = /web/mysql/prd/var/mysqld.log
datadir = /web/mysql/prd/data
max_connections = 1000
default-storage-engine = innodb
character_set_server = utf8mb4

  

 

3 啟動多實例

mysqld_multi --defaults-extra-file=multi.cnf start
 

4  管理多實例

檢查運行情況
mysqld_multi --defaults-extra-file=multi.cnf report
 
當然也可以通過網絡端口檢查:
netstat -ntlp tcp
tcp 0 0 :::3306 ::: * LISTEN 3919/mysqld
tcp 0 0 :::3307 ::: * LISTEN 15027/mysqld
 
停止多實例:
mysqld_multi --defaults-extra-file=multi.cnf stop
 
修改密碼(針對某個實例):
mysqladmin -uroot -S /web/mysql/prd/var/mysql.sock password 123456
 
連接某個實例:
mysql -uroot -S /web/mysql/prd/var/mysql.sock -p
 

常見問題

    mysqld_multi執行之后無法啟動實例,執行report發現實例沒有運行
    原因:mysql實例目錄缺少讀寫權限,將多實例的數據目錄設置為mysql:mysql的用戶組,並支持讀寫權限;
    
        
    啟動實例之后無法停止,mysqld_multi stop不生效
    原因: mysqld實例的數據庫管理員密碼與mysqld_multi透傳的管理員密碼不一致(見multi.conf),通過修改密碼可解決。
 
 

TIPS

    msyqld_multi命令僅僅對配置文件做語法檢查,排查問題時需結合multi.log(見配置文件),以及具體實例的錯誤日志進行;
    實例標號必須為整數,如msyqld3307中3307必須為數字標號;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM