MySQL運維5-Mycat配置

来源:https://www.cnblogs.com/Se7eN-HOU/archive/2023/12/14/17901253.html
-Advertisement-
Play Games

一、schema.xml 1.1 簡介 schema.xml作為Mycat中最重要的配置文件之一,涵蓋了Mycat的邏輯庫、邏輯表、分片規則、分片節點即數據源的配置。主要包括一下三組標簽 schema標簽 datanode標簽 datahost標簽 1.2 schema標簽 用於定於Mycat實例中 ...


一、schema.xml

  1.1 簡介

    schema.xml作為Mycat中最重要的配置文件之一,涵蓋了Mycat的邏輯庫、邏輯表、分片規則、分片節點即數據源的配置。主要包括一下三組標簽

    • schema標簽
    • datanode標簽
    • datahost標簽

  1.2 schema標簽

    用於定於Mycat實例中的邏輯庫,一個Mycat實例中,可以有多個資料庫,可以通過schema標簽來劃分不同的邏輯庫。Mycat中的邏輯庫的概念,等同於MySQL中的database概念沒需要操作某個邏輯庫下的表時,就需要切換邏輯庫,同MySQL一樣,使用use xxxx語句。

    

    核心屬性:

    • name: 自定自定義的邏輯庫苦命
    • checkSQLschema: 在SQL語句操作時指定了資料庫名稱,執行時是否自動去除,true:自動去除,false不自動去除,即如果有true時,我們可以不進入資料庫查詢.
    • sqlMaxLimit: 如果未指定limit進行查詢,列表查詢模式預設查詢的條數。

    checkSQLschema參數演示:

    

     說明1:當checkSQLschema為true時,我們可以不進入資料庫查詢,即使用DB01.TB_ORDER的方式,但是如果checkSQLschema為false的時候,就不能這樣寫了,就必須要要先usr DB01;今日資料庫裡面在查找,所以這裡大家就直接給true就行了。

  1.3 schema標簽中的table標簽

    table標簽定義Mycat中邏輯庫schema下的邏輯表,所有需要查分的表都需要在table標簽中定義。

    核心屬性

    • name:定義邏輯表表名,在該邏輯庫下唯一
    • DataNode:定義邏輯表所屬的dataNode,該屬性需要與dataNode標簽中的name對應,多個dataNode用逗號隔開
    • rule: 分片規則的名稱,分片規則名字是在rule.xml中定義的
    • primaryKey: 邏輯表對應的真是表的主鍵
    • type: 邏輯表的類型,目前邏輯表只有全局表和普通表,如果未配置,預設是普通表,全局表配置為global

  1.4 dataNode標簽

    

     dataNode標簽中定義了Mycat中的數據節點,也就是我們通常說的數據分片,一個dataNode標簽就是一個獨立的數據分片

    核心屬性

    • name:定義了數據節點名稱
    • dataHost:資料庫實例主機名稱,引用自dataHost標簽中name屬性
    • database:定義分片所屬資料庫

  1.5 dataHost標簽

    

    該標簽在Mycat邏輯庫中作為底層標簽,直接定義了具體的資料庫實例、讀寫分離,心跳語句。

    核心屬性:

    • name:唯一標識符,供上層標簽使用
    • maxCon/minCon:最大連接數/最小連接數
    • balance:負載均衡策略,取值0,1,2,3 ,讀寫分離的時候,在詳細說明這四個取值的意義。
    • writeType:寫操作分發方式(0:寫操作轉發到第一個writeHost,第一個掛了,切換到第二個;1:寫操作隨機發配到配置的writeHost)
    • dbDriver:資料庫驅動,支持native和jdbc,native主要支持MySQL5+,jdbc主要支持MySQL8+

  1.6 schema.xml邏輯庫映射

    邏輯庫的名字和mysql資料庫中的名字可以不一致的,例如我們這裡配置的邏輯庫的名字是大寫的DB01,而MySQL中的資料庫名則是小寫的db01,這取決於邏輯庫和MySQL真實資料庫的映射關係。

    

    schema.xml整體配置流程即關係隱射示意

    

 二、rule.xml

  rule.xml中定義了所有拆分表的規則,在使用過程中可以靈活的使用分片演算法,或者對同一個分片演算法使用不同的參數,它讓分片過程可配置化,主要包含兩類標簽:tableRule,Function

  

  

  而在schema.xml中配置的分片規則就是在這裡定義的

  

  說明1:在tableRule標簽裡面主要有columns和algorithm兩個標簽。

  說明2:columns標簽主要是分表的依據

  說明3:algorithm標簽主要是,分庫分表的演算法引用,這裡algorithm裡面的值就是Function標簽的實現。

  

  例如:auto-sharding-long 分表規則的,依據是rang-long這個演算法。

  

  而 rang-long這個演算法就在function標簽中有定義,而function標簽中的class就是對應這個演算法的實現類。

  說明4:至於這裡面的分庫分表的規則具體的使用,我們會在後面分庫分表實戰章節,用到的時候在詳細說。 

三、server.xml

  server.xml配置文件包含了Mycat的系統配置,主要有兩個重要的標簽:system, user.

  3.1 system標簽

    

     重要屬性說明:

    • charset: 取值utf8: 設置Mycat的字元集,字元集需要與MySQL的字元集保持一致
    • nonePasswordLogin: 取值 [0, 1], 0:需要登錄密碼登錄,1:不需要登錄密碼登錄,預設為0,設置為1,則需要指定預設賬戶
    • useHandshakeV10: 取值 [0,1],使用該選項主要是為了能夠相容高低版本的jdbc驅動,是否採用handshakeV10來與client進行通訊,1:是,0:否
    • useSqlStat: 取值[0,1],開啟SQL實時統計 1:開啟,0:關閉,開啟之後Mycat會自動統計SQL語句的執行情況:mysql -h xxx.xxx.xxx.xxx -P 9066 -u root -p之後就可以查看,使用show @@sql; show @@sql.low; show @@sql.sum等,分別是查看Myact執行的sql, 執行效率比較低的SQL,SQL的整體執行情況,讀寫比例等等。
    • useGlobelTableCheak: 取值[0,1],是否開啟全局表一致性檢查,1:開啟,0關閉
    • sqlExecuteTimeout: 取值1000等整數:SQL執行的超時時間單位為秒
    • sequnceHandleType:取值[0,1,2],用來指定Mycat全局序列類型,0:本地文件,1:資料庫方式,2:為時間戳方式,預設使用本地文件方式,文件方式主要用於測試
    • sequnceHandlePattern: 正則表達式:必須帶有MYCATSEQ或者mycatseq進入序列匹配流程
    • subqueryRelationshipCheck: 取值[true,false],子查詢存在關聯查詢的情況下,檢查關聯欄位中是否有分片欄位,預設false
    • useCompression: 取值[0,1],開啟mysql壓縮協議,0:關閉,1:開始
    • fakeMySQLVersion: 5.5,5.6,8.0.27等,設置模擬MySQL版本號
    • defaultSqlParser: 由於Mycat的最初版本使用了FoundationDB的SQL解析器,在Mycat1.3後增加了Druid解析器,所以要設置defaultSqlParser屬性來指定預設的解析器,解析器有兩個:druidparser和fdbparser,在Mycat1.4之後預設是fruidparser,fdbparser已經廢棄
    • processors: 取值[1,2....] 指定系統可用的線程數量,預設值為CPU核心 乘以 每個核心運行的線程數,processors會影響processorBufferPool,processorBufferLocalPercent,processorExecutor屬性,所以在性能調優時可以適當的修改processors的值
    • processorBufferChunk: 指定每次分配Socker Direct Buffer預設值為4096位元組,也會影響BufferPool長度,如果一次性獲取位元組過多而導致buffer不都用,則會出現警告,可以調大該值
    • processorExecutor: 指定NIOProcessor上共用businessExecutor固定線程池的大小,Mycat把非同步任務交給businessExecutor線程池,在新版本的Mycat中這個連接池使用頻率不高,可以適當的把該值調小
    • packetHeaderSize: 指定MySQL協議中的報文頭長度,預設4個位元組。
    • maxPacketSize: 指定MySQL協議可以攜帶的數據最大大小,預設值為16M
    • idleTimeout: 取值30等,指定連接的空閑時間的超時長度,如果超時將關閉資源並回收,預設30分鐘
    • txlsolation:取值[1,2,3,4], 初始化前端連接的事務隔離級別,預設為REPEATED_READ,對應數字3,READ_UNCOMMITED=1, READ_COMMITED=2,REPEATED_READ=3,SERIALIZABLE=4
    • sqlExecuteTimeout: 取值 300 等, 執行SQL的超時時間,如果SQL語句執行超時,將關閉連接,預設300秒
    • serverPort: 8066 ,定義Mycat的使用埠,預設8066
    • managerPort: 9066, 定義Mycat的管理埠,預設9066

  3.2 user標簽

    

      說明1:server.xml中允許有多個user,即同時配置多個用戶的許可權

    說明2:如果一個賬戶可以訪問多個邏輯庫,多個邏輯庫之間用逗號隔開

    說明3:dml中的四個二進位數分別代表增,改,查,刪的許可權

    說明4:如果邏輯表和邏輯庫的許可權衝突,則就近原則,即優先使用邏輯表的許可權

    

 


侯哥語錄:我曾經是一個職業教育者,現在是一個自由開發者。我希望我的分享可以和更多人一起進步。分享一段我喜歡的話給大家:"我所理解的自由不是想乾什麼就乾什麼,而是想不幹什麼就不幹什麼。當你還沒有能力說不得時候,就努力讓自己變得強大,擁有說不得權利。"
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程式,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹`QRadioButton`單選框組件以及與之交互的`QButtonGroup`類的常用方法及靈活運用。`QRad... ...
  • 前幾天跟大家介紹了在winform中使用blazor hybrid,而且還說配上blazor的ui可以讓我們的winform程式設計的更加好看,接下來我想以一個在winform blazor hybrid中繪圖的例子來進行說明,希望對你有所幫助。 效果 在開始之前,先給大家演示一下效果,如下所示: ...
  • 反射 C#中的反射是一種使程式在運行時能夠動態地獲取類型信息並調用其成員的技術。通過反射,程式可以在運行時進行類型的動態載入、創建對象、調用方法和屬性,以及訪問和修改欄位等。反射可以使程式更加靈活,但也增加了一定的性能開銷。 在C#中,反射主要是通過System.Reflection命名空間中的類來 ...
  • 介面 C#中的介面是一種定義了一組方法、屬性和事件的類型。它只包含成員的聲明,而不包含任何實現。介面可以被類通過實現的方式使用,從而使類能夠具有介面定義的行為。 介面在C#中被定義為使用interface關鍵字,介面的成員預設是公共的。類通過使用implements關鍵字實現介面,並提供介面中定義的 ...
  • ImageSharp:.NET平臺上的靈活高性能圖像處理庫 ImageSharp 是一個強大的圖像處理庫,專為.NET平臺設計。無論是簡單的圖像載入和保存,還是複雜的圖像處理、濾鏡應用和文本添加,ImageSharp 提供了豐富而靈活的功能,使圖像處理變得簡單而愉快。 主要特性: 跨平臺支持: Im ...
  • 是這麼個情況今天小編心血來潮突然的想去學習進階一下自己的技術,興緻衝衝忍著腰疼腿疼(是小編這兩天鍛煉身體過度)起床打開了電腦找到許久沒用的idea打開後發現他一直報錯)無奈之下只能卸載重新安裝。在網上找了好多的破解資料都寫的不是很清楚要不就是廣告,在無奈之下只能加了一個廣告的選擇付款(49元一年後, ...
  • 文本提取工具(查看文本) 文本分析工具 文本操作工具 1、文本提取工具 cat、more、less查看文本內容 cat:列印一個或多個文件到標準輸出 1 #合併文件 2 [root@example tmp]# cat file1.txt file2.txt > file3.txt 3 4 #查看文件 ...
  • 哈嘍大家好,我是鹹魚 參加過校招面試的小伙伴們肯定對下麵這道面試題很熟悉:“當你在瀏覽器輸入一段網址後會發生什麼?”。這道面試題可以說是很經典了,因為其涉及大量網路協議,可以非常直觀的看出小伙伴們對電腦網路體系的整體把握程度 但如果問題換成:“當你打開終端並輸入 ls 時會發生什麼?”,有多少小伙 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...