国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

利用mycat實現mysql數據庫讀寫分離的示例

2024-07-25 19:08:13
字體:
來源:轉載
供稿:網友

什么是MyCAT

  1. 一個徹底開源的,面向企業應用開發的大數據庫集群
  2. 支持事務、ACID、可以替代MySQL的加強版數據庫
  3. 一個可以視為MySQL集群的企業級數據庫,用來替代昂貴的Oracle集群
  4. 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
  5. 結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品
  6. 一個新穎的數據庫中間件產品

MyCAT關鍵特性

  1. 支持SQL92標準
  2. 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
  3. 遵守MySQL原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
  4. 基于心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集群。
  5. 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
  6. 基于Nio實現,有效管理線程,解決高并發問題。
  7. 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數,支持跨庫分頁。
  8. 支持單庫內部任意join,支持跨庫2表join,甚至基于caltlet的多表join。
  9. 支持通過全局表,ER關系的分片策略,實現了高效的多表join查詢。
  10. 支持多租戶方案。
  11. 支持分布式事務(弱xa)。
  12. 支持XA分布式事務(1.6.5)。
  13. 支持全局序列號,解決分布式下的主鍵生成問題。
  14. 分片規則豐富,插件化開發,易于擴展。
  15. 強大的web,命令行監控。
  16. 支持前端作為MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
  17. 支持密碼加密
  18. 支持服務降級
  19. 支持IP白名單
  20. 支持SQL黑名單、SQL注入攻擊攔截
  21. 支持prepare預編譯指令
  22. 支持非堆內存(Direct Memory)聚合計算
  23. 支持PostgreSQL的native協議
  24. 支持MySQL和oracle存儲過程,out參數、多結果集返回
  25. 支持zookeeper協調主從切換、zk序列、配置zk化
  26. 支持庫內分表
  27. 集群基于ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)。

1、這里是在mysql主從復制實現的基礎上,利用mycat做讀寫分離,架構圖如下:

mycat,讀寫分離,mysql

2、Demo

2.1 在mysql master上創建數據庫創建db1

2.2 在數據庫db1創建表student

mycat,讀寫分離,mysql

同時,因為配置好了mysql主從復制,在mysql slave上也有一樣數據庫和表

2.3 編輯 mycat的配置文件server.xml

   <!--表示mycat的登錄用戶名-->  <user name="test">        <!--表示mycat的登錄密碼-->        <property name="password">test</property>         <!--表示mycat的邏輯數據庫名稱,可以自定義-->        <property name="schemas">TESTDB</property>    </user>    <user name="user">        <property name="password">user</property>        <property name="schemas">TESTDB</property>        <property name="readOnly">true</property>    </user>

2.4編輯mycat的配置文件schema.xml

<!--TESTDB表示mycat的邏輯數據庫名稱 當schema節點沒有子節點table的時候,一定要有dataNode屬性存在(指向mysql真實數據庫),--><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">    </schema>    <!--指定master的數據庫db1-->    <dataNode name="dn1" dataHost="192.168.0.4" database="db1" />    <!--指定mastet的ip -->    <dataHost name="192.168.0.4" maxCon="1000" minCon="10" balance="3"        writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">        <!--表示mysql的心跳狀態-->        <heartbeat>select user()</heartbeat>        <!-- master負責寫 -->        <writeHost host="hostM1" url="192.168.0.4:3306" user="root"            password="admin">        <!--slave負責讀-->        <readHost host="hostS2" url="192.168.0.5:3306" user="root" password="admin" />        </writeHost></dataHost>

到這里,利用mycat做讀寫分離就已經配置完了

注意 dataHost節點的下面三個屬性

balance, switchType, writeType

balance="0", 不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。

balance="1",全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。

balance="2",所有讀操作都隨機的在writeHost、readhost上分發。

balance="3",所有讀請求隨機的分發到writeHost下的readhost執行,writeHost不負擔讀壓力

writeType表示寫模式

writeType="0",所有的操作發送到配置的第一個writehost

writeType="1",隨機發送到配置的所有writehost

writeType="2",不執行寫操作

switchType指的是切換的模式,目前的取值也有4種:

switchType=‘-1‘ 表示不自動切換

switchType=‘1‘ 默認值,表示自動切換

switchType=‘2‘ 基于MySQL主從同步的狀態決定是否切換,心跳語句為show slave status

switchType=‘3‘基于MySQL galary cluster的切換機制(適合集群)(1.4.1),心跳語句為show status like ‘wsrep%‘。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 老河口市| 密云县| 芒康县| 达孜县| 黄梅县| 南丰县| 塘沽区| 余干县| 远安县| 华亭县| 长兴县| 龙井市| 新绛县| 沽源县| 萨嘎县| 潢川县| 汝南县| 光山县| 博客| 施甸县| 茂名市| 宾阳县| 东至县| 榆林市| 拉孜县| 山阳县| 景宁| 西贡区| 武乡县| 从化市| 太湖县| 星子县| 温州市| 临安市| 密云县| 瑞金市| 东源县| 榕江县| 克拉玛依市| 讷河市| 沧州市|