MyCAT完整實驗報告

MyCAT完整實驗報告

?

前言

剛剛看了一下前面的那篇MyCAT的文章 感覺有一些問題 所以拿出一篇文章再說一下 單獨構建了完整的實驗環境 這樣會全面一點

?

安裝MyCAT

#跳過

?

主從配置

#不多追溯 因為我們選擇的主從 也可以做雙主機 但我們后邊再說

?

環境搭建

一、環境規劃

服務器角色IP 地址部署服務說明
server_1192.168.3.168MySQL + MyCATMyCAT 中間件節點
server_2(主庫)192.168.3.135MySQL主庫(MASTER)
server_3(從庫)192.168.3.159MySQL從庫(SLAVE)
(用于下一個實驗 目前無需在意) 備用主庫192.168.3.160MySQL雙主架構備用主庫

修改配置文件

vim m1.datasource.json #PS:文件名是 *****.datasource.json
{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"m1","password":"123","queryTimeout":0,"type":"JDBC","url":"jdbc:mysql://192.168.3.135:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true","user":"aa","weight":0
}
----------------------------------------------------
vim m2.datasource.json
{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"m2","password":"123","queryTimeout":0,"type":"JDBC","url":"jdbc:mysql://192.168.3.160:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true","user":"bb","weight":0
}#PS:
#1> MyCat 2 要求每個數據源必須單獨放在一個 JSON 文件中,一個 JSON 文件只能定義一個數據源,不能在一個文件中同時定義多個數據源(如 m1 和 m2)。
#2> MyCat 2 加載數據源時,會掃描 conf/datasources 目錄下的所有 JSON 文件,每個文件被視為一個獨立的數據源配置。
#3> 如果在一個文件中定義多個數據源(即使格式正確),MyCat 會解析失敗,導致啟動報錯。#PS:以下為命令配置/*+ mycat:createDataSource
{"dbType": "mysql","idleTimeout": 60000,"initSqls": [],"initSqlsGetConnection": true,"instanceType": "READ_WRITE","maxCon": 1000,"maxConnectTimeout": 3000,"maxRetryCount": 5,"minCon": 1,"name": "m1","password": "123","type": "JDBC","url": "jdbc:mysql://192.168.3.135:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8","user": "root","weight": 0
}
*/-- 更多操作添加讀的數據源/*+ mycat:createDataSource
{"dbType": "mysql","idleTimeout": 60000,"initSqls": [],"initSqlsGetConnection": true,"instanceType": "READ","maxCon": 1000,"maxConnectTimeout": 3000,"maxRetryCount": 5,"minCon": 1,"name": "m2","password": "123","type": "JDBC","url": "jdbc:mysql://192.168.3.159:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8","user": "root","weight": 0
}
*/

?

集群配置(conf/clusters/prototype.cluster.json)

vim ../clusters/prototype.cluster.json
{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetryCount":0,"minSwitchTimeInterval":300,"showLog":true,"slaveThreshold":0.0},"masters":["m1"],"maxCon":2000,"name":"prototype","readBalanceType":"BALANCE_ALL","replicas":["m1"],"switchType":"SWITCH"
}#PS:雙主機
{"clusterType":"MASTER_MASTER",  // 雙主架構,部分版本也支持用 MASTER_SLAVE(但需將雙主都放 masters)"heartbeat":{"heartbeatTimeout":1000,"maxRetry":3,"minSwitchTimeInterval":300,"slaveThreshold":0},"masters":["m1",   // 主庫1(讀寫)"m1s1"  // 主庫2(讀寫,原從庫升級為雙主)],"maxCon":2000,"name":"prototype","readBalanceType":"BALANCE_ALL",  // 讀請求在兩個主庫間均衡分配"switchType":"SWITCH",  // 支持故障切換"weight":{  // 可選:給兩個主庫配置權重,控制請求分配比例"m1":1,"m1s1":1}
}

1. 主從集群構建與高可用基礎

  • 定義主從角色? :明確集群中 m1主庫(Master)m2從庫(Replica/Slave) ,MyCat 會基于此角色維護主從關系。
  • 主從心跳檢測:通過配置的 heartbeat 機制(超時 1000ms、重試 3 次、最小切換間隔 300ms),實時檢測主庫 m1 和從庫 m2 的存活狀態,為后續故障切換打基礎。

2. 讀寫分離(核心功能)

  • 讀請求負載均衡readBalanceType: "BALANCE_ALL" 表示 所有從庫(此處為 m1s1)都會參與讀請求分發,MyCat 會將查詢(SELECT)等讀操作自動路由到從庫,避免主庫讀壓力過大;若從庫故障,讀請求會自動調整(如 fallback 到主庫,具體依賴額外配置)。
  • 寫請求路由到主庫:所有寫操作(INSERT/UPDATE/DELETE)會被 MyCat 強制路由到主庫 m1,確保主庫數據是最新的,再通過 MySQL 自身的主從同步(如 binlog 復制)將數據同步到從庫 m2,保證主從數據一致性。

?

測試

重啟MyCAT

cd /usr/local/mycat/bin
./mycat restart
netstat -anput | grep 8066
tcp6       0      0 :::8066                 :::*                    LISTEN      8834/java
mysql -u root -p123456 -h 127.0.0.1 -P 8066 

?

創建測試庫和表

create database CATTEST; --創CATTEST庫
mysql> 
mysql> use CATTEST;
Database changed
mysql> create table test(id int);
Query OK, 0 rows affected (0.38 sec)mysql> insert into test valuse(1);
ERROR 1064 (HY000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'valuse (valuse)' at line 1
mysql> insert into test values(1);
Query OK, 1 row affected (0.01 sec)mysql> 
 mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| CATTEST            |
| information_schema |
| mycat              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

?

?

總結

彌補了上一期的MyCAT的不完整 所以 這次 做了了一個相對來說完整的 包括怎么配置等等 其實還想寫分庫分表的 但理了一下思路 好像在這篇文章去說的話 就會很多了 所以 下篇文章去完整去說

好了 更新的評論越來越慢 但也沒辦法 博主盡量像寫的詳細易懂一點 OK 希望大家生活是幸福的 知道自己為了什么努力 下期再見!!!

?

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

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

相關文章

機器翻譯論文閱讀方法:頂會(ACL、EMNLP)論文解析技巧

更多內容請見: 機器翻譯修煉-專欄介紹和目錄 文章目錄 一、論文選擇:快速判斷論文價值 1.1 關注核心會議與子領域 1.2 篩選標準 1.3 預讀篩選 1.4 快速定位關鍵信息 二、精讀解析 2.1 問題定義(5分鐘) 2.2 方法解剖(15分鐘) 2.3 實驗深挖(20分鐘) 2.4 批判性思考(10分…

Transformer模型實戰篇

引入 基于Transformers的NLP解決方案的步驟如下:(以文本分類為例) 導入相關包,General,可以詢問ai需要導什么包加載數據集,Data_loader,Datasets數據集劃分,測試機,驗證集…

深入(流批【牛批】框架)Flink的機制

flink本身是專注有狀態的無限流處理,有限流處理【batch批次】是無限流處理的一中特殊情況!應用場景實時ETL 集成流計算現有的諸多數據通道和SQL靈活的加工能力,對流式數據進行實時清洗、歸并和結構化 處理;同時,對離線…

Git 2.15.0 64位安裝步驟Windows詳細教程從下載到驗證(附安裝包下載)

一、下載后雙擊運行 安裝包下載:https://pan.quark.cn/s/7200b32a1ecf,找到下載好的文件:?Git-2.15.0-64-bit.exe?雙擊這個文件,就會彈出安裝向導窗口,點 ??“Next”(下一步)?? 二、選擇…

在職老D滲透日記day23:sqli-labs靶場通關(第29關-31關)http參數過濾

5.29.第29關 http參數過濾 閉合5.29.1.手動注入(1)判斷注入類型、注入點閉合(2)有回顯,優先用聯合查詢注入,判讀字段數?id1&id2 order by 3 -- ?id1&id2 order by 4 --(3)…

Spring Boot整合Amazon SNS實戰:郵件訂閱通知系統開發

Spring Boot整合Amazon SNS實戰引言配置服務總結新用戶可獲得高達 200 美元的服務抵扣金 亞馬遜云科技新用戶可以免費使用亞馬遜云科技免費套餐(Amazon Free Tier)。注冊即可獲得 100 美元的服務抵扣金,在探索關鍵亞馬遜云科技服務時可以再額…

LeetCode_動態規劃1

動態規劃1.動態規劃總結1.1 01背1.1.1 二維數組1.1.2 一維數組1.2 完全背包2.斐波那契數(力扣509)3.爬樓梯(力扣70)4.使用最小花費爬樓梯(力扣746)5.不同路徑(力扣62)6.不同路徑 II(力扣63)7.整數拆分(力扣343)8.不同的二叉搜索樹(力扣96)9.分割等和子集(力扣416)10.最后一塊石…

【STM32】HAL庫中的實現(九):SPI(串行外設接口)

SPI 接口通信原理 SPI(Serial Peripheral Interface)是全雙工主從通信協議,特點是: 信號線功能SCK串行時鐘MOSI主設備輸出,從設備輸入MISO主設備輸入,從設備輸出CS(NSS)片選信號&am…

Git常用操作大全(附git操作命令)

Git常用操作大全 一、基礎配置 1.1 設置用戶名和郵箱 git config --global user.name "你的名字" git config --global user.email "你的郵箱"1.2 查看配置 git config --list二、倉庫管理 2.1 初始化本地倉庫 git init2.2 克隆遠程倉庫 git clone <倉庫…

詳解flink table api基礎(三)

文章目錄1.使用flink的原因&#xff1a;2. Flink支持兩種模式&#xff1a;3. flink table api工作原理&#xff1a;4. Flink table api 使用5. select語句&flink table api&#xff1a;6. 使用flink table api 創建table7. 使用flink table api 寫流式數據輸出到表或sink8.…

Vue2+Vue3前端開發_Day5

參考課程: 【黑馬程序員 Vue2Vue3基礎入門到實戰項目】 [https://www.bilibili.com/video/BV1HV4y1a7n4] ZZHow(ZZHow1024) 自定義指令 基本語法&#xff08;全局 & 局部注冊&#xff09; 介紹&#xff1a;自己定義的指令&#xff0c;可以封裝一些 DOM 操作&#xff0c…

機器學習--決策樹2

目錄 第一代裁判&#xff1a;ID3 與信息增益的 “偏愛” 第二代裁判&#xff1a;C4.5 用 “增益率” 找平衡 第三代裁判&#xff1a;CART 的 “基尼指數” 新思路 遇到連續值&#xff1f;先 “砍幾刀” 再說 給決策樹 “減肥”&#xff1a;剪枝的學問 動手試試&#xff1…

yggjs_react使用教程 v0.1.1

yggjs_react是一個用于快速創建React項目的工具&#xff0c;它集成了Vite、TypeScript、Zustand和React Router等現代前端技術棧&#xff0c;幫助開發者快速搭建高質量的React應用。 快速入門 快速入門部分將指導您如何安裝yggjs_react工具、創建新項目并啟動開發服務器。 安…

vulhub可用的docker源

這一塊不太容易找&#xff0c;我試了好幾個源&#xff0c;下面是20250820測試可用源 編輯方法sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json 配置內容 [1] {"registry-mirrors" : ["https://docker.registry.cyou", "https://docker-…

基于YOLOv8-SEAttention與LLMs融合的農作物害蟲智能診斷與防控決策系統

1. 引言 1.1 研究背景與意義 農作物蟲害是制約農業產量與質量的重要因素。據FAO報告&#xff0c;全球每年因病蟲害造成的糧食損失高達 20%–40%。傳統人工巡查與經驗診斷具有時效性差、成本高與專業人才不足等缺陷。近年來&#xff0c;計算機視覺特別是目標檢測技術在農業檢測…

從零開始構建GraphRAG紅樓夢知識圖譜問答項目(三)

文章結尾有CSDN官方提供的學長的聯系方式&#xff01;&#xff01; 歡迎關注B站從零開始構建一個基于GraphRAG的紅樓夢項目 第三集01 搭建后端服務 創建一個python文件server.py 完整源碼放到文章最后了。 1.1 graphrag 相關導入 # GraphRAG 相關導入 from graphrag.query.cont…

S32K328(Arm Cortex-M7)適配CmBacktrace錯誤追蹤

CmBacktrace 相當于重寫了hard_fault函數&#xff0c;在hard_fault函數里面去分析SCB寄存器的信息和堆棧信息&#xff0c;然后把這些信息打印出來(或者寫到flash)&#xff1b;通過使用串口輸出產生hard_fault的堆棧信息&#xff0c;然后利用addr2line工具反推出具體的代碼執行函…

AI研究引擎的簡單技術實現步驟

產品愿景與核心功能 1.1 產品使命 “洞見 Weaver”是一個全棧AI Web應用,旨在將用戶的復雜研究問題,通過AI驅動的動態思維導圖和結構化報告,轉化為一次沉浸式的、可追溯的視覺探索之旅。我們的使命是,將AI復雜的推理過程透明化,將人類的探索直覺與AI的分析能力無縫結合,…

open webui源碼分析5-Tools

本文從最簡單的時間工具入手&#xff0c;分析Tools相關的代碼。一、安裝工具git clone https://github.com/open-webui/openapi-servers cd openapi-servers# 進入時間工具目錄 cd servers/timepip install -r requirements.txt# 啟動服務 uvicorn main:app --host 0.0.0.0 --r…

windows下通過vscode遠程調試linux c/cpp程序配置

windows下通過vscode遠程調試linux c/cpp程序配置vscode插件配置linux依賴工具安裝launch.json配置vscode插件配置 CodeLLDB插件需要提前下載&#xff1a; linux依賴工具安裝 sudo apt update sudo apt install cmake clangdlaunch.json配置 {"version": "0…