MySql多執行個體介紹與實現

來源:互聯網
上載者:User

標籤: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多執行個體介紹與實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.