Mycat配置主从数据-集群搭建
1、讀寫分離mycat
a、 讀寫分離
讀--》讀操作服務器只負責讀
寫--》寫操作服務器只負責寫
b、分表分庫
(微服務)垂直拆分:系統(訂單,用戶)
mycat研究對象-》水平拆分:訂單(訂單1/訂單2)
haproxy:搭建多個mycat集群
集群:防止單點故障
當一個機器宕機了以后,另一個機器會啟作用,進行數據傳輸和備份。
2、原理圖
3、安裝mycat
a. 解壓文件
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
b.移動到軟件目錄
mv mycat/ /usr/
c. 進入/usr/mycat/conf中配置三個文件
Server.xml
這里是root用戶密碼的設置,同時邏輯分庫表的名字
<user name="root">
<property name="password">root</property>
<property name="schemas">mydb</property>
</user>
schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="mydb" checkSQLschema="false" sqlMaxLimit="100">
<!-- 分表 name是分表 dataNode拆分后的切片的位置 rule拆分規則 -->
<table name="student" dataNode="dn1,dn2" rule="myrule" />
</schema>
<!--datahost設置讀寫分離的地址 database拆分后為mydb01和02-->
<dataNode name="dn1" dataHost="localhost1" database="mydb01" />
<dataNode name="dn2" dataHost="localhost1" database="mydb02" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<!--發送心跳確是否出故障-->
<heartbeat>show slave status</heartbeat> <!--select user()-->
<writeHost host="hostM1" url="192.168.209.135:3306" user="root"
password="root">
<readHost host="hostS2" url="192.168.209.137:3306" user="root" password="root" />
</writeHost>
</dataHost>
</mycat:schema>
部分參數解析
balance:讀請求的負載均衡
0:不開啟讀寫分離,所有讀操作都發送到writehost中
1:全部的readhost和stand by writehost都參與讀操作的負載均衡
2:讀請求隨機發送給readhost或writehost
3:讀請求隨機發送給writehost中的readhost
writeType:寫請求的負載均衡
0:寫請求先發送給schema.xml中的第一個writehost。
當第一個writehost掛掉后給第二個,切換 記錄會被記錄在conf/dnindex.properties
1:寫請求隨機發送到所有的writehost中
switchType:是否允許讀操作在readhost和writehost中自動切換(解決延遲問題,當從readhost中讀 取數據出現網絡延遲時,自動從writehost中讀取)
-1:不允許
1:允許
2:根據主從同步的狀態,自動選擇是否切換 心跳設置必須為show slave status
rule.xml
這是是算法的區分
<tableRule name="mod-long">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
下面的算法的實現
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">3</property>
</function>
在主從底層數據庫中進行數據參加
create database mydb01;
create table student(id int(4),name varchar(10));
create database mydb02;
create table student(id int(4),name varchar(10));
啟動mycat
開啟 bin/mycat start 關閉 bin/mycat stop 查看狀態 bin/mycat status
登錄mycat
mysql -uroot -proot -P8066 -h(mycat所在服務器ip)
測試
插入數據
select * from student;
insert student (id, name) values (88, 'nihao');
測試思路:
讀寫分離,讀從主slave中讀,寫從master寫入。
在master中插入數據,能查詢到兩個庫中的數據。
在slave中插入數據,由于slave是從數據庫,所以數據不會同步到master,所以從master讀是讀不到的,只有從slave中讀才能得到數據,得到驗證。
總結
以上是生活随笔為你收集整理的Mycat配置主从数据-集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GPU Gems2 - 13 动态环境光
- 下一篇: 皮肤渲染技术