我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mycat中如何配置schmea.xml

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mycat中如何配置schmea.xml

这篇文章主要为大家展示了“Mycat中如何配置schmea.xml”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mycat中如何配置schmea.xml”这篇文章吧。

1.基本环境

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配置

  1. <?xml version="1.0"?>

  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">

  3. <mycat:schema xmlns:mycat="http://io.mycat/">


  4.         <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">     ---默认数据节点,若新建一张表company2未在配置文件中配置,则默认建立在dn1数据节点上(私有表)

  5.                 <!-- auto sharding by id (long) -->

  6.                 <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />   ---分片表,根据对应的分片规则 分片到各个物理节点上


  7.                 <!-- global table is auto cloned to all defined data nodes ,so can join

  8.                         with any table whose sharding node is in the same data node -->


  9.                 <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />    ---全局表,每个节点上都有的表

  10.                                   ---等同于company

                                                ----等同于company2

  11.                 <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />

  12.                 <!-- random sharding using mod sharind rule -->

  13.                 <table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"

  14.                            rule="mod-long" />

  15.                 <!-- <table name="dual" primaryKey="ID" dataNode="dnx,dnoracle2" type="global"

  16.                         needAddLimit="false"/> <table name="worker" primaryKey="ID" dataNode="jdbc_dn1,jdbc_dn2,jdbc_dn3"

  17.                         rule="mod-long" /> -->

  18.                 <table name="employee" primaryKey="ID" dataNode="dn1,dn2"

  19.                            rule="sharding-by-intfile" />

  20.                 <table name="customer" primaryKey="ID" dataNode="dn1,dn2"

  21.                            rule="sharding-by-intfile">

  22.                         <childTable name="orders" primaryKey="ID" joinKey="customer_id"

  23.                                                 parentKey="id">

  24.                                 <childTable name="order_items" joinKey="order_id"

  25.                                                         parentKey="id" />

  26.                         </childTable>

  27.                         <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id"

  28.                                                 parentKey="id" />

  29.                 </table>

  30.                 <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"

  31.                         /> -->

  32.         </schema>

  33.         <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"

  34.                 /> -->


    1.         <dataNode name="dn1" dataHost="localhost1" database="examdb" />             ----数据节点对应的localhost以及真实的数据库

    2.         <dataNode name="dn2" dataHost="localhost2" database="examdb" />

    3.         <dataNode name="dn3" dataHost="localhost3" database="examdb" />




    4.         <dataHost name="localhost1" maxCon="1000" minCon="10" balance="2"            ------localhosts对应的连接配置信息

    5.                           writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

    6.                 <heartbeat>select user()</heartbeat>

    7.                 <!-- can have multi write hosts -->

    8.                 <writeHost host="hostM1" url="192.168.6.121:3306" user="root"

    9.                                    password="ESBecs00">

    10.                         <!-- can have multi read hosts -->

    11.                 </writeHost>


    12.         </dataHost>

    13.         


    14.         <dataHost name="localhost2" maxCon="1000" minCon="10" balance="2"

    15.                           writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

    16.                 <heartbeat>select user()</heartbeat>

    17.                 <!-- can have multi write hosts -->

    18.                 <writeHost host="hostM1" url="192.168.6.120:3306" user="root"

    19.                                    password="ESBecs00">

    20.                         <!-- can have multi read hosts -->

    21.                 </writeHost>


    22.         </dataHost>


    23.         <dataHost name="localhost3" maxCon="1000" minCon="10" balance="2"

    24.                           writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

    25.                 <heartbeat>select user()</heartbeat>

    26.                 <!-- can have multi write hosts -->

    27.                 <writeHost host="hostM1" url="192.168.6.119:3306" user="root"

    28.                                    password="ESBecs00">

    29.                         <!-- can have multi read hosts -->

    30.                 </writeHost>


    31.         </dataHost>

    32. </mycat:schema>

    33. ......未完待续


    全局表的查询有负载均衡的作用

    1. mysql> select * from company;   ----本应该是相同的数据,改为不同的数据是为了展示负载均衡的效果

    2. +----+-------------+

    3. | id | name |

    4. +----+-------------+

    5. | 1 | this is 119 |

    6. +----+-------------+

    7. 1 row in set (0.01 sec)


    8. mysql> select * from company;

    9. +----+-------------+

    10. | id | name |

    11. +----+-------------+

    12. | 1 | this is 120 |

    13. +----+-------------+

    14. 1 row in set (0.01 sec)


    15. mysql> select * from company;

    16. +----+-------------+

    17. | id | name |

    18. +----+-------------+

    19. | 1 | this is 121 |

    20. +----+-------------+

    21. 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;  --联合查,查不到了,因为跨节点了!
    举例:

    1. mysql> select * from order2;   ---分片表

    2. +----+----------+---------+---------------------+

    3. | ID | PROVINCE | SN | CREATE_TIME |

    4. +----+----------+---------+---------------------+

    5. | 2 | shanghai | 2BJ0001 | 2017-05-09 15:01:33 |    ---节点2上

    6. | 1 | beijing | 2BJ0001 | 2017-04-23 21:48:08 |     ---节点1上

    7. | 3 | tianjin | 2BJ0001 | 2017-05-09 15:01:45 |

    8. +----+----------+---------+---------------------+ 

    9. 3 rows in set (0.00 sec)


    10. mysql> select * from tt;    ---私有表 节点1上

    11. +------+------------+

    12. | id | name |

    13. +------+------------+

    14. | 2 | zhangsanli |

    15. | 1 | 12314 |

    16. +------+------------+

    17. 2 rows in set (0.00 sec)


    18. mysql> select a.*,b.* from tt a,order2 b where a.id=b.ID and b.id=2;   -----2和私有表不在一个节点上,查不出来

    19. Empty set (0.00 sec)


    20. mysql> select a.*,b.* from tt a,order2 b where a.id=b.ID and b.id=1;    -----1和私有表在一个节点上,所以查的出来

    21. +------+-------+----+----------+---------+---------------------+

    22. | id | name | ID | PROVINCE | SN | CREATE_TIME |

    23. +------+-------+----+----------+---------+---------------------+

    24. | 1 | 12314 | 1 | beijing | 2BJ0001 | 2017-04-23 21:48:08 |

    25. +------+-------+----+----------+---------+---------------------+

    26. 1 row in set (0.00 sec)


    同理:

    分片表和分片表条件数据如果不在一个节点上就联合查不到了!
    1. mysql> select a.* ,b.* from order2 a,order3 b where a.id=b.id and a.id=2;    --单独都是有数据的,但是id相等的分在不同的节点上,还是不能跨节点

    2. 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)


    解决办法:注解,详细用法见文档

    1. mysql> select b.sn,b.CREATE_TIME,a.CREATE_TIME from order2 a,order3 b where a.id=b.id;

    2. +---------------------+----+---------+---------------------+

    3. | CREATE_TIME | id | sn | CREATE_TIME |

    4. +---------------------+----+---------+---------------------+

    5. | 2017-04-23 21:48:08 | 1 | 2BJ0001 | 2017-05-15 14:56:35 |

    6. | 2017-05-09 15:01:33 | 2 | 2BJ0001 | 2017-05-15 14:56:27 |

    7. | 2017-05-15 14:52:17 | 3 | 2BJ0001 | 2017-05-15 14:56:17 |

    8. +---------------------+----+---------+---------------------+

以上是“Mycat中如何配置schmea.xml”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mycat中如何配置schmea.xml

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

IIS中如何安装配置PHP5.3配置

小编给大家分享一下IIS中如何安装配置PHP5.3配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!IIS安装配置PHP5.3配置的方法:首先在IIS中启用CGI
2023-06-20

vue中如何配置axios

本文小编为大家详细介绍“vue中如何配置axios”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中如何配置axios”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。配置方法首先用npm安装npm insta
2023-07-04

Ubuntu中如何配置ProFTPD

这篇文章将为大家详细讲解有关Ubuntu中如何配置ProFTPD,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、什么是ProFTPDProFTPD 是一款流行于类UNIX系统的 FTP 服务器程序,与v
2023-06-16

Nagios pnp中如何配置Nagios配置文件

这篇文章主要为大家展示了“Nagios pnp中如何配置Nagios配置文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Nagios pnp中如何配置Nagios配置文件”这篇文章吧。1.Na
2023-06-16

idea中tomcat如何配置

要配置Tomcat,您可以按照以下步骤进行操作:1. 下载Tomcat:前往Apache Tomcat官方网站(https://tomcat.apache.org)下载适合您操作系统的Tomcat版本。2. 解压Tomcat:将下载的Tom
2023-08-30

idea中如何配置tomcat

这篇文章主要介绍了idea中如何配置tomcat问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-07

Linux中Modem如何配置

小编给大家分享一下Linux中Modem如何配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Modem配置过程对于Modem的配置过程而言,我们现在一般使用kp
2023-06-16

Hadoop中KMS如何配置

这篇文章主要介绍Hadoop中KMS如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!hdfs透明加密处于数据库加密层和文件系统加密层之间。能有效地防止对文件系统的攻击,因为他的存储都是加密的。对于每个用户可以有
2023-06-02

eclipse中servlet如何配置

在Eclipse中配置Servlet,需要完成以下步骤:1. 创建一个动态Web项目:- 打开Eclipse,点击“File” > “New” > “Dynamic Web Project”。- 输入项目名称和目标运行环境,点击“Next”
2023-09-12

编程热搜

目录