MySQL數據庫多實例介紹及安裝


1.mysql多實例實質

在一台機器上開啟多個不同的mysql服務端口(3306,3307),運行多個mysql服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供各自的服務;

多個實例共用一套mysql安裝程序,配置文件可以用同一個(最好不同),啟動程序可以用同一個(最好不同),數據文件是不同的;

服務器的硬件資源是公用的;

邏輯上多實例是各自獨立的

2.多實例的作用

有效利用服務器資源;                                  #每台服務器的資源利用率要高

節約服務器資源;

但是多實例會存在資源互相搶占問題,當某個服務實例並發很高或者有慢查詢時,會消耗整台服務器更多的內存、CPU等,導致其他實例運行也慢

3.多實例的應用場景

資金比較緊張的公司;

並發訪問不是特別大的業務;

門戶網站一般會采取:目的是配硬件好的服務器,節省IDC機櫃空間,讓硬件資源不浪費

4.mysql多實例常見配置方案

1)通過多個配置文件及多個啟動程序來實現多實例                 #生產中比較推薦此方法,本隨筆中也將采取此方法

2)單一配置文件方案即一個配置文件里寫多個實例的內容      #通過mysqld_muti參數實現,此方法耦合性太高,可參見 http://blog.51cto.com/suifu/1850560

5.安裝多實例數據庫

#生產硬件配置,32G MEM 8 CPU,硬盤6*600g  SAS 15k,跑2-3個實例

1)安裝好cmake及mysql依賴的包

yum install ncurses-devel -y

yum install libaio-devel -y

2)創建mysql多實例數據文件目錄      #此過程依賴於已經安裝好mysql軟件的單實例環境

采用/data目錄作為mysql多實例總的數據文件根目錄

pkill mysqld                                          #創建前需把創建好的mysql單實例殺掉

rm -f /etc/init.d/mysqld                          #刪除單實例時的啟動命令

mkdir -p /data/{3306,3307}/data

tree /data

chown -R mysql.mysql /data                 #授權data目錄

3)創建mysql配置文件並配置環境變量

分別在/data/3306和/data/3307下創建my.conf文件 不像單實例放在/etc/下        #my.cnf中主要修改port和server-id

echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile                       #環境變量設置單實例已設置

4)初始化數據文件

初始化命令同單實例,只是更改數據路徑:

在/application/mysql/scripts下執行./mysql_install_db --basedir=/application/mysql --defaults-file=/data/3306/my.cnf --datadir=/data/3306/data --user=mysql             #同理實現3307初始化

#初始化的目的就是為了生成存放文件的地方,結果就是在/data下生成了一些系統化的文件

5)配置開機自啟動腳本&啟動多實例

cd /home/coco/tools/mysql-5.5.32

/bin/cp support-files/mysql.server /data/3306/mysql

/bin/cp support-files/mysql.server /data/3307/mysql                                   #啟動腳本可參見 http://blog.51cto.com/oldboy/2124950

find /data/ -type f -name "mysql" | xargs chmod +x                             #給啟動文件授權執行權限

find /data/ -type f -name "mysql" | xargs ls -l

啟動數據庫:

/data/3306/mysql start

/data/3307/mysql start

netstat -lntup|grep 330[6-7]

多實例啟動文件的啟動mysql服務實質                        #這里直接采用mysqld_safe啟動多實例

mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &

mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &

6)登錄多實例數據庫

mysql -S /data/3306/mysql.sock             #多實例的登錄一定要指定特定的socket

mysqladmin -u root -S /data/3306/mysql.sock password 'oldboy123'       #多實例為root增加密碼

mysql -uroot -p'oldboy123'  -S /data/3306/mysql.sock                      #密碼外側的單引號可省略

#為了確保賬戶安全,因此要將啟動腳本改權限,只有root可以更改密碼:

find /data -type f -name "mysql" -exec chmod 700 {} \.

find /data -type f -name "mysql" -exec chown root.root {} \.

find /data -type f -name "mysql" -exec  ls -l  {} \.

7)停止多實例數據庫

多實例啟動文件的停止mysql服務實質:

mysqladmin -u root -poldboy123 -S /data/3306/mysql.sock shutdown

mysqladmin -u root -poldboy123 -S /data/3307/mysql.sock shutdown

8)如果mysql服務沒有起來,排查辦法如下

8.1)若發現沒有mysql的端口,等幾秒再看,可能是會比較慢

8.2)查看錯誤日志,該日志路徑在my.cnf最下面可以看到

grep log-error my.cnf|tail -l

>>log-error=/data/3306/mysql_coco.err

8.3)前面每行命令執行的返回結果是否有錯誤

8.4)查看系統的/var/log/messages

#Linux中可以用vimdiff   file1  file2 來同時對比兩個文件內容        %附件為3306和3307兩個實例的my.cnf對比

 

 

2018年10月27日

祝好!

 


免責聲明!

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



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