安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(五)-- MyCat配置詳解
零、說在前面
書接前文,首先祭出前文中出現的幾個配置檔案,然後分別說明
其實大部分的配置標籤及其屬性,在官方的Mycat的說明文件中都有說明,我只選一些我覺得比較重要的說一下
一、開始配置
1、server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<!-- 字符集 -->
<property name="charset">utf8</property>
<!-- 處理執行緒數量,預設與cpu數量一致,具體情況根據伺服器部署的其他服務的數量決定 -->
<property name="processors">1</property>
<!-- 1為開啟實時統計、0為關閉 -->
<property name="useSqlStat">0</property>
<!-- 1為開啟全加班一致性檢測、0為關閉 -->
<property name="useGlobleTableCheck">0</property>
<property name="sequnceHandlerType">2</property>
<property name="processorBufferPoolType">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">1</property>
<property name="memoryPageSize">1m</property>
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
<property name="useZKSwitch">true</property>
</system>
<user name="root">
<!-- 這裡的賬號和密碼與你的資料庫一致即可 -->
<property name="password">987654</property>
<!-- 這裡的TESTDB的名字可以隨便寫,只需與schema.xml中的一致即可 -->
<property name="schemas">TESTDB</property>
</user>
</mycat:server>
2、schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 這裡的name屬性的值TESTDB與上面server.xml中的一致即可,
sqlMaxLimit屬性代表每次只查詢前n條符合條件的記錄,避免全表掃描 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- 下面名叫“t_a1”的表是在我的庫中真實存在的一個表,
同時,下面的dataNode屬性的值對應的是下面dataNode標籤的name屬性的值 -->
<table name="t_a1" primaryKey="ID" type="global" dataNode="dn1" />
</schema>
<!-- dataNode標籤的主要作用是指明對哪一個資料庫進行操作和管理,
其中的dataHost屬性對應的下面dataHost標籤的name屬性的值 -->
<dataNode name="dn1" dataHost="localhost1" database="xxtest" />
<!-- 下面的localhost1的名字是隨便取的,balance、writeType和switchType的含義在下面解釋 -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 檢測心跳的方法,可以用下面的語句,也可以用其他的 -->
<heartbeat>select user()</heartbeat>
<!-- 下面是讀和寫的mysql的ip和埠,以及登入的賬號和密碼。
開始我被忽悠,把讀與寫的host屬性的值寫成一樣的,注意,那是不可以的 -->
<writeHost host="hostM1" url="192.168.122.21:3306" user="root" password="987654">
<readHost host="hostS2" url="192.168.122.22:3306" user="root" password="987654" />
</writeHost>
</dataHost>
</mycat:schema>
先說一下<table>中各屬性的含義,如下
primaryKey 主鍵欄位名,據說自動生成主鍵時需要設定
autoIncrement 是否自增。若想在Mycat中使用這個引數,前提是需要在MySQL的表中定義了自增長的主鍵,
然後才可以使用last_insert_id獲取主鍵返回值。此引數與表中的對應設定缺一不可。
rule 分片規則,見我dark下面的說明
type 邏輯表的型別,目前邏輯表只有全域性表和普通表,前者取值為“global”,後者為空
同時,全域性表查詢任意節點,普通表查詢所有節點,(我沒懂具體區別在哪裡)
needAddLimit 在分庫分表的情況下,資料量會異常龐大,所以此引數是用來確定是否限制返回的資料條數
接著是字表<childTable>中的屬性
當前標籤是用於ER分片的字表使用,通過joinKey和parentKey與父表關聯
joinKey 子表的某個欄位,與父表關聯
parentKey 父表的某個欄位,與字表關聯
再說一下上面<dataHost>中各屬性的含義,如下
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不負擔讀壓力
writeType值得是寫入的模式
"0" 表示所有寫操作傳送到第一個writeHost上,若第一個掛了切換到存活的第二個writeHost上
重啟後仍以切換後的在用那個為準,切換記錄在配置檔案"dnindex.properties"中
"1"表示所有寫操作隨機的傳送到所有的writeHost上,1.5版本後1這個取值廢棄不用
switchType指的是切換的模式,目前的取值也有4種:
"-1" 表示不自動切換
"1" 預設值,表示自動切換
"2" 基於MySQL主從同步的狀態決定是否切換,心跳語句為 show slave status
"3"基於MySQL galary cluster的切換機制(適合叢集)(1.4.1),
心跳語句為 show status like 'wsrep%'。
相關文章
- Mycat讀寫分離配置實踐
- MHA+ProxySQL實現讀寫分離高可用SQL
- CentOS7系統下使用Mycat實現mysql讀寫分離部署CentOSMySql
- mysql proxy 安裝及配置實現讀寫分離MySql
- redis客戶端實現高可用讀寫分離Redis客戶端
- Mysql讀寫分離叢集的搭建且與MyCat進行整合MySql
- docker+mysql叢集+讀寫分離+mycat管理+垂直分庫+負載均衡DockerMySql負載
- Mycat實現mysql的負載均衡讀寫分離MySql負載
- MySQL主從同步讀寫分離的叢集配置MySql主從同步
- MyCat分庫分表、讀寫分離
- Mycat 讀寫分離+分庫分表
- 搭建Redis哨兵叢集並使用RedisTemplate實現讀寫分離Redis
- Mysql 高可用(MHA)-讀寫分離(Atlas)MySql
- 高可用Mysql架構_Haproxy+keepalived+mycat叢集的配置MySql架構
- Mycat中介軟體實現Percona Cluster讀寫分離
- Mycat中介軟體實現Mysql主從讀寫分離MySql
- mycat結合MySQL的雙主實現讀寫分離MySql
- 詳解Redis三大叢集模式,輕鬆實現高可用!Redis模式
- 【Mycat】Mycat讀寫分離與負載均衡2負載
- DM7搭建讀寫分離叢集
- ShardingSphere(七) 讀寫分離配置,實現分庫讀寫操作
- centos7 安裝k8s1.30.1高可用叢集(非獨立etcd叢集)CentOSK8S
- 使用Consul和ProxySQL實現MySQL HA讀寫分離高可用性MySql
- 搭建Redis簡易叢集實現主從複製和讀寫分離Redis
- 搭建Redis“主-從-從”模式叢集並使用 RedisTemplate 實現讀寫分離Redis模式
- haproxy+keepalived+mycat+mysql (讀寫分離)MySql
- Linux原始碼安裝RabbitMQ高可用叢集Linux原始碼MQ
- Centos7安裝Nacos單機模式以及叢集模式(包含nignx安裝以及實現叢集)的相關配置CentOS模式
- Rabbitmq叢集高可用部署詳細MQ
- 11、redis使用ruby實現叢集高可用Redis
- Amoeba實現讀寫分離
- MyCat 讀寫分離 資料庫分庫分表 中介軟體 安裝部署,及簡單使用資料庫
- Spring配置RoutingDataSource實現mysql讀寫分離SpringMySql
- 高可用叢集corosync+pacemaker之pcs安裝使用ROS
- 在 Istio 中實現 Redis 叢集的資料分片、讀寫分離和流量映象Redis
- Linux 高可用(HA)叢集之keepalived詳解Linux
- 搭建高可用MongoDB叢集(一):配置MongoDBMongoDB
- CentOS7 安裝PG叢集CentOS