您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Mycat中如何配置schmea.xml”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Mycat中如何配置schmea.xml”這篇文章吧。
dn1 | localhost1 |
192.168.6.121:3306---writehost 192.168.6.121:3307---readhost 192.168.6.121:3308 |
dn2 | locahost2 |
192.168.6.120:3306---writehost 192.168.6.120:3307---readhost 192.168.6.121:3308 |
dn3 | localhost3 |
192.168.6.119:3306---writehost 192.168.6.119:3307---readhost 192.168.6.119:3308 |
2.schemal配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> ---默認數據節點,若新建一張表company2未在配置文件中配置,則默認建立在dn1數據節點上(私有表)
<!-- auto sharding by id (long) -->
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> ---分片表,根據對應的分片規則 分片到各個物理節點上
<!-- global table is auto cloned to all defined data nodes ,so can join
with any table whose sharding node is in the same data node -->
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" /> ---全局表,每個節點上都有的表
---等同于company
----等同于company2
<table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
<!-- random sharding using mod sharind rule -->
<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"
rule="mod-long" />
<!-- <table name="dual" primaryKey="ID" dataNode="dnx,dnoracle2" type="global"
needAddLimit="false"/> <table name="worker" primaryKey="ID" dataNode="jdbc_dn1,jdbc_dn2,jdbc_dn3"
rule="mod-long" /> -->
<table name="employee" primaryKey="ID" dataNode="dn1,dn2"
rule="sharding-by-intfile" />
<table name="customer" primaryKey="ID" dataNode="dn1,dn2"
rule="sharding-by-intfile">
<childTable name="orders" primaryKey="ID" joinKey="customer_id"
parentKey="id">
<childTable name="order_items" joinKey="order_id"
parentKey="id" />
</childTable>
<childTable name="customer_addr" primaryKey="ID" joinKey="customer_id"
parentKey="id" />
</table>
<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"
/> -->
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="dn1" dataHost="localhost1" database="examdb" /> ----數據節點對應的localhost以及真實的數據庫
<dataNode name="dn2" dataHost="localhost2" database="examdb" />
<dataNode name="dn3" dataHost="localhost3" database="examdb" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="2" ------localhosts對應的連接配置信息
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.6.121:3306" user="root"
password="ESBecs00">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
<dataHost name="localhost2" maxCon="1000" minCon="10" balance="2"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.6.120:3306" user="root"
password="ESBecs00">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
<dataHost name="localhost3" maxCon="1000" minCon="10" balance="2"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.6.119:3306" user="root"
password="ESBecs00">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
</mycat:schema>
......未完待續
全局表的查詢有負載均衡的作用
mysql> select * from company; ----本應該是相同的數據,改為不同的數據是為了展示負載均衡的效果
+----+-------------+
| id | name |
+----+-------------+
| 1 | this is 119 |
+----+-------------+
1 row in set (0.01 sec)
mysql> select * from company;
+----+-------------+
| id | name |
+----+-------------+
| 1 | this is 120 |
+----+-------------+
1 row in set (0.01 sec)
mysql> select * from company;
+----+-------------+
| id | name |
+----+-------------+
| 1 | this is 121 |
+----+-------------+
1 row in set (0.00 sec)
uc分片表,4101在第二個節點上
act為私有表,4101在第一個節點上
select * from uc_coupon where COUPON_ID=4101 ; --單獨查,是有的
select * from act_vote_info where id=4101; ---單獨查,是有的
select a.*,b.* from uc_coupon a,act_vote_info b where a.COUPON_ID=b.id and b.id=4101 limit 1; --聯合查,查不到了,因為跨節點了!
舉例:
mysql> select * from order2; ---分片表
+----+----------+---------+---------------------+
| ID | PROVINCE | SN | CREATE_TIME |
+----+----------+---------+---------------------+
| 2 | shanghai | 2BJ0001 | 2017-05-09 15:01:33 | ---節點2上
| 1 | beijing | 2BJ0001 | 2017-04-23 21:48:08 | ---節點1上
| 3 | tianjin | 2BJ0001 | 2017-05-09 15:01:45 |
+----+----------+---------+---------------------+
3 rows in set (0.00 sec)
mysql> select * from tt; ---私有表 節點1上
+------+------------+
| id | name |
+------+------------+
| 2 | zhangsanli |
| 1 | 12314 |
+------+------------+
2 rows in set (0.00 sec)
mysql> select a.*,b.* from tt a,order2 b where a.id=b.ID and b.id=2; -----2和私有表不在一個節點上,查不出來
Empty set (0.00 sec)
mysql> select a.*,b.* from tt a,order2 b where a.id=b.ID and b.id=1; -----1和私有表在一個節點上,所以查的出來
+------+-------+----+----------+---------+---------------------+
| id | name | ID | PROVINCE | SN | CREATE_TIME |
+------+-------+----+----------+---------+---------------------+
| 1 | 12314 | 1 | beijing | 2BJ0001 | 2017-04-23 21:48:08 |
+------+-------+----+----------+---------+---------------------+
1 row in set (0.00 sec)
同理:
mysql> select a.* ,b.* from order2 a,order3 b where a.id=b.id and a.id=2; --單獨都是有數據的,但是id相等的分在不同的節點上,還是不能跨節點
Empty set (0.00 sec)
mysql> select * from order2;
+----+----------+---------+---------------------+
| ID | PROVINCE | SN | CREATE_TIME |
+----+----------+---------+---------------------+
| 2 | shanghai | 2BJ0001 | 2017-05-09 15:01:33 |
| 1 | beijing | 2BJ0001 | 2017-04-23 21:48:08 |
| 3 | tianjing | 2BJ0001 | 2017-05-15 14:52:17 |
+----+----------+---------+---------------------+
3 rows in set (0.00 sec)
mysql> select * from order3;
+----+----------+---------+---------------------+
| ID | PROVINCE | SN | CREATE_TIME |
+----+----------+---------+---------------------+
| 2 | beijing | 2BJ0001 | 2017-05-15 14:56:27 |
| 1 | tianjing | 2BJ0001 | 2017-05-15 14:56:35 |
| 3 | shanghai | 2BJ0001 | 2017-05-15 14:56:17 |
+----+----------+---------+---------------------+
3 rows in set (0.00 sec)
mysql> /*!mycat:catlet=demo.catlets.ShareJoin */ select b.sn,b.CREATE_TIME,a.CREATE_TIME from order2 a,order3 b where a.id=b.id;
+---------------------+----+---------+---------------------+
| CREATE_TIME | id | sn | CREATE_TIME |
+---------------------+----+---------+---------------------+
| 2017-04-23 21:48:08 | 1 | 2BJ0001 | 2017-05-15 14:56:35 |
| 2017-05-09 15:01:33 | 2 | 2BJ0001 | 2017-05-15 14:56:27 |
| 2017-05-15 14:52:17 | 3 | 2BJ0001 | 2017-05-15 14:56:17 |
+---------------------+----+---------+---------------------+
以上是“Mycat中如何配置schmea.xml”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。