標籤:mysql多執行個體
CleverCode最近在研究mysql的多執行個體,發現有兩種方式:
第一種是使用多個設定檔啟動不同的進程來實現多執行個體。這種方式的優勢邏輯簡單,配置簡單,缺點是管理起來不太方便。
第二種是通過官方內建的mysqld_multi。使用單獨的設定檔來實現多執行個體,這種方式定製每個執行個體的配置不太方面,優點是管理起來很方便,集中管理。
推薦使用多個設定檔方式。這種實際應用中好,耦合性不強,配置方便,特別是主從複製的時候。
上一篇《mysql多執行個體(多個設定檔方式)》:http://blog.csdn.net/clevercode/article/details/47610619。介紹了多個設定檔方式。本篇將介紹mysqld_multi方式。
1 環境介紹:
1)簡介
mysql 版本:mysql-5.5.27
cmake:cmake-2.8.8
作業系統:CentOS6.5
mysql執行個體數:3個
執行個體佔用連接埠分別為:3306、3307、3308
2)本次安裝所有的軟體資源套件
http://download.csdn.net/detail/clevercode/8662323
2 配置防火牆
1) 在防火牆設定檔中添加3306,3307,3308(允許3306,3307,3308連接埠通過防火牆)
# vi /etc/sysconfig/iptables #編輯防火牆設定檔
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3307 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3308 -j ACCEPT
2)重啟防火牆
# /etc/init.d/iptables restart #最後重啟防火牆使配置生效
3 安裝cmake
解壓
# cd /usr/local/src/mysql
# tar zxvf cmake-2.8.8.tar.gz
# cd cmake-2.8.8
配置
# ./configure
編譯
# make
安裝
# make install
查看版本
# cmake -version
4 安裝Mysql
1) 建立使用者
# groupadd mysql #添加mysql組
# useradd -g mysql mysql -s /bin/false #建立使用者mysql並加入到mysql組,不允許mysql使用者直接登入系統
2) 解壓
# cd /usr/local/src/mysql
# tar zxvf mysql-5.5.27.tar.gz
# cd mysql-5.5.27
4) 配置
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
PS: cmake的時候,參數可以不用那麼多,只要一個-DCMAKE_INSTALL_PREFIX=/usr/local/mysql就行了,我們可以在 my.cnf裡面配置。[mysqld]中的內容,看看你copy後的my.cnf有沒有這些設定,有就不用了在設定了。
5)編譯
# make
6)安裝
# make install
5 初始化資料庫
# mkdir -p /data0/dbdata/mysql/3306
# mkdir -p /data0/dbdata/mysql/3307
# mkdir -p /data0/dbdata/mysql/3308
# chown -R mysql:mysql /data0/dbdata/mysql/3306
# chown -R mysql:mysql /data0/dbdata/mysql/3307
# chown -R mysql:mysql /data0/dbdata/mysql/3308
# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data0/dbdata/mysql/3306 --user=mysql
# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data0/dbdata/mysql/3307 --user=mysql
# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data0/dbdata/mysql/3308 --user=mysql
6 修改設定檔(只用/etc/my.cnf檔案)
# cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
# vi /etc/my.cnf
[mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin #用於登陸和關閉此服務user = rootpassword = CleverCode123[mysqld3306] #資料目錄datadir = /data0/dbdata/mysql/3306#串連 port = 3306 socket = /tmp/mysql3306.sock #binlog log-bin=/data0/dbdata/mysql/3306/mysql-bin pid-file = /data0/dbdata/mysql/3306/mysql_3306.pid[mysqld3307] datadir = /data0/dbdata/mysql/3307port = 3307socket = /tmp/mysql3307.sock log-bin=/data0/dbdata/mysql/3307/mysql-bin pid-file = /data0/dbdata/mysql/3307/mysql_3307.pid[mysqld3308] datadir = /data0/dbdata/mysql/3308port = 3308socket = /tmp/mysql3308.socklog-bin=/data0/dbdata/mysql/3308/mysql-binpid-file = /data0/dbdata/mysql/3308/mysql_3308.pid
7 啟動3306、3307、3308的mysql
# /usr/local/mysql/bin/mysqld_multi start 3306
# /usr/local/mysql/bin/mysqld_multi start 3307
# /usr/local/mysql/bin/mysqld_multi start 3308
8 查看連接埠是否監聽,如果出現3306,3307,3308則啟動正常
# netstat -anp | grep 3308
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 2348/mysqld
unix 2 [ ACC ] STREAM LISTENING 10780 2348/mysqld /tmp/mysql3308.sock
9 初始化密碼並且授權遠程登入,mysqladmin使用者名稱和密碼需要和/ect/my.cnf中保持一致,否則stop不了服務。
# /usr/local/mysql/bin/mysqladmin -u root password "CleverCode123" -S /tmp/mysql3306.sock
# /usr/local/mysql/bin/mysql -uroot -pCleverCode123 -S /tmp/mysql3306.sock
mysql> grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘pwd3306‘ with grant option;
mysql> flush privileges;
# /usr/local/mysql/bin/mysqladmin -u root password "CleverCode123" -S /tmp/mysql3307.sock
# /usr/local/mysql/bin/mysql -uroot -pCleverCode123 -S /tmp/mysql3307.sock
mysql> grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘pwd3307‘ with grant option;
mysql> flush privileges;
# /usr/local/mysql/bin/mysqladmin -u root password "CleverCode123" -S /tmp/mysql3308.sock
# /usr/local/mysql/bin/mysql -uroot -pCleverCode123 -S /tmp/mysql3308.sock
mysql> grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘pwd3308‘ with grant option;
mysql> flush privileges;
10 停止(必須先初始化密碼)。可以使用netstat -anp | grep 3308查看監聽進程是否還存在
# /usr/local/mysql/bin/mysqld_multi stop 3306
# /usr/local/mysql/bin/mysqld_multi stop 3307
# /usr/local/mysql/bin/mysqld_multi stop 3308
11 報告。顯示進程的狀態
# /usr/local/mysql/bin/mysqld_multi report 3306
# /usr/local/mysql/bin/mysqld_multi report 3307
# /usr/local/mysql/bin/mysqld_multi report 3308
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
mysql多執行個體(mysqld_multi方式)