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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql-高可用集群[MyCat中间件使用](三)

發布時間:2023/12/6 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql-高可用集群[MyCat中间件使用](三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

服務器-節點: 4臺

  • mysql-主: 192.168.2.40
  • mysql-從-node-0: 192.168.2.41
  • mysql-從-node-1: 192.168.2.42
  • mycat: 192.168.2.45

操作過程

  • 1.搭建mysql主從節點
  • 2.搭建mycat中間件節點
  • 3.mycat服務配置
  • 4.測試讀寫分離,讀的分發

1.搭建mysql主從節點

Mysql-高可用集群主從單一模式-binlog

2.搭建mycat中間件節點

# 2-1.基礎環境搭建: 安裝jdk # 下載頁面: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html rpm -ivh jdk-8u201-linux-x64.rpm# 2-2.下載安裝 mycat: wget http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -P /usr/local/src/ tar xvf /usr/local/src/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local # 配置: 寫入環境變量,增加相應用戶 echo export PATH=$PATH:/usr/local/mycat/bin >>/etc/profile echo export MYCAT_HOME=/usr/local/mycat >> /etc/profile source /etc/profile # 增加相應用戶 groupadd mycat -g 910 useradd mycat -g 910 chown -R mycat:mycat /usr/local/mycat

3.mycat服務配置

3-1.讀寫數據庫配置

vim /usr/local/mycat/conf/schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"><!-- 聲明一個邏輯表, 表名為TESTDB, 和server.xml中的對應 --><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><!-- 通過dataHost定義的數據庫: database="xh"(真實數據庫) --><dataNode name="dn1" dataHost="dataHost01" database="xh" /><dataHost name="dataHost01" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native"><heartbeat>select user()</heartbeat><!-- 寫入節點(主節點) --><writeHost host="serverM1" url="192.168.2.40:3306" user="myuser" password="Aa123456"><!-- 讀取節點(從節點) --><readHost host="serverS0" url="192.168.2.41:3306" user="myuser" password="Aa123456"/><readHost host="serverS1" url="192.168.2.42:3306" user="myuser" password="Aa123456"/></writeHost></dataHost> </mycat:schema>

balance指的負載均衡類型,目前的取值有4種:

  • 0: 不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。
  • 1: 全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且M1與 M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡
  • 2: 所有讀操作都隨機的在writeHost、readhost上分發。
  • 3: 所有讀請求隨機的分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力
    switchType指的是切換的模式,目前的取值也有4種:
  • -1: 表示不自動切換
  • 1: 默認值,表示自動切換
  • 2: 基于MySQL主從同步的狀態決定是否切換,心跳語句為 show slave status
    writeType值:
  • 0: 所有請求,分發到第一個: dataHost
  • 1: 所有請求,分發到所有的: dataHost
  • 2: 不執行寫操作

3-2.mycat服務,用戶配置

vim /usr/local/mycat/conf/server.xml .... # 服務端口 <property name="serverPort">8066</property> .... // 管理員配置,讀寫 <user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">TESTDB</property> </user> // 普通用戶配置,只讀 <user name="user" defaultAccount="true"><property name="password">123456</property><property name="schemas">TESTDB</property><property name="readOnly">true</property> </user> ....

3-3.開啟日志debug,啟動服務:

vim /usr/local/mycat/conf/log4j2.xml .... # 開啟debug日志 <asyncRoot level="info" includeLocation="true"> 改為 <asyncRoot level="debug" includeLocation="true"> .... # 啟動服務 mycat start # 啟動防火墻規則 firewall-cmd --permanent --add-port=8066/tcp && firewall-cmd --reload

4.測試讀寫分離

// 4-1.分發測試 // 4-1-1.先將 schema.xml 中的配置為: balance=0,不進行分發操作,【讀寫】全部在【主庫-192.168.2.40】 .... <dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> .... // 客戶端鏈接mycat ![](https://s1.51cto.com/images/blog/201904/06/d69dfb492c47a1f35dda3e7d4621d46c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) // 分別查看: 數據庫(【主-192.168.2.40】,【從0-192.168.2.41】,【從1-192.168.0.42】)查詢次數,寫入次數: // 查詢次數 show global status like 'Com_select'; // 寫入次數 show global status like '%Com_in%';// 【客戶端】執行查詢: 10次,注意:工具可能不能直接打開表進行操作,只能運行sql語句 SELECT * FROM `user` limit 1; INSERT `user`(name) VALUES('王五1'); INSERT `user`(name) VALUES('王五2'); INSERT `user`(name) VALUES('王五3'); // 分別查看: 數據庫(主,從0,從1)查詢次數,應該只有【主庫-192.168.2.40】有明顯的增加 //// 4-1-2.更改schema.xml 中的配置為: balance=3,讀在從庫,寫在主庫 // 客戶端】執行查詢: 10次 // 分別查看: 數據庫(主,從0,從1)查詢次數,應該只有【從0-192.168.2.41】,【從1-192.168.0.42】有明顯的增加

5.遺留問題:

  • 主庫-宕機后,查詢語句也無法執行
  • 從庫-有一臺宕機后,查詢語句也無法執行

轉載于:https://blog.51cto.com/3168834/2374749

總結

以上是生活随笔為你收集整理的Mysql-高可用集群[MyCat中间件使用](三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。