日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

如何使用Docker安装Mycat中间件 | 实现主从的读写分离,搭建属于你的Mysql 集群 | 来看看这篇吧

發(fā)布時(shí)間:2025/3/19 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用Docker安装Mycat中间件 | 实现主从的读写分离,搭建属于你的Mysql 集群 | 来看看这篇吧 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇寫(xiě)了如何使用Docker搭建Mysql的主從復(fù)制,這篇文章是在已經(jīng)搭建好Mysql的主從復(fù)制的基礎(chǔ)上實(shí)現(xiàn)讀寫(xiě)分離的。

直接CV也能搭建起來(lái),莫慌。

我們一起加油!!!

只要有docker的環(huán)境就歐克了。

一、創(chuàng)建Mycat文件夾

mkdir /usr/local/mycat/conf -p

二、創(chuàng)建Docker文件夾

mkdir /usr/local/docker/mycat/ -p

然后cd到/usr/local/docker/mycat 目錄下

cd /usr/local/docker/mycat


三、下載Mycat并解壓

在這個(gè)目錄下(/usr/local/docker/mycat)下載 Mycat

wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

將Mycat-server-1.6.7.1-release-20190627191042-linux重命名為mycat

mv Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz mycat.tar.gz

將mycat.tar.gz進(jìn)行解壓

tar -zxvf mycat.tar.gz

此時(shí)目錄結(jié)構(gòu):

為了不破壞原來(lái)的文件,我們將mycat的配置文件復(fù)制到/usr/local/mycat下。

cp -r mycat/conf/ /usr/local/mycat # 當(dāng)前文件夾下mycat/conf/ 復(fù)制到 /usr/local/mycat 目錄下

可以看到已經(jīng)復(fù)制成功了。

四、編寫(xiě)Dockerfile文件

依舊是在/usr/local/docker/mycat目錄下進(jìn)行操作:

vim dockerfile

dockerfile文件內(nèi)容:

#基于openjdk:8 創(chuàng)建鏡像, #如果是基于centos或其他的,必須保證已安裝了JDK,否則就需要在Dockerfile文件中也ADD進(jìn)來(lái) FROM openjdk:8#將宿主機(jī)目錄下的文件拷貝進(jìn)鏡像且ADD命令會(huì)自動(dòng)處理URL和解壓tar壓縮包 #將mycat解壓到/usr/local目錄中,得到 /usr/local/mycat ADD mycat.tar.gz /usr/local#容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作 #將mycat的配置文件的地址暴露出映射地址,啟動(dòng)時(shí)直接映射宿主機(jī)的文件夾 VOLUME /usr/local/mycat WORKDIR /usr/local/mycat#用來(lái)在構(gòu)建鏡像過(guò)程中設(shè)置環(huán)境變量 ENV MYCAT_HOME=/usr/local/mycat#暴露出MyCat的所需端口 EXPOSE 8066 9066#以前臺(tái)進(jìn)程的方式啟動(dòng)MyCat服務(wù) CMD ["/usr/local/mycat/bin/mycat", "console","&"]

五、打包鏡像

docker build -t mycat:1.6 . #注意最后的小數(shù)點(diǎn) . 點(diǎn)代表dockerfile文件在執(zhí)行打包命令的目錄下

六、編寫(xiě)Mycat配置文件

跳轉(zhuǎn)到/usr/local/mycat/conf/ 目錄下(就是我們之前將配置文件復(fù)制去的那個(gè)目錄)

cd /usr/local/mycat/conf/ ls #展示文件

重點(diǎn)文件就是標(biāo)紅的三個(gè)

  • schema.xml、server.xml :用于讀寫(xiě)分離,在我們這個(gè)小Demo中,只對(duì)schema.xml做了編輯。
  • rule.xml:用于分表分庫(kù)配置文件。
  • 詳情請(qǐng)查詢(xún)相關(guān)官方文檔。

編輯schema.xml文件:

vim schema.xml

默認(rèn)文件內(nèi)容:

刪除不必要的,改成下面這樣的即可。

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema><dataNode name="dn1" dataHost="localhost1" database="testdb" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="47.113.227.254:3310" user="root" password="123456"> <readHost host="hostS2" url="47.113.227.254:3311" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema>

關(guān)于schema.xml做幾點(diǎn)簡(jiǎn)單說(shuō)明:

  • dataHost下的balance屬性,也是通過(guò)此屬性配置讀寫(xiě)分離的類(lèi)型:
    • balance=“0”, 不開(kāi)啟讀寫(xiě)分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上。
    • balance=“1”,全部的 readHost 與 stand by writeHost 參與 select 語(yǔ)句的負(fù)載均衡,
    • balance=“2”,所有讀操作都隨機(jī)的在 writeHost、readhost 上分發(fā)。
    • balance=“3”,所有讀請(qǐng)求隨機(jī)的分發(fā)到 readhost 執(zhí)行,writerHost 不負(fù)擔(dān)讀壓力
  • writeType=“0”: 所有寫(xiě)操作發(fā)送到配置的第一個(gè)writeHost,第一個(gè)掛了切到還生存的第二個(gè)
  • switchType=“1”:
    • 1 默認(rèn)值,自動(dòng)切換。
    • -1 表示不自動(dòng)切換
    • 基于 MySQL 主從同步的狀態(tài)決定是否切換。

  • 補(bǔ)充-命令模式下的快速刪除:

    按下insert鍵后–>再按下Esc進(jìn)入命令模式。

    • 按dd即刪除光標(biāo)當(dāng)前所在行。
    • 按ndd(n表示你輸入的數(shù)字)表示刪除包括光標(biāo)所在行開(kāi)始后的n行。

    七、啟動(dòng)鏡像

    docker run --name mycat -p 8066:8066 -p 9066:9066 -v /usr/local/mycat/conf/:/usr/local/mycat/conf/ -v /usr/local/mycat/logs/:/usr/local/mycat/logs/ -d mycat:1.6 docker ps -a #查看容器docker logs mycat #查看運(yùn)行日志

    八、連接測(cè)試

    8.1、Navicat連接

    可使用Navicat或者CMD命令行。

    關(guān)于這里的賬號(hào)和密碼

    是在之前提到過(guò)的server.xml配置文件中。

    我的連接上是這樣的,因?yàn)槲乙呀?jīng)搭建起了主從復(fù)制,里面也有表,所以是這樣的。

    8.2、CMD連接

    mysql -uroot -p123456 -h IP地址 -P 8066

    8.3、讀寫(xiě)分離測(cè)試

    我們?cè)谥鳈C(jī)中insert一句insert into mytable values(99,@@hostname),這樣就可以看出問(wèn)題了。

    從機(jī)在復(fù)制這條語(yǔ)句去執(zhí)行的時(shí)候,和出現(xiàn)和主機(jī)不一樣的數(shù)據(jù)(有混合配置可以處理,我這里沒(méi)有處理,主要產(chǎn)生于函數(shù)),這樣我們?cè)偈褂胢ycat去讀取數(shù)據(jù),就可以看到是否實(shí)現(xiàn)讀寫(xiě)分離了。

    主機(jī)

    從機(jī)

    從機(jī)取到的數(shù)據(jù)是不一樣的。

    mycat讀取

    可以看到讀取的是從機(jī)上的數(shù)據(jù),可以說(shuō)明我們確實(shí)已經(jīng)實(shí)現(xiàn)了讀寫(xiě)分離啦。

    九、自言自語(yǔ)

    我其實(shí)真的非常好奇,一個(gè)真正高可用的系統(tǒng)要用多少個(gè)服務(wù)器😂。

    寫(xiě)出來(lái)蠻久了,但是這方面看的人少,就一直留著自己在玩。

    總結(jié)

    以上是生活随笔為你收集整理的如何使用Docker安装Mycat中间件 | 实现主从的读写分离,搭建属于你的Mysql 集群 | 来看看这篇吧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。