久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MyCat怎么實現分庫分表

151次閱讀
沒有評論

共計 8279 個字符,預計需要花費 21 分鐘才能閱讀完成。

本篇內容介紹了“MyCat 怎么實現分庫分表”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

項目環境: 

192.168.8.30  mycat

192.168.8.31  node1

192.168.8.32  node2

192.168.8.33  node3

三個節點 MySQL 均為單實例

一、創建測試庫

node1

create database testdb01;
create database testdb02;
create database testdb03;

node2

create database testdb13;
create database testdb14;
create database testdb15;

node3

create database testdb25;
create database testdb26;
create database testdb27;

二、配置 schema.xml

?xml version= 1.0 ? 
 !DOCTYPE mycat:schema SYSTEM  schema.dtd 
 mycat:schema xmlns:mycat= http://io.mycat/ 
  schema name= mycatdb  checkSQLschema= false  sqlMaxLimit= 100  
  table name= user04  dataNode= dn$1-3,dn$13-15,dn$25-27  rule= sharding-by-murmur-user04-id /table 
  /schema 
 !--  dataNode name= dn1$0-743  dataHost= localhost1  database= db$0-743 
 /  -- 
  dataNode name= dn1  dataHost= node1  database= testdb01  / 
  dataNode name= dn2  dataHost= node1  database= testdb02  / 
  dataNode name= dn3  dataHost= node1  database= testdb03  / 
 
  dataNode name= dn13  dataHost= node2  database= testdb13  / 
  dataNode name= dn14  dataHost= node2  database= testdb14  / 
  dataNode name= dn15  dataHost= node2  database= testdb15  / 
 
  dataNode name= dn25  dataHost= node3  database= testdb25  / 
  dataNode name= dn26  dataHost= node3  database= testdb26  / 
  dataNode name= dn27  dataHost= node3  database= testdb27  / 
 
  !-- dataNode name= dn4  dataHost= sequoiadb1  database= SAMPLE  / 
   dataNode name= jdbc_dn1  dataHost= jdbchost  database= db1  / 
 dataNode name= jdbc_dn2  dataHost= jdbchost  database= db2  / 
 dataNode name= jdbc_dn3   dataHost= jdbchost  database= db3  /  -- 
 dataHost name= node1  maxCon= 1000  minCon= 10  balance= 1 
 writeType= 0  dbType= mysql  dbDriver= native  switchType= 1  slaveThreshold= 100 
  heartbeat select user() /heartbeat 
  !-- can have multi write hosts -- 
  writeHost host= 192.168.8.31  url= 192.168.8.31:3306  user= root  password= mysql /writeHost 
  /dataHost 
  dataHost name= node2  maxCon= 1000  minCon= 10  balance= 1 
 writeType= 0  dbType= mysql  dbDriver= native  switchType= 1  slaveThreshold= 100 
  heartbeat select user() /heartbeat 
  !-- can have multi write hosts -- 
  writeHost host= 192.168.8.32  url= 192.168.8.32:3306  user= root  password= mysql /writeHost 
  /dataHost 
  dataHost name= node3  maxCon= 1000  minCon= 10  balance= 1 
 writeType= 0  dbType= mysql  dbDriver= native  switchType= 1  slaveThreshold= 100 
  heartbeat select user() /heartbeat 
  !-- can have multi write hosts -- 
  writeHost host= 192.168.8.33  url= 192.168.8.33:3306  user= root  password= mysql /writeHost 
  /dataHost 
 /mycat:schema

三、配置 rule.xml

tableRule name= sharding-by-murmur-user04-id 
  rule 
  columns id /columns 
  algorithm murmur-id /algorithm 
  /rule 
 /tableRule 
 function name= murmur-id   >

四、配置 server.xml

 user name= root  defaultAccount= true 
 property name= password mysql /property 
 property name= schemas mycatdb /property 
 /user

五、啟動 mycat

/usr/local/mycat/bin/mycat start

查看 mycat 日志

STATUS | wrapper | 2018/11/22 16:48:27 | --  Wrapper Started as Daemon
STATUS | wrapper | 2018/11/22 16:48:27 | Launching a JVM...
INFO | jvm 1 | 2018/11/22 16:48:27 | OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0
INFO | jvm 1 | 2018/11/22 16:48:29 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2018/11/22 16:48:29 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2018/11/22 16:48:29 | 
INFO | jvm 1 | 2018/11/22 16:48:34 | MyCAT Server startup successfully. see logs in logs/mycat.log

六、登錄 MySQL 查看邏輯表

mysql -uroot -pmysql -P8066 -h292.168.8.30
mysql  show databases;
+----------+
| DATABASE |
+----------+
| mycatdb |
+----------+
1 row in set (0.00 sec)
mysql  use mycatdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql  show tables;
+-------------------+
| Tables in mycatdb |
+-------------------+
| order01 |
| orderdetail01 |
| user01 |
| user02 |
| user03 |
| user04 |
+-------------------+
6 rows in set (0.01 sec)
mysql  select * from user04;
ERROR 1105 (HY000): Table  testdb03.user04  doesn t exist
mysql  drop table if exists user04;
Query OK, 0 rows affected, 1 warning (0.15 sec)
mysql  create table user04 (
 -  id int not null auto_increment,
 -  name varchar(64),
 -  primary key (id)
 -  );
Query OK, 0 rows affected (0.61 sec)

七、插入測試數據

insert into user04(id,name) values(1, steven 
insert into user04(id,name) values(2, steven 
insert into user04(id,name) values(3, steven 
insert into user04(id,name) values(4, steven 
insert into user04(id,name) values(5, steven 
insert into user04(id,name) values(6, steven 
insert into user04(id,name) values(7, steven 
insert into user04(id,name) values(8, steven 
insert into user04(id,name) values(9, steven 
insert into user04(id,name) values(10, steven 
insert into user04(id,name) values(11, steven 
insert into user04(id,name) values(12, steven 
insert into user04(id,name) values(13, steven 
insert into user04(id,name) values(14, steven 
insert into user04(id,name) values(15, steven 
insert into user04(id,name) values(16, steven 
insert into user04(id,name) values(17, steven 
insert into user04(id,name) values(18, steven 
insert into user04(id,name) values(19, steven 
insert into user04(id,name) values(20, steven 
insert into user04(id,name) values(21, steven 
insert into user04(id,name) values(22, steven 
insert into user04(id,name) values(23, steven 
insert into user04(id,name) values(24, steven 
insert into user04(id,name) values(25, steven 
insert into user04(id,name) values(26, steven 
insert into user04(id,name) values(27, steven 
insert into user04(id,name) values(28, steven 
insert into user04(id,name) values(29, steven 
insert into user04(id,name) values(30, steven 
insert into user04(id,name) values(31, steven 
insert into user04(id,name) values(32, steven 
insert into user04(id,name) values(33, steven 
insert into user04(id,name) values(34, steven 
insert into user04(id,name) values(35, steven 
insert into user04(id,name) values(36, steven 
insert into user04(id,name) values(37, steven 
insert into user04(id,name) values(38, steven 
insert into user04(id,name) values(39, steven 
insert into user04(id,name) values(40, steven 
insert into user04(id,name) values(41, steven 
insert into user04(id,name) values(42, steven 
insert into user04(id,name) values(43, steven 
insert into user04(id,name) values(44, steven 
insert into user04(id,name) values(45, steven 
insert into user04(id,name) values(46, steven 
insert into user04(id,name) values(47, steven 
insert into user04(id,name) values(48, steven 
insert into user04(id,name) values(49, steven 
insert into user04(id,name) values(50, steven

八、驗證數據

三個 node 只在 testdb01-03,testdb13-15,testdb25-27,所以除了這 9 個物理庫之外,其他庫查不到分片。

下面在三個 node 分別驗證出分片信息:

node1

mysql  select * from testdb01.user04;
+----+--------+
| id | name |
+----+--------+
| 8 | steven |
| 14 | steven |
| 16 | steven |
| 17 | steven |
| 34 | steven |
| 49 | steven |
+----+--------+
6 rows in set (0.00 sec)
mysql  select * from testdb02.user04;
+----+--------+
| id | name |
+----+--------+
| 9 | steven |
| 10 | steven |
| 44 | steven |
| 45 | steven |
| 46 | steven |
| 48 | steven |
+----+--------+
6 rows in set (0.00 sec)
mysql  select * from testdb03.user04;
+----+--------+
| id | name |
+----+--------+
| 11 | steven |
| 24 | steven |
| 33 | steven |
| 35 | steven |
| 40 | steven |
+----+--------+
5 rows in set (0.00 sec)

node2

mysql  select * from testdb13.user04;
+----+--------+
| id | name |
+----+--------+
| 20 | steven |
| 25 | steven |
| 38 | steven |
| 39 | steven |
+----+--------+
4 rows in set (0.00 sec)
mysql  select * from testdb14.user04;
+----+--------+
| id | name |
+----+--------+
| 1 | steven |
| 41 | steven |
| 50 | steven |
+----+--------+
3 rows in set (0.01 sec)
mysql  select * from testdb15.user04;
+----+--------+
| id | name |
+----+--------+
| 12 | steven |
| 18 | steven |
| 32 | steven |
| 36 | steven |
+----+--------+
4 rows in set (0.00 sec)

node3

mysql  select * from testdb25.user04;
+----+--------+
| id | name |
+----+--------+
| 6 | steven |
| 13 | steven |
| 19 | steven |
| 23 | steven |
| 27 | steven |
| 28 | steven |
| 29 | steven |
| 31 | steven |
| 37 | steven |
+----+--------+
9 rows in set (0.00 sec)
mysql  select * from testdb26.user04;
+----+--------+
| id | name |
+----+--------+
| 4 | steven |
| 5 | steven |
| 15 | steven |
| 22 | steven |
| 42 | steven |
+----+--------+
5 rows in set (0.00 sec)
mysql  select * from testdb27.user04;
+----+--------+
| id | name |
+----+--------+
| 2 | steven |
| 3 | steven |
| 7 | steven |
| 21 | steven |
| 26 | steven |
| 30 | steven |
| 43 | steven |
| 47 | steven |
+----+--------+
8 rows in set (0.00 sec)

“MyCat 怎么實現分庫分表”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計8279字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 灵丘县| 永嘉县| 封丘县| 滦平县| 应城市| 望城县| 华坪县| 阿鲁科尔沁旗| 时尚| 柏乡县| 乌恰县| 本溪| 金沙县| 肥东县| 和硕县| 富裕县| 惠东县| 五原县| 云安县| 宾川县| 唐海县| 丹江口市| 曲水县| 承德市| 靖安县| 香格里拉县| 灌南县| 澳门| 河源市| 定日县| 绥德县| 米林县| 西乡县| 高要市| 巩义市| 敖汉旗| 鄢陵县| 义乌市| 雷山县| 南靖县| 湟中县|