CleverCode最近在研究MySQL的多實例,發現有兩種方式:
第一種是使用多個配置文件啓動不一樣的進程來實現多實例。這種方式的優點邏輯簡單,配置簡單,缺點是管理起來不太方便。
第二種是經過官方自帶的mysqld_multi。使用單獨的配置文件來實現多實例,這種方式定製每一個實例的配置不太方面,優勢是管理起來很方便,集中管理。
推薦使用多個配置文件方式。這種實際應用中好,耦合性不強,配置方便,特別是主從複製的時候。
這裏分兩次介紹,先介紹多個配置文件方式。mysql
1 環境介紹:sql
1)簡介
mysql 版本:mysql-5.5.27
cmake:cmake-2.8.8
操做系統:CentOS6.5
mysql實例數:3個
實例佔用端口分別爲:330六、330七、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 修改配置文件
# cp /usr/local/mysql/support-files/my-huge.cnf /data0/dbdata/mysql/3306/my.cnf
# cp /usr/local/mysql/support-files/my-huge.cnf /data0/dbdata/mysql/3307/my.cnf
# cp /usr/local/mysql/support-files/my-huge.cnf /data0/dbdata/mysql/3308/my.cnf
# vi /data0/dbdata/mysql/3308/my.cnf #編輯配置文件(3306,3307同理)
#在 [client]部分修改一下數據
port = 3308
socket = /tmp/mysql3308.sock
#在 [mysqld] 部分修改數據
port = 3308
socket = /tmp/mysql3308.sock
datadir = /data0/dbdata/mysql/3308 #添加MySQL數據庫路徑
:wq! #保存退出
7 建立自動啓動文件
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld3306
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld3307
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld3308
# chmod 755 /etc/rc.d/init.d/mysqld3306
# chmod 755 /etc/rc.d/init.d/mysqld3307
# chmod 755 /etc/rc.d/init.d/mysqld3308
# vi /etc/rc.d/init.d/mysqld3308 #編輯 (3306,3307同理)
basedir=/usr/local/mysql #MySQL程序安裝路徑
datadir=/data0/dbdata/mysql/3308 #MySQl數據庫存放目錄
修改
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
變成
$bindir/mysqld_safe --defaults-file="$datadir/my.cnf" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
8 啓動330六、330七、3308的mysql
# service mysqld3306 restart
# service mysqld3307 restart
# service mysqld3308 restart
9 查看端口是否監聽,若是出現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
10 初始化密碼而且受權遠程登陸(3306,3307同理)
# /usr/local/mysql/bin/mysqladmin -u root password "pwd3308" -S /tmp/mysql3308.sock
# /usr/local/mysql/bin/mysql -uroot -ppwd3308 -S /tmp/mysql3308.sock
mysql> grant all privileges on *.* to 'root'@'%' identified by 'pwd3308' with grant option;
mysql> flush privileges;數據庫
本文出自http://blog.csdn.net/clevercode/article/details/47610619socket