MySQL多實例介紹及MySQL多實例的特點
1、什么是MySQL多實例?
MySQL多實例就是在一台機器上開啟多個不同的服務端口(如:3306,3307,3308),運行多個MySQL服務進程,通過不同的socket監聽不同的服務端口來提供各自的服務。
2、MySQL多實例的特點有以下幾點:
1)、有效利用服務器資源,當單個服務器資源有剩余時,可以充分利用剩余的資源提供更多的服務。
2)、節約服務器資源
3)、資源互相搶占問題,當某個服務實例服務並發很高時或者開啟慢查詢時,會消耗更多的內存、CPU、磁盤IO資源,導致服務器上的其他實例提供服務的質量下降。
二,MySQL多實例的安裝配置
系統環境:centos 6.9 64位
內核版本: 2.6.32-696.el6.x86_64
mysql版本:5.7.16
程序目錄: /usr/local/mysql
# mkdir /usr/local/mysql
實例系統文件目錄: /usr/local/mysql/dbsxxxx
# mkdir -p /usr/local/mysql/{dbs3007,dbs3008}
實例數據文件目錄: /data/mysql/dataxxxx
# mkdir -p /data/mysql/{data3007,data3008}
1、首先創建mysql用戶和組:
# groupadd mysql
# useradd -s /sbin/nologin -g mysql -M mysql
2、下載MySQL源碼包並解壓安裝
# cd /usr/local/src/ 約定以后安裝軟件就下載到這里使用
# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar
# yum search libaio mysql對libiao庫有依賴,查詢如果沒有安裝則進行安裝。
# yum install -y libaio 對libiao庫進行安裝。
# tar -xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar 這里解tar包后發現有兩個包:mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 和 mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz,我使用mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz這個包。
# tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 解包
# cp -R mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/local/mysql 將文件復制到程序目錄下
3、創建MySQL多實例配置文件
# cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/dbs3007/my3007.cnf
# cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/dbs3008/my3008.cnf
# vim /usr/local/mysql/dbs3007/my3007.cnf 其my3008.cnf也相同方法加入如下行
[mysqld]
socket = /tmp/mysql3007.sock
port = 3007
pid-file = /data/mysql/data3007/mysql3007.pid
datadir = /data/mysql/data3007
basedir = /usr/local/mysql/dbs3007
user = mysql
server-id=3007
[client]
port = 3007
socket = /tmp/mysql3007.sock
[mysql]
no-auto-rehash
socket = /tmp/mysql3007.sock
prompt=\\u@\\h[\\d]> \\
4、改變目錄和文件屬組及屬主
# chown -R mysql:mysql /usr/local/mysql/
# chown -R mysql:mysql /data/mysql/
5、初始化MySQL數據目錄並添加mysql命令道全局路徑
# echo 'export PATH=$PATH:/usr/local/mysql/bin/' >> /etc/profile
# source /etc/profile
# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.17-linux-glibc2.5-x86_64/ --datadir=/data/mysql/data3006/
HJ7pwBX(6??P
# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/dbs3007 --datadir=/data/mysql/data3007/ 初始化實例3007
記錄初始密碼 t4-h1ULfDrrd
# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/dbs3008 --datadir=/data/mysql/data3008/ 初始化實例3008
記錄初始密碼 Fu*=QeSK#8c!
6、啟動、連接、關閉多實例
# mysqld_safe --defaults-file=/usr/local/mysql/dbs3007/my3007.cnf & 啟動對應實例
# mysql -uroot -pt4-h1ULfDrrd -S /tmp/mysql3007.sock 套接字方式連接
mysql> set password = password('3007passwd'); 登錄第一步必須先修改密碼,否則會影響使用
# mysql -uroot -p3007passwd -P3007 --protocol=tcp tcp方式連接
# mysql -h127.0.0.1 -uroot -p3007passwd -P3007
# mysqladmin -uroot -P3007 -p3007passwd -S /tmp/mysql3007.sock shutdown 關閉實例
# mysqladmin -h127.0.0.1 -P3007 -p3007passwd shutdown
(以上操作使用了明顯密碼,實例操作中避免此類事情)
3008實例用相同方法操作將密碼改為 3008passwd
