<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Mycat實(shí)現(xiàn)MySQL主從復(fù)制和讀寫(xiě)分離(雙主雙從)

          共 6301字,需瀏覽 13分鐘

           ·

          2021-05-25 21:09

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          76套java從入門(mén)到精通實(shí)戰(zhàn)課程分享

          1 機(jī)器準(zhǔn)備

          機(jī)器名ip角色
          wyl01192.168.52.128master1 ,mycat
          wyl02192.168.52.129slave1
          wyl03192.168.52.130master2
          wyl04192.168.52.131slave2

           設(shè)計(jì)思路:部署4個(gè)數(shù)據(jù)庫(kù)服務(wù),其中master1 和master2 互為主從,slave1是master1的從,slave2是master2的從,這里數(shù)據(jù)庫(kù)采用的mysql-5.7.20版本,mycat采用的是mycat-1.6版本。

           

          2 mysql雙主雙從安裝

          2.1 mysql的安裝

          這里mysql的雙主雙從可以參考前面的mysql雙主集群部署的文章。

          注意: 上述方法搭建后的雙主雙從,有一個(gè)小問(wèn)題,就是在M1上寫(xiě)一條數(shù)據(jù),在S2上并沒(méi)有同步,所以需要加一個(gè)log-slave-updates=1(在主上加即可)配置。

          2.2 驗(yàn)證

          在M1上創(chuàng)建一個(gè)t1的數(shù)據(jù)庫(kù),如果S1、M1、S2上都有t1數(shù)據(jù)庫(kù)

          在M2上創(chuàng)建一個(gè)t2的數(shù)據(jù)庫(kù),如果S2、M1、S1上都有t2數(shù)據(jù)庫(kù) ,則表示mysql的雙主雙從部署成功

          3 mycat的安裝

          mycat的安裝可以參考前面的博客的部署文檔。

          3.1 mycat的配置文件

          server.xml配置文件內(nèi)容

           <user name="root">
            <property name="password">123456</property>
            <property name="schemas">TESTDB</property>
           </user>
           
           <user name="user">
            <property name="password">user</property>
            <property name="schemas">TESTDB</property>
            <property name="readOnly">false</property>
           </user>

          schema.xml配置文件內(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="test01" />  
           
                  <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">  
                          <heartbeat>show slave status</heartbeat>  
                          <writeHost host="hostM1" url="192.168.52.128:3306" user="root" password="123456">  
                                  <readHost host="slave1" url="192.168.52.129:3306" user="root" password="123456" />  
                          </writeHost>  
                          <writeHost host="hostM2" url="192.168.52.130:3306" user="root" password="123456">  
                                  <readHost host="slave2" url="192.168.52.131:3306" user="root" password="123456" />  
                          </writeHost>  
                  </dataHost>  
           
          </mycat:schema>


          3.2 驗(yàn)證服務(wù)

          當(dāng)服務(wù)進(jìn)程在,并查看日志沒(méi)有報(bào)錯(cuò),則表示啟動(dòng)成功

          4 驗(yàn)證讀寫(xiě)分離

          4.1 驗(yàn)證寫(xiě)操作

          # 在wyl01 mycat服務(wù)器登陸,創(chuàng)建一個(gè)表
          [root@wyl01 mycat]# mysql -uroot -P8066 -p123456 -h127.0.0.1
           
          MySQL [(none)]> use TESTDB;
          Database changed
          MySQL [TESTDB]> create table hello (id int not null primary key,hostname varchar(100),date DATE);
          Query OK, 0 rows affected (0.02 sec)
          MySQL [TESTDB]>  insert into hello(id,hostname,date)  values(1,@@hostname,20190801);
          Query OK, 1 row affected (0.01 sec)
           
          MySQL [TESTDB]>  insert into hello(id,hostname,date)  values(2,@@hostname,20190802);
          Query OK, 1 row affected (0.01 sec)
           
          MySQL [TESTDB]>  insert into hello(id,hostname,date)  values(3,@@hostname,20190803);
          Query OK, 1 row affected (0.01 sec)
           
          MySQL [TESTDB]>  insert into hello(id,hostname,date)  values(4,@@hostname,20190804);
          Query OK, 1 row affected (0.01 sec)
           
          # 檢查一下實(shí)際的4臺(tái)數(shù)據(jù)庫(kù)服務(wù)中是否有hello的這個(gè)表,以及表里是否有數(shù)據(jù),在操作正確的情況下,數(shù)據(jù)都是有的。


          我們查看一下數(shù)據(jù)是從哪個(gè)數(shù)據(jù)庫(kù)服務(wù)進(jìn)行的寫(xiě)操作,下表可以看出是從wyl03這個(gè)主節(jié)點(diǎn)進(jìn)行的寫(xiě)操作。

          # 在wyl01 mycat服務(wù)器登陸,創(chuàng)建一個(gè)表
          [root@wyl01 mycat]# mysql -uroot -P8066 -p123456 -h127.0.0.1
          MySQL [(none)]> use TESTDB;
          MySQL [TESTDB]> select * from hello;
          +----+----------+------------+
          | id | hostname | date       |
          +----+----------+------------+
          |  1 | wyl03    | 2019-08-01 |
          |  2 | wyl03    | 2019-08-02 |
          |  3 | wyl03    | 2019-08-03 |
          |  4 | wyl03    | 2019-08-04 |
          +----+----------+------------+
          4 rows in set (0.01 sec)
           
          MySQL [TESTDB]> 

          4.2 驗(yàn)證讀操作

          我們到wyl02和wyl04上進(jìn)行修改一個(gè)值,然后再進(jìn)行select操作,修改內(nèi)容如下:

           

          進(jìn)行多次查詢(xún),觀察查詢(xún)的結(jié)果如下所示,可以看到是讀寫(xiě)分離的,也可以在日志中進(jìn)行查看。查詢(xún)并不是輪詢(xún)的只是負(fù)載均衡。

           

          5 主從切換

          5.1 故障演示

          我們?cè)俨迦胍粭l數(shù)據(jù),顯示目前的寫(xiě)操作仍然是在wyl03上,那我們開(kāi)始停止wyl03上的服務(wù)

           

          我們停掉wyl03上的mysql的服務(wù),發(fā)現(xiàn)依然是可以做查詢(xún)操作的。

           

          當(dāng)我們把wyl03上的master服務(wù)給停止后,在wyl01上再次寫(xiě)入數(shù)據(jù),此時(shí)由下圖可以看到是數(shù)據(jù)從wyl01節(jié)點(diǎn)寫(xiě)進(jìn)去的,并且讀取的時(shí)候依然是可以讀到數(shù)據(jù)的。

           

          總結(jié):在wyl01上執(zhí)行多次發(fā)現(xiàn)結(jié)果一樣,說(shuō)明在一臺(tái)master端掛掉的情況下,其連接的slave端也被剔除,并沒(méi)有新的數(shù)據(jù)寫(xiě)入,因此數(shù)據(jù)完整性可以保證完整性。

          5.2 恢復(fù)master節(jié)點(diǎn)

          當(dāng)恢復(fù)wyl03master節(jié)點(diǎn),我們可以看到數(shù)據(jù)又保持了一致。

           

          總結(jié):當(dāng)我們恢復(fù)mysql集群時(shí),數(shù)據(jù)并沒(méi)有出現(xiàn)丟失,保證了集群的高可用性。



          版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。

          本文鏈接:

          https://blog.csdn.net/wyl9527/article/details/98752020





          粉絲福利:Java從入門(mén)到入土學(xué)習(xí)路線圖

          ??????

          ??長(zhǎng)按上方微信二維碼 2 秒


          感謝點(diǎn)贊支持下哈 

          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久7777| 蜜桃无码高清 | 天天日天天搞天天爽 | 逼视频在线观看 | 欧美性爱视频一区二区 |