標籤:mysql 資料庫服務
一、什麼是mysql多執行個體
mysql多執行個體,簡單的說,就是在一台伺服器上開啟多個不同的mysql服務連接埠(如3306,3307),運行多個mysql服務進程。這些服務進程通過不同的socket監聽不同的服務連接埠,來提供各自的服務。
這些mysql執行個體共用一套mysql安裝程式,使用不同的my.cnf設定檔、啟動程式、資料檔案。在提供服務時,mysql多執行個體在邏輯上看來是各自獨立的,各個執行個體之間根據設定檔的設定值,來取得伺服器的相關硬體資源。
二、mysql多執行個體優劣勢
優
1.有效利用伺服器資源,當單個伺服器資源有剩餘時,可以充分利用剩餘的伺服器資源來提供更多的服務。
2.節約伺服器資源當公司資金緊張,但是資料庫需要各自提供獨立服務,而且需要主從同步等技術時,使用多執行個體就最好了。
劣
1.出現資源互相搶佔問題
當某個執行個體服務並發很高或者有慢查詢時,會消耗伺服器更多的記憶體、CPU、磁碟IO等資源,這時就會導致伺服器上的其它執行個體提供訪問的品質下降,出現伺服器資源互相搶佔的現象。
三、mysql多執行個體應用情境
1.資金緊張型公司的選擇
當公司業務訪問量不太大,又捨不得花錢,但同時又希望不同業務的資料庫服務各自獨立,而且需要主從同步進行等技術提供備份或讀寫分離服務時,使用多執行個體是最好不過的。
2.並發訪問不是特別大的業務
當公司業務訪問量不太大,伺服器資源基本閑置的比較多,這是就很適合多執行個體的應用。如果對SQL語句最佳化的好,多執行個體是一個很值得使用的技術。即使並發很大,只要合理分配好系統資源,也不會有太大問題。
四、mysql多執行個體的實現方法
mysql的多執行個體有兩種方式可以實現,兩種方式各有利弊。
第一種是使用多個設定檔啟動不同的進程來實現多執行個體,這種方式的優勢邏輯簡單,配置簡單,缺點是管理起來不太方便。
第二種是通過官方內建的mysqld_multi使用單獨的設定檔來實現多執行個體,這種方式定製每個執行個體的配置不太方面,優點是管理起來很方便,集中管理。
五、使用第一種方法實現多執行個體
安裝步驟
(本文已經安裝好MySql程式,可以參照http://iywdd.blog.51cto.com/11177578/1768135安裝)
上傳多執行個體設定檔(一般工作中都是配置好的,本文的配置在下方附件)
[[email protected] ~]# cd /data/ #進入下載目錄[[email protected] data]# rz #使用rz上傳做好的設定檔[[email protected] data]# unzip mysqlmutil.zip #解壓上傳的設定檔Archive: mysqlmutil.zip creating: 3306/ inflating: 3306/my.cnf inflating: 3306/mysql creating: 3307/ inflating: 3307/my.cnf inflating: 3307/mysql [[email protected] data]# tree ./ #查看解壓的內容./├── 3306│ ├── my.cnf│ └── mysql├── 3307│ ├── my.cnf│ └── mysql├── mysqlmutil.zip
初始化資料庫
修改檔案屬主,防止初始化資料庫失敗
[[email protected] data]# chown -R mysql.mysql 3306 3307[[email protected] data]# ll -d 3306 3307drwxr-xr-x 2 mysql mysql 4096 4月 17 13:39 3306drwxr-xr-x 2 mysql mysql 4096 4月 17 13:39 3307
初始資料庫
MySql安裝路徑(/application/mysql/)
初始化第一個資料庫
[[email protected] data]# /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql/ --datadir=/data/3306/dataInstalling MySQL system tables...OK #出現OK表示成功Filling help tables...OK #出現OK表示成功To start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your system省略。。。。。。
初始化第二個資料庫
[[email protected] data]# /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql/ --datadir=/data/3307/data Installing MySQL system tables...OK #出現OK表示成功Filling help tables...OK #出現OK表示成功To start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your system
--user=mysql#my.cnf的[mysqld]下"user = mysql"
--basedir=/application/mysql/#表示mysql軟體的目錄
--datadir=/data/3307/data #表示資料存放的目錄
啟動測試
更改許可權為500,檔案牽扯資料庫的密碼
[[email protected] /]# chmod 500 /data/{3306,3307}/mysql[[email protected] /]# ll /data/{3306,3307}/mysql -r-x------ 1 mysql mysql 1016 4月 7 07:17 /data/3306/mysql-r-x------ 1 mysql mysql 1016 4月 7 07:18 /data/3307/mysql
啟動
啟動使用mysqld_safe指定設定檔啟動
執行個體一
[[email protected] /]# /data/3306/mysql startStarting MySQL...[[email protected] /]# netstat -lntup|grep mysql|grep -v greptcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 18504/mysqld
執行個體二
[[email protected] /]# /data/3307/mysql start Starting MySQL...[[email protected] /]# netstat -lntup|grep mysql|grep -v greptcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 19225/mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 18504/mysqld
關閉使用mysqladmin指定使用者關閉
關閉資料庫
[[email protected] /]# /data/3307/mysql stopStoping MySQL.../application/mysql/bin/mysqladmin: connect to server at ‘localhost‘ failederror: ‘Access denied for user ‘root‘@‘localhost‘ (using password: YES)‘
無法關閉,提示mysql賬戶密碼不對
#設定檔my.cnf#############################
mysql_user="root" #使用者是root
mysql_pwd="123456" #密碼123456
#設定檔my.cnf#############################
配置mysqladmin賬戶密碼
[[email protected] /]# mysqladmin -uroot password ‘123456‘ -S /data/3307/mysql.sock #多執行個體需要指定sock
停止執行個體二
[[email protected] /]# /data/3307/mysql stop Stoping MySQL...[[email protected] /]# netstat -lntup|grep mysql|grep -v grep tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 18504/mysqld
重啟資料庫
[[email protected] /]# /data/3307/mysql start[[email protected] /]# /data/3307/mysql stop
mysql多執行個體(my.cnf,mysql)的區別
#my.cnf
區別一
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/7F/80/wKioL1cg3VmSIg1OAAHMz18tovo669.jpg" style="float:none;" title="my區別一.jpg" alt="wKioL1cg3VmSIg1OAAHMz18tovo669.jpg" />
連接埠和資料目錄,socket存放路徑都不相同
區別二
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7F/82/wKiom1cg3JCA3vRQAAGC3ejX3Rc847.jpg" style="float:none;" title="my區別二.jpg" alt="wKiom1cg3JCA3vRQAAGC3ejX3Rc847.jpg" />
大致並沒有什麼什麼變換,只是3306變為3307
區別三
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/7F/80/wKioL1cg3qPiZAtVAAKhM56gr7k292.jpg" title="my區別三.jpg" alt="wKioL1cg3qPiZAtVAAKhM56gr7k292.jpg" />這裡和上面今本沒有什麼改變,唯一需要注意的就是“server-id”不能相同
#mysql
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7F/80/wKioL1cg3veiXhQtAAFtEdEMdv8038.jpg" title="mysql區別.jpg" alt="wKioL1cg3veiXhQtAAFtEdEMdv8038.jpg" />
至此如果說再添加一個多執行個體的話,就將3306改為3308,server-id=4就可以添加第三個多執行個體
本文出自 “營運地帶” 部落格,請務必保留此出處http://iywdd.blog.51cto.com/11177578/1768416
MySql多執行個體介紹與實現