一臺MySQL資料庫啟動多個例項

李振良發表於2016-05-06

一臺資料庫伺服器為什麼執行多個例項?

有一臺MySQL資料庫伺服器硬體利用率往往在30%左右,那剩餘的70%豈不是浪費了,這時就可以考慮執行多個MySQL服務,你可以做主從架構,讀寫分離,資料庫隔離,容納更多的併發連結,充分利用硬體資源,讓伺服器效能發揮最大化。

1、編譯安裝MySQL5.5

1
2
3
4
5
6
7
8
9
10
11
12
# yum install -y cmake gcc gcc-c++ make cmake ncurses ncurses-devel
# groupadd mysql
# useradd -g mysql -s /sbin/nologin mysql
# tar zxvf mysql-5.5.31.tar.gz
# cd mysql-5.5.31
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 -DSYSCONFDIR=/usr/local/mysql5.5/etc -DMYSQL_DATADIR=/usr/local/mysql5.5/data
# make && make install
#  mkdir /usr/local/mysql5.5/etc
# cp support-files/my-medium.cnf /usr/local/mysql5.5/etc/my.cnf
# chown -R mysql.mysql /usr/local/mysql5.5/
# echo ‘PATH=$PATH:/usr/local/mysql5.5/bin` >> /etc/profile
# source /etc/profile

3、初始化資料庫例項

1
2
3
4
# mkdir /usr/local/mysql5.5/data3306    #建立資料庫資料目錄
# mkdir /usr/local/mysql5.5/data3307
# /usr/local/mysql5.5/scripts/mysql_install_db --basedir=/usr/local/mysql5.5/ --datadir=/usr/local/mysql5.5/data3306/ --user=mysql
# /usr/local/mysql5.5/scripts/mysql_install_db --basedir=/usr/local/mysql5.5/ --datadir=/usr/local/mysql5.5/data3307/ --user=mysql

2、配置多例項資訊並使用mysqld_multi工具集中管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# cd /usr/local/mysql5.5/etc/
# vi my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql5.5/bin/mysqld_safe
mysqladmin = /usr/local/mysql5.5/bin/mysqladmin
user = root       #登陸資料庫使用者
password = 123      #登陸資料庫密碼,用於關閉資料庫,兩臺資料庫密碼設定一樣
[mysqld1]
user = mysql
port = 3306
socket = /tmp/mysql3306.sock
pid-file /usr/local/mysql5.5/data3306/mysql.pid
basedir = /usr/local/mysql5.5
datadir = /usr/local/mysql5.5/data3306
log_error = /var/log/mysql/3306_error.log
[mysqld2]
user = mysql
port = 3307
socket = /tmp/mysql3307.sock
pid-file /usr/local/mysql5.5/data3307/mysql.pid
basedir = /usr/local/mysql5.5
datadir = /usr/local/mysql5.5/data3307
log_error = /var/log/mysql/3307_error.log

3、啟動例項1,2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 單個例項啟動或關閉
# mysqld_multi --defaults-file=/usr/local/mysql5.5/etc/my.cnf start/stop 1
# mysqld_multi --defaults-file=/usr/local/mysql5.5/etc/my.cnf start/stop 2
# 雙例項同時啟動或關閉
# mysqld_multi --defaults-file=/usr/local/mysql5.5/etc/my.cnf start/stop 1,2
# 檢視MySQL是否啟動
# mysqld_multi --defaults-file=./my.cnf report 1,2
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running
# netstat -antp |grep mysql
tcp  0    0 0.0.0.0:3306  0.0.0.0:*   LISTEN      20896/mysqld    
tcp  0    0 0.0.0.0:3307  0.0.0.0:*   LISTEN      21499/mysqld
# 加入開機啟動
echo "/usr/local/mysql5.5/mysqld_multi --defaults-file=/usr/local/mysql5.5/etc/my.cnf start 1,2" >> /etc/rc.local

 注:如果不想用mysqld_multi工具,可以獨立例項配置檔案,自己啟動或關閉,如下:

1
2
# /usr/local/mysql5.5/bin/mysqld_safe --defaults-extra-file=/usr/local/mysql5.5/etc/my3306.cnf --datadir=/usr/local/mysql5.5/data3306/ --user=mysql &
# mysqladmin -uroot -p123 -S/tmp/mysql3306.sock shutdown

4、本地登入

1
2
3
4
5
# 首次登入先設定密碼
# mysql -S /tmp/mysql3306.sock -P 3307 -uroot -p    #直接回車進入
mysql> set password=password(`123`);
# mysql -S /tmp/mysql3307.sock -P 3307 -uroot -p
mysql> set password=password(`123`);

5、遠端登入(先開啟遠端訪問許可權)

1
2
3
mysql> grant all on *.* to`root`@`%` identified by `123`;
# mysql -h 192.168.1.10 -P 3306 -uroot -p123
# mysql -h 192.168.1.10 -P 3307 -uroot -p123


相關文章