MySQL多實(shí)例管理如何在一臺(tái)主機(jī)上運(yùn)行多個(gè)mysql
一、什么是MySQL多實(shí)例
多實(shí)例,就是在一臺(tái)Linux主機(jī)上運(yùn)行多個(gè)MySQL,節(jié)約計(jì)算資源,區(qū)別在于不同的端口。
例如 # 數(shù)據(jù)庫實(shí)例1 /my_mysql/3306/ #目錄 /my_mysql/3306/data #數(shù)據(jù)文件夾 /my_mysql/3306/my.cnf #配置文件 /my_mysql/3306/mysqld #啟動(dòng)腳本 # 數(shù)據(jù)庫實(shí)例2 /my_mysql/3307/data /my_mysql/3307/my.cnf /my_mysql/3307/mysqld # 不同的應(yīng)用程序,讀取不同的mysql實(shí)例
大型企業(yè)讀寫分離架構(gòu):
基于—個(gè)mysql應(yīng)用,初始化三次,生成3個(gè)獨(dú)立的mysql數(shù)據(jù)目錄,即為三個(gè)mysql獨(dú)立的實(shí)例
二、二進(jìn)制方式安裝MySQL
1.獲取二進(jìn)制代碼包
wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
2.安裝基礎(chǔ)依賴
yum install ncurses-devel libaio-devel gcc make cmake -y
3.清空原安裝內(nèi)容(沒有可忽略)
前面編譯安裝時(shí)已經(jīng)啟動(dòng)MySQL,所以現(xiàn)在要先將它停掉(沒有編譯安裝的可忽略);
清空之前編譯安裝mysql,配置的環(huán)境的清理,清空PATH有關(guān)的mysql。
#進(jìn)入文件 vim /etc/profile #將以下這行注釋掉 export PATH=/application/mysql/bin:$PATH #停止當(dāng)前l(fā)inux的mysql,(如果存在mysql端口的話) [root@mysql-01 tools]# /etc/init.d/mysqld stop Shutting down MySQL.. SUCCESS!
4.創(chuàng)建mysql用戶
# 這里無須重新創(chuàng)建 [root@mysql-01 tools]# id mysql uid=1000(mysql) gid=1000(mysql) 組=1000(mysql) [root@mysql-01 tools]# # 沒有創(chuàng)建mysql用戶的需要?jiǎng)?chuàng)建
準(zhǔn)備好mysql多實(shí)例的數(shù)據(jù)目錄
mkdir -p /my_mysql/{3306,3307} [root@mysql-01 tools]# tree /my_mysql/ /my_mysql/ ├── 3306 └── 3307 2 directories, 0 files
5.解壓縮二進(jìn)制的mysql軟件包
# -C 指定目錄解壓縮 [root@mysql-01 tools]# tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /application #解壓完成 [root@mysql-01 tools]# cd /application/ [root@mysql-01 application]# ls -lth 總用量 0 # 剛才解壓縮的二進(jìn)制mysql安裝目錄 drwxr-xr-x 13 root root 191 7月 3 11:15 mysql-5.6.40-linux-glibc2.12-x86_64 #編譯安裝生成的mysql安裝目錄 drwxr-xr-x 14 mysql mysql 216 7月 2 16:36 mysql-5.6.40 # —個(gè)簡(jiǎn)單的軟連接 lrwxrwxrwx 1 root root 26 7月 2 16:13 mysql -> /application/mysql-5.6.40/
6.準(zhǔn)備二進(jìn)制mysql運(yùn)行所需的環(huán)境
準(zhǔn)備mysql多實(shí)例的,各個(gè)配置文件
3306
3307
準(zhǔn)備各個(gè)啟停管理腳本
數(shù)據(jù)初始化,生成mysql的初始化data數(shù)據(jù)
三、準(zhǔn)備多實(shí)例配置文件
#看好路徑 [root@mysql-01 mysql-5.6.40-linux-glibc2.12-x86_64]# pwd /application/mysql-5.6.40-linux-glibc2.12-x86_64 [root@mysql-01 mysql-5.6.40-linux-glibc2.12-x86_64]# cd /my_mysql/ [root@mysql-01 my_mysql]# cd 3306 [root@mysql-01 3306]# pwd /my_mysql/3306
3306實(shí)例的配置文件
#創(chuàng)建文件 vim my.cnf
[client] [mysqld] port=3306 socket=/my_mysql/3306/mysql.sock basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/ datadir=/my_mysql/3306/data log-bin=/my_mysql/3306/mysql-bin server-id=1 [mysqld_safe] log-error=/my_mysql/3306/mysql_3306_error.log pid-file=/my_mysql/3306/mysqld_3306.pid
同樣修改3307的配置文件
#注意修改如下參數(shù) #3306換成3307;server-id不能和3306實(shí)例重復(fù) [root@mysql-01 3306]# cd ../3307 [root@mysql-01 3307]# vim my.cnf
[client] [mysqld] port=3307 socket=/my_mysql/3307/mysql.sock basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/ datadir=/my_mysql/3307/data log-bin=/my_mysql/3307/mysql-bin server-id=2 [mysqld_safe] log-error=/my_mysql/3307/mysql_3307_error.log pid-file=/my_mysql/3307/mysqld_3307.pid
四、MySQL(3306端口)啟停腳本
注意?。?!3307和3306 得區(qū)別開,需自行手動(dòng)修改
[root@mysql-01 3307]# cd ../3306 [root@mysql-01 3306]# vim mysql_3306
將以下內(nèi)容粘貼進(jìn)去
#!/bin/bash # MySQL服務(wù)管理腳本 port=3306 mysql_user="mysql" Cmdpath="/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/" mysql_sock="/my_mysql/${port}/mysql.sock" mysqld_pid_file_path="/my_mysql/${port}/mysqld_${port}.pid" start() { if [ ! -e "$mysql_sock" ]; then printf "Starting MySQL...\n" /bin/sh ${Cmdpath}/mysqld_safe --defaults-file=/my_mysql/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null & sleep 3 else printf "MySQL is running...\n" exit 1 fi } stop() { if [ ! -e "$mysql_sock" ]; then printf "MySQL is stopped...\n" exit 1 else printf "Stopping MySQL...\n" mysqld_pid=$(cat "$mysqld_pid_file_path") if kill -0 $mysqld_pid 2>/dev/null; then kill $mysqld_pid sleep 2 fi fi } restart() { printf "Restarting MySQL...\n" stop sleep 2 start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart}\n" exit 1 ;; esac
#賦予權(quán)限 [root@mysql-01 3306]# chmod +x mysql_3306
五、MySQL(3307啟停腳本)
跟上面操作類似
cd ../3307 vim mysql_3307
#!/bin/bash # MySQL服務(wù)管理腳本 port=3307 mysql_user="mysql" Cmdpath="/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/" mysql_sock="/my_mysql/${port}/mysql.sock" mysqld_pid_file_path="/my_mysql/${port}/mysqld_${port}.pid" start() { if [ ! -e "$mysql_sock" ]; then printf "Starting MySQL...\n" /bin/sh ${Cmdpath}/mysqld_safe --defaults-file=/my_mysql/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null & sleep 3 else printf "MySQL is running...\n" exit 1 fi } stop() { if [ ! -e "$mysql_sock" ]; then printf "MySQL is stopped...\n" exit 1 else printf "Stopping MySQL...\n" mysqld_pid=$(cat "$mysqld_pid_file_path") if kill -0 $mysqld_pid 2>/dev/null; then kill $mysqld_pid sleep 2 fi fi } restart() { printf "Restarting MySQL...\n" stop sleep 2 start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart}\n" exit 1 ;; esac
#賦權(quán) chmod +x mysql_3307
六、用戶、組授權(quán)
降低權(quán)限,全部賦予給mysql
[root@mysql-01 3307]# chown -R mysql.mysql /my_mysql/
七、PATH配置
[root@mysql-01 ~]# vim /etc/profile [root@mysql-01 ~]# tail -1 /etc/profile export PATH=/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin:$PATH [root@mysql-01 ~]# source /etc/profile [root@mysql-01 ~]# echo $PATH /application/mysql-5.6.40-linux-glibc2.12-x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [root@mysql-01 ~]# which mysql /application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/mysql
八、創(chuàng)建多個(gè)實(shí)例對(duì)應(yīng)的數(shù)據(jù)目錄
分別創(chuàng)建 3306 3307 兩個(gè)實(shí)例的數(shù)據(jù)目錄
mkdir -p /my_mysql/3307/data mkdir -p /my_mysql/3306/data
查看一下
[root@mysql-01 ~]# tree /my_mysql /my_mysql ├── 3306 │ ├── my.cnf │ └── mysql_3306 └── 3307 ├── data ├── my.cnf └── mysql_3307 3 directories, 4 files
九、MySQL多實(shí)例初始化
先初始化3306的數(shù)據(jù)
ls /my_mysql/3306/data/ # 此時(shí)3306的data文件夾是空的,沒有數(shù)據(jù)
執(zhí)行初始化,生成mysql運(yùn)行所需的初始數(shù)據(jù)
sudo /application/mysql-5.6.40-linux-glibc2.12-x86_64/scripts/mysql_install_db \ --defaults-file=/my_mysql/3306/my.cnf \ --basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/ \ --datadir=/my_mysql/3306/data/ \ --user=mysql
出現(xiàn)2個(gè)ok后,表示正常
此時(shí)會(huì)正確生成mysql的初始數(shù)據(jù)
[root@mysql-01 ~]# ls -l /my_mysql/3306/data 總用量 110600 -rw-rw---- 1 mysql mysql 12582912 7月 3 15:36 ibdata1 -rw-rw---- 1 mysql mysql 50331648 7月 3 15:36 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 7月 3 15:36 ib_logfile1 drwx------ 2 mysql mysql 4096 7月 3 15:36 mysql drwx------ 2 mysql mysql 4096 7月 3 15:36 performance_schema drwx------ 2 mysql mysql 6 7月 3 15:36 test
同樣,生成3307數(shù)據(jù)
sudo /application/mysql-5.6.40-linux-glibc2.12-x86_64/scripts/mysql_install_db \ --defaults-file=/my_mysql/3307/my.cnf \ --basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/ \ --datadir=/my_mysql/3307/data/ \ --user=mysql
跟上面相類似,出現(xiàn)兩個(gè)OK表示初始化成功;
同樣可以通過ls命令查看,這里不多贅述。
十、分別啟動(dòng)MySQL多實(shí)例
創(chuàng)建mysql的錯(cuò)誤日志文件
touch /my_mysql/3306/mysql_3306_error.log touch /my_mysql/3307/mysql_3307_error.log # 以及對(duì)整個(gè)mysql目錄再次授權(quán) chown -R mysql.mysql /my_mysql/
確保當(dāng)前沒有其他mysql
netstat -tunlp |grep mysql
啟動(dòng)3306數(shù)據(jù)庫
[root@mysql-01 ~]# /my_mysql/3306/mysql_3306 start Starting MySQL... [root@mysql-01 ~]# # 用如下命令登錄,使用sock套接字文件登錄 mysql -S /my_mysql/3306/mysql.sock
同樣,3307數(shù)據(jù)庫也用以上相同方式創(chuàng)建,注意修改端口號(hào)即可;
至此,MySQL多實(shí)例分別啟動(dòng)完成。
另,可以自行在3306或3307其中一個(gè)里面通過create database xxx;創(chuàng)建一個(gè)數(shù)據(jù)庫,然后根據(jù)show databases;查看來驗(yàn)證是否多實(shí)例啟動(dòng)成功。
再另,啟動(dòng)mysql的排錯(cuò)流程
準(zhǔn)備配置文件是否有誤
準(zhǔn)備啟停腳本 授權(quán)
權(quán)
chown -R mysql.mysql /my_mysql/
確保當(dāng)前沒有其他mysql ```bash netstat -tunlp |grep mysql
啟動(dòng)3306數(shù)據(jù)庫
[root@mysql-01 ~]# /my_mysql/3306/mysql_3306 start Starting MySQL... [root@mysql-01 ~]# # 用如下命令登錄,使用sock套接字文件登錄 mysql -S /my_mysql/3306/mysql.sock
同樣,3307數(shù)據(jù)庫也用以上相同方式創(chuàng)建,注意修改端口號(hào)即可;
至此,MySQL多實(shí)例分別啟動(dòng)完成。
另,可以自行在3306或3307其中一個(gè)里面通過create database xxx;創(chuàng)建一個(gè)數(shù)據(jù)庫,然后根據(jù)show databases;查看來驗(yàn)證是否多實(shí)例啟動(dòng)成功。
再另,啟動(dòng)mysql的排錯(cuò)流程
準(zhǔn)備配置文件是否有誤
準(zhǔn)備啟停腳本 授權(quán)
數(shù)據(jù)目錄初始化
到此這篇關(guān)于MySQL多實(shí)例管理---在一臺(tái)主機(jī)上運(yùn)行多個(gè)mysql的文章就介紹到這了,更多相關(guān)mysql 運(yùn)行多個(gè)mysql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL5.7.03 更換高版本到MySQL 5.7.17安裝過程及發(fā)現(xiàn)問題解決方案
這篇文章主要介紹了MySQL5.7.03 更換高版本到MySQL 5.7.17安裝過程及發(fā)現(xiàn)問題解決方案,需要的朋友可以參考下2017-08-08SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解
這篇文章主要介紹了SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11sql腳本函數(shù)編寫postgresql數(shù)據(jù)庫實(shí)現(xiàn)解析
這篇文章主要介紹了sql腳本函數(shù)編寫postgresql數(shù)據(jù)庫實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程
這篇文章主要為大家詳細(xì)介紹了mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程,感興趣的小伙伴們可以參考一下2016-07-07winxp 安裝MYSQL 出現(xiàn)Error 1045 access denied 的解決方法
自己遇到了這個(gè)問題,也找了很久才解決,就整理一下,希望對(duì)大家有幫助!2010-07-07