mycat部署和配置讀寫分離(二)

說明:
MyCAT 是使用 JAVA 語言進行編寫開發,使用前需要先安裝 JAVA 運行環境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必須在 JDK7 以上的版本上運行。

1. jdk1.8安裝

詳見jdk環境安裝

2. Mysql安裝

詳見mysql8.0.11源碼安裝,實際使用的是mysql8.0.16

3. Mysql 主從配置

詳見主從同步原理和mysql的主從同步詳解

3.1 安裝mycat服務

3.1.1 部署mycat
cd /root
wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
tar -xf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /usr/local
cd /usr/local/mycat/conf
  • /usr/local/mycat/conf/server.xml:定義用戶以及系統相關變量,如端口等。其中用戶信息是前端應用程序連接 mycat 的用戶信息。
  • /usr/local/mycat/conf/schema.xml:定義邏輯庫,表、分片節點等內容。
  • /usr/local/mycat/conf/rule.xml:定義分片規則
    在這里插入圖片描述
3.1.2 server.xml配置文件

server.xml文件跟讀寫分離策略關系不大,但是需要用此文件來配置連接MyCat的用戶及權限等(關注user標簽即可),因此在這里簡單說明。

<user name="mycat" defaultAccount="true">  #通過mycat登錄的用戶名和密碼<property name="password">123456</property><property name="schemas">mycatDB</property> <!-- #邏輯庫,真實不存在的庫,可以自定義修改,但一定要對應上,要不然就會報錯 --><property name="defaultSchema">mycatDB</property>  <!-- #邏輯庫,真實不存在的庫,可以自定義修改 --><!-- 表級 DML 權限設置 --><!--            <privileges check="false"><schema name="TESTDB" dml="0110" >               #0000分表表示數據庫的增刪改查,0比表示關閉,1表示打開,如果配置 name需和前面定義的一致<table name="tb01" dml="0000"></table>   #0000分表表示數據表的增刪改查,0比表示關閉,1表示打開<table name="tb02" dml="1111"></table></schema></privileges>           --></user><user name="user">  <!-- 這個賬號只能讀不能寫,見下面的定義readOnly --><property name="password">user</property><property name="schemas">mycatDB</property><property name="readOnly">true</property><property name="defaultSchema">mycatDB</property>
</user>

說明:

  • server.xml文件里登錄mycat的用戶名和密碼可以任意定義,這個賬號和密碼是為客戶機登錄mycat時使用的賬號信息。
  • 邏輯庫名(如上面的mycatDB,也就是登錄mycat后顯示的庫名,切換這個庫之后,顯示的就是代理的真實mysql數據庫的表)要在schema.xml里面也定義,否則會導致mycat服務啟動失敗!
  • 這里只定義了一個標簽,所以把多余的都注釋了。如果定義多個標簽,即設置多個連接mycat的用戶名和密碼,那么就需要在schema.xml文件中定義多個對應的庫!
3.1.3 schema.xml配置文件

schema.xml是最主要的配置項,此文件關聯mysql讀寫分離策略!讀寫分離、分庫分表策略、分片節點都是在此文件中配置的!MyCat作為中間件,它只是一個代理,本身并不進行數據存儲,需要連接后端的MySQL物理服務器,此文件就是用來連接MySQL服務器的!

schema.xml文件分為三部分,分別時schema、dataNode、dataHost

  • schema
<schema name="mycatDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">  <!-- 其中name要和server.xml中定義的邏輯看必須一致;checkSQLschema 表示是否檢測語法,一般不需要,因為要連接多個數據庫,語法不一樣;sqlMaxLimit 每個sql語句最多返回100條--><!-- 如果不進行分庫分表,下面的配置可以不用管,注釋即可 --><!-- auto sharding by id (long) --><!--splitTableNames 啟用<table name 屬性使用逗號分割配置多個表,即多個表使用這個配置--><!--    <table name="travelrecord,address" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" splitTableNames ="true"/>  --><!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"/> -->
</schema>
  • dataNode
<!-- dataNode用于配置物理數據庫的名稱,name可以自定義;dataHost自定義,但是需要和后面的dataHost有對應關系;database是真實存在的庫 -->
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743" /> -->
  • dataHost
<!-- dataHost 是用于配置讀寫分離的,name 自定義,但需要和dataNode中的dataHost完全一致;maxCon和minCon 表示最大最小連接數量;balance表示負載均衡策略;writeType已廢棄,無需關注;dbType是mycat連接數據庫的類型;dbDriver指數據庫的驅動類型(如果dbType配的是Oracle,dbDriver則是jdbc);switchType 配置故障切換類型,需要配合下面的心跳機制heartbeat;slaveThreshold 指的是從節點的數量--><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat>  <!-- 心跳sql語句,需要配置故障切換類型 --><!-- can have multi write hosts --><!-- 寫節點的配置:host 自定義即可;url 數據庫的url連接地址;user 和 password指訪問這個庫的用戶名和密碼;如果是一主一從就配置一個writeHost和一個readHost,一主多從>就配置一個writeHost和多個readHost,多主多從就配置多個writeHost和多個readHost --><writeHost host="hostM1" url="localhost:3306" user="root"password="123456"><!-- can have multi read hosts --><!-- 讀節點的配置: host 自定義即可;url 數據庫的url連接地址;user 和 password指訪問這個庫的用戶名和密碼 --><readHost host="hostS1" url="localhost:3316" user="root" password="123456" /></writeHost><!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
3.1.4 標簽屬性

Balance屬性

  • balance=“0”:不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost 上,即讀請求僅發送到writeHost上。
  • balance=“1”:
    讀請求隨機分發到當前writeHost對應的readHost和standby的writeHost上。即全部的readHost與stand
    by writeHost 參與select 語句的負載均衡,簡單的說,當雙主雙從模式(M1 ->S1 , M2->S2,并且 M1 與
    M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡
    balance=“2”:讀請求隨機分發到當前dataHost內所有的writeHost和readHost上。即所有讀操作都隨機的在writeHost、
    readhost 上分發。
  • balance=“3”:讀請求隨機分發到當前writeHost對應的readHost上。即所有讀請求隨機的分發到 wiriterHost
    對應的 readhost 執行,writerHost 不負擔讀壓力,注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有。

writeType屬性(已廢棄,直接跳過)

  • writeType=“0”:所有寫操作發送到配置的第一個
    writeHost,第一個掛了切到還生存的第二個writeHost,重新啟動后以切換后的為準,切換記錄在配置文件中:dnindex.properties
    .
  • writeType=“1”:所有寫操作都隨機的發送到配置的writeHost。
  • writeType=“2”:沒實現。

switchType 屬性,主從切換(雙主failover)

  • switchType=“-1”:不自動切換
  • switchType=“1”:默認值,自動切換
  • switchType=“2”:基于MySQL主從同步的狀態來決定是否切換。需修改heartbeat語句(即心跳語句):show slave status
  • switchType=“3”:基于Mysql Galera
    Cluster(集群多節點復制)的切換機制。需修改heartbeat語句(即心跳語句):show status like ‘wsrep%’

dbType屬性
指定后端連接的數據庫類型,目前支持二進制的mysql協議,還有其他使用JDBC連接的數據庫。例如:mongodb、oracle、spark等。

dbDriver屬性
指定連接后端數據庫使用的Driver,目前可選的值有native和JDBC。

  • native
    使用native的話,因為這個值執行的是二進制的mysql協議,所以可以使用mysql和maridb。
  • JDBC
    其他類型的數據庫則需要使用JDBC驅動來支持。從1.6版本開始支持postgresql的native原始協議。
    如果使用JDBC的話需要將符合JDBC 4標準的驅動JAR包放到MYCAT\lib目錄下,并檢查驅動JAR包中包括如下目錄結構的文件:META-INF\services\java.sql.Driver。在這個文件內寫上具體的Driver類名,例如:com.mysql.jdbc.Driver。
3.1.5 讀寫分離配置

cat server.xml

...
...
...<user name="mycat" defaultAccount="true"><property name="password">mycat123</property><property name="schemas">mycatDB</property><property name="defaultSchema">mycatDB</property></user>
...
...
...

在這里插入圖片描述
cat schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="mycatDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><dataNode name="dn1" dataHost="localhost1" database="external_service" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>show slave status</heartbeat><writeHost host="hostM1" url="10.99.200.110:3306" user="dba" password="dba110"><readHost host="hostS1" url="10.99.200.111:3306" user="dba" password="dba111" /></writeHost></dataHost>
</mycat:schema>

在這里插入圖片描述

3.1.6 啟動服務

修改mycat的啟動內存(/usr/local/mycat/conf/wrapper.conf)
在這里插入圖片描述
啟動方式

cd /usr/local/mycat/bin 
./mycat console|stop|start|restart|dump    #前臺啟動|停止|后臺啟動|導入

登錄驗證
主從同步ok
在這里插入圖片描述
手動使得主從的數據不一致
在這里插入圖片描述
驗證讀寫分離
在這里插入圖片描述
讀的是從節點的數據
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214243.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214243.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214243.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

websoket 的使用

WebSocket是HTML5的API之一&#xff0c;允許瀏覽器和服務器之間進行雙向通信。Vue.js可以輕松地與WebSocket API集成&#xff0c;使用原生WebSocket API或其他WebSocket庫&#xff08;如socket.io&#xff09;都是可行的。 下面是一個使用Vue.js實現WebSocket的簡單示例&#…

【lesson11】數據類型之string類型

文章目錄 數據類型分類string類型set類型測試 enum類型測試 string類型的內容查找找所有女生&#xff08;enum中&#xff09;找愛好有游泳的人&#xff08;set中&#xff09;找到愛好中有足球和籃球的人 數據類型分類 string類型 set類型 說明&#xff1a; set&#xff1a;集…

SL9008 3.6-60V輸入 LED降壓恒流芯片 內置MOS管 帶PWM調光

SL9008是一款內置MOS管、具有PWM調光功能的LED降壓恒流芯片&#xff0c;適用于3.6-60V的輸入電壓范圍。它采用了先進的電路設計&#xff0c;確保了高效率和長壽命&#xff0c;同時具有寬電壓輸入范圍和優異的負載調整率。 SL9008的主要特點包括&#xff1a; 1. 寬輸入電壓范圍&…

C語言中常用的庫函數和頭文件

下面是C語言中常用的一部分庫函數和頭文件&#xff0c;不同編譯器或操作系統可能會有所差異。 1. 字符串相關函數 (string.h)&#xff1a; - strlen&#xff1a;獲取字符串長度。 - strcpy、strncpy&#xff1a;復制字符串。 - strcat、strncat&#xff1a;連接字符串…

HarmonyOS4.0開發應用——【ArkUI組件使用】

ArkUI組件使用 這里會詳細演示以下組件使用: ImageTextTextInputButtonSliderColumn&&RowList自定義組件以及相關函數使用 Image 可以是網絡圖片、可以是本地圖片、也可以是像素圖 Image("https://ts1.cn.mm.bing.net/th?idOIP-C.cYA-_PINA-ND9OeBaolDTwHaHa&…

MySQL GTID詳解

概念 GTID 全局事務唯一標識&#xff08; global transaction identifier&#xff09; 格式 單個GTID由兩部分組成 &#xff0c;用冒號分割&#xff1b;前面一部分為server_uuid&#xff0c;后面一部分transaction_id是由事務在源上提交的順序確定的序列號 GTID server_u…

免費熱門的API大全整理

實人認證&#xff08;人像三要素&#xff09;&#xff1a;輸入姓名、身份證號碼和一張人臉照片&#xff0c;與公安庫身份證頭像進行權威比對&#xff0c;返回比對分值。實名認證&#xff08;身份證二要素&#xff09;&#xff1a;核驗身份證二要素&#xff08;姓名和身份證號碼…

CLIP在Github上的使用教程

CLIP的github鏈接&#xff1a;https://github.com/openai/CLIP CLIP Blog&#xff0c;Paper&#xff0c;Model Card&#xff0c;Colab CLIP&#xff08;對比語言-圖像預訓練&#xff09;是一個在各種&#xff08;圖像、文本&#xff09;對上進行訓練的神經網絡。可以用自然語…

鴻蒙HarmonyOS(ArkTS)語法 聲明變量及注意事項

好 今天我們來看一個基礎的harmonyOS語法 變量聲明 這里 我們還是用 ArkTS項目 我們聲明變量的語法并不是ArkTS的 而是 javaScript 和 TypeScript的 可以看一下下面一張圖 js是最初弱類型語言 于是TS作為js的副類 是一種更嚴謹的數據限定語法 而ArkTS 是TS的改良版 其實我們…

算法通關村第十八關 | 白銀 | 回溯熱門問題

1.組合總和問題 原題&#xff1a;力扣39. 元素可以重復拿取&#xff0c;且題目的測試用例保證了組合數少于 150 個。 class CombinationSum {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<>();public List…

一篇文章教你快速弄懂 web自動化測試中的三種等待方式

前言 現在的網頁很多都是動態加載的&#xff0c;如果頁面的內容發生了改變&#xff0c;就需要時間來渲染。在咱們做web自動化測試的時候&#xff0c;由于代碼是自動執行的&#xff0c;代碼在執行的時候&#xff0c;有可能上一步操作而加載的元素還沒加載出來&#xff0c;就會報…

配置本地端口鏡像示例(1:1)

本地端口鏡像簡介 本地端口鏡像是指觀察端口與監控設備直接相連&#xff0c;觀察端口直接將鏡像端口復制來的報文轉發到與其相連的監控設備進行故障定位和業務監測。 配置注意事項 觀察端口專門用于鏡像報文的轉發&#xff0c;因此不要在上面配置其他業務&#xff0c;防止鏡像…

建筑學VR虛擬仿真情景實訓教學

首先&#xff0c;建筑學VR虛擬仿真情景實訓教學為建筑學專業的學生提供了一個身臨其境的學習環境。通過使用VR仿真技術&#xff0c;學生可以在虛擬環境中觀察和理解建筑結構、材料、設計以及施工等方面的知識。這種教學方法不僅能幫助學生更直觀地理解復雜的建筑理論&#xff0…

記錄 | ubuntu源碼編譯安裝/更新boost版本

一、卸載當前的版本 1、查看當前安裝的boost版本 dpkg -S /usr/include/boost/version.hpp通過上面的命令&#xff0c;你就可以發現boost的版本了&#xff0c;查看結果可能如下&#xff1a; libboost1.54-dev: /usr/include/boost/version.hpp 2、刪除當前安裝的boost sudo …

記錄 | 使用samba將ubuntu文件夾映射到windows實現共享文件夾

一、ubuntu配置 1. 安裝 samba samba 是在 Linux 和 UNIX 系統上實現 SMB 協議的一個免費軟件&#xff0c;由服務器及客戶端程序構成。SMB&#xff08;Server Messages Block&#xff0c;信息服務塊&#xff09;是一種在局域網上共享文件和打印機的一種通信協議。 sudo apt-…

Excel COUNT類函數使用

目錄 一. COUNT二. COUNTA三. COUNTBLANK四. COUNTIF五. COUNTIFS 一. COUNT ?用于計算指定范圍內包含數字的單元格數量。 基本語法 COUNT(value1, [value2], ...)?統計A2到A7所有數字單元格的數量 ?統計A2到A7&#xff0c;B2到B7的所有數字單元格的數量 二. COUNTA ?計…

大數據分析與應用實驗任務十一

大數據分析與應用實驗任務十一 實驗目的 通過實驗掌握spark Streaming相關對象的創建方法&#xff1b; 熟悉spark Streaming對文件流、套接字流和RDD隊列流的數據接收處理方法&#xff1b; 熟悉spark Streaming的轉換操作&#xff0c;包括無狀態和有狀態轉換。 熟悉spark S…

Linux 驅動開發需要掌握哪些編程語言和技術?

Linux 驅動開發需要掌握哪些編程語言和技術&#xff1f; 在開始前我有一些資料&#xff0c;是我根據自己從業十年經驗&#xff0c;熬夜搞了幾個通宵&#xff0c;精心整理了一份「Linux從專業入門到高級教程工具包」&#xff0c;點個關注&#xff0c;全部無償共享給大家&#xf…

1. mycat入門

1、mycat介紹 Mycat 是一個開源的分布式數據庫系統&#xff0c;但是由于真正的數據庫需要存儲引擎&#xff0c;而 Mycat 并沒有存 儲引擎&#xff0c;所以并不是完全意義的分布式數據庫系統。MyCat是目前最流行的基于Java語言編寫的數據庫中間件&#xff0c;也可以理解為是數據…

鴻蒙HarmonyOS4.0 入門與實戰

一、開發準備: 熟悉鴻蒙官網安裝DevEco Studio熟悉鴻蒙官網 HarmonyOS應用開發官網 - 華為HarmonyOS打造全場景新服務 應用設計相關資源: 開發相關資源: 例如開發工具 DevEco Studio 的下載 應用發布: 開發文檔: