欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL多實(shí)例管理如何在一臺(tái)主機(jī)上運(yùn)行多個(gè)mysql

 更新時(shí)間:2025年07月24日 14:39:06   作者:皮蛋solo.粥  
文章詳解了在Linux主機(jī)上通過二進(jìn)制方式安裝MySQL多實(shí)例的步驟,涵蓋端口配置、數(shù)據(jù)目錄準(zhǔn)備、初始化與啟動(dòng)流程,以及排錯(cuò)方法,適用于構(gòu)建讀寫分離架構(gòu),感興趣的朋友一起看看吧

一、什么是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)文章

最新評(píng)論