最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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è)簡單的軟連接
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í)例對應(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
# 以及對整個(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)建,注意修改端口號即可;

至此,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)建,注意修改端口號即可;

至此,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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 理解MySQL變量和條件

    理解MySQL變量和條件

    這篇文章主要幫助大家深入理解MySQL變量和條件,感興趣的小伙伴們可以參考一下
    2016-03-03
  • MySQL怎么實(shí)現(xiàn)原子性的流程詳解(以UPDATE為例)

    MySQL怎么實(shí)現(xiàn)原子性的流程詳解(以UPDATE為例)

    原子性是事務(wù)的其中一個(gè)特性,指的是要么全部執(zhí)行完,要么全都不執(zhí)行,這篇文章主要介紹了MySQL怎么實(shí)現(xiàn)原子性(以UPDATE為例)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-08-08
  • MySQL Router的安裝部署

    MySQL Router的安裝部署

    這篇文章主要介紹了MySQL Router的安裝部署,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-04-04
  • 使用MySQL JSON查詢篩選嵌套字段的值方式

    使用MySQL JSON查詢篩選嵌套字段的值方式

    本文介紹了如何在MySQL中查詢JSON字段中的特定數(shù)據(jù),通過使用JSON_EXTRACT和JSON_UNQUOTE函數(shù),可以方便地從嵌套的JSON結(jié)構(gòu)中提取所需的信息,此外,還討論了性能優(yōu)化和數(shù)據(jù)規(guī)范化建議,以提高查詢效率
    2026-01-01
  • 關(guān)于MySql 10038錯(cuò)誤的完美解決方法(三種)

    關(guān)于MySql 10038錯(cuò)誤的完美解決方法(三種)

    本文給大家?guī)砣N有關(guān)mysql報(bào)10038錯(cuò)誤的解決方法,每種方法都非常不錯(cuò),需要的朋友參考下
    2016-09-09
  • 詳解使用navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫出現(xiàn)10061未知故障

    詳解使用navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫出現(xiàn)10061未知故障

    這篇文章主要介紹了navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫出現(xiàn)10061未知故障,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL大表數(shù)據(jù)的分區(qū)與分庫分表的實(shí)現(xiàn)

    MySQL大表數(shù)據(jù)的分區(qū)與分庫分表的實(shí)現(xiàn)

    數(shù)據(jù)庫的分區(qū)和分庫分表是兩種常用的技術(shù)方案,本文主要介紹了MySQL大表數(shù)據(jù)的分區(qū)與分庫分表的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • MySQL Index Condition Pushdown(ICP)性能優(yōu)化方法實(shí)例

    MySQL Index Condition Pushdown(ICP)性能優(yōu)化方法實(shí)例

    這篇文章主要介紹了MySQL Index Condition Pushdown(ICP)性能優(yōu)化方法實(shí)例,本文講解了概念介紹、原理、實(shí)踐案例、案例分析、ICP的使用限制等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MySql數(shù)據(jù)庫基礎(chǔ)知識(shí)點(diǎn)總結(jié)

    MySql數(shù)據(jù)庫基礎(chǔ)知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了MySql數(shù)據(jù)庫基礎(chǔ)知識(shí)點(diǎn),總結(jié)整理了mysql數(shù)據(jù)庫基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下
    2020-06-06
  • MySQL的Query?Cache和PostgreSQL的pg_prewarm詳解

    MySQL的Query?Cache和PostgreSQL的pg_prewarm詳解

    MySQL?QueryCache(已廢棄)緩存SQL結(jié)果,依賴全匹配且數(shù)據(jù)不變,高并發(fā)寫時(shí)性能差;PostgreSQL?pg_prewarm預(yù)加載數(shù)據(jù)頁至共享緩沖區(qū),提升冷啟動(dòng)效率,需手動(dòng)維護(hù),建議用應(yīng)用層緩存或InnoDB?BufferPool替代
    2025-07-07

最新評論

淄博市| 萍乡市| 远安县| 武宁县| 尼玛县| 冕宁县| 上林县| 郑州市| 万年县| 阿图什市| 太仆寺旗| 沛县| 股票| 牟定县| 临澧县| 留坝县| 阿拉尔市| 呈贡县| 沂源县| 安国市| 甘谷县| 西昌市| 吉林省| 宁南县| 汾阳市| 仲巴县| 桃园市| 兴宁市| 河北区| 东兴市| 东乡| 丹棱县| 育儿| 梁山县| 沧州市| 怀柔区| 武隆县| 台山市| 安多县| 河间市| 呼伦贝尔市|