writeHost和readHost是读写的配置,一个dataHost内可以配置多个读和写。但如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost也将不可用;另一方面,MyCat会自动检测到writeHost宕机,并切换到备用的writeHost上。
七、MyCat分片
在MyCat中将表分为两种大的概念:数据量小且不需要做数据切分的表,称为非分片表;数据量大到单库性能、容量不足以支撑,数据需要通过水平切分均匀分布到不同的数据库中的表,称为分片表。而中间件最终需要处理的事情是对数据切分、聚合。
7.1 ER关系分片表
ER模型是实体关系模型,广泛采用概念模型设计方法,基本元素是实体、关系和属性。MyCat将它引入数据切分规则中,使得有互相依赖的表能够按照某一规则切分到相同的节点上,避免跨库Join关联查询。具体详情配置内容在这里不做描述请参考官方文档。
八、功能与优势
8.1 常用命令
- MyCat提供类似数据管理监控方式,可以通过MySQL命令行登录管理端口(9066)执行相应的SQL语句进行管理,也可以通过JDBC方式进行远程连接管理。
- Reload @@config命令用于更新配置文件运行该命令,不用重启即可进行配置文件更新。
- Reload @@sqlstat用来关闭和开启SQL监控分析。
- Show @@database命令用来显示MyCat数据库列表,运行结果对应schema.xml配置文件的schema子节点。
- Show @@datanode用来显示MyCat数据节点,运行结果对应schema.xml配置文件的dataNode节点。
- Show @@heartbeat用于报告心跳状态。
- Show @@connection用来获取MyCat的前端连接状态。
- Kill @@connection id,id,id 用来关闭连接。
- Show @@ cache用来查看缓存。
- Show @@datasource 用来查看数据源状态,如果配置了主从或多主,则可以切换。
- Switch @@ datasource name:index 用于切换数据源。
- Show @@syslog limit 用于显示系统日志。
- Show @@sql 显示在MyCat中执行过的语句。
- Show @@shl.show 显示慢SQL语句。
- Show @@sql.sum 显示SQL语句的整体执行情况、读写比例等。
8.2 局限性
delete操作不支持没有主键的表。没有主键的表在不同节点的顺序不同,如果执行 select ...limit...,则将出现不同的结果集。
不支持XA事务,在提交上可能回滚。
由于集群是乐观的并发控件,事务commit可能在该阶段中止,所以如果有两个事务向集群中的不同节点的同一行写入并提交,则失败的节点将中止。对于集群级别的中止,集群返回死锁错误。
整个集群的写入吞吐量由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将变得缓慢。
集群内部按照id自增长机制写入数据,比如集群中有三台可能是3,6,9这样的递增。
8.3 与Sharding-JDBC对比Sharding-JDBC
MyCat是一个中间件的第三方应用,sharding-jdbc是一个jar包。 因为MyCat是单独部署,所以使用MyCat就像是访问数据库一样,而sharding-jdbc的逻辑都是需要在工程里写的。
如果只是单独应用可以使用轻量级的Sharding-JDBC,如果多个服务都需要操作数据库则使用MyCat更合适。因为用Sharding-JDBC需要在每一个工程里边都配置上相应的分片等逻辑,而MyCat只需要配置一份单独部署。
【编辑推荐】
- 一文看懂MySQL数据库LnnoDB崩溃恢复机制
- 超详细的MySQL数据库InnoDB崩溃恢复机制总结
- NoSQL究竟是什么?了解为什么NoSQL数据库不是传统数据库的对手
- 关于MySQL数据库清理binlog日志命令总结
- 如果你能面试的时候能回答这些MySQL数据库问题,月薪2万不是问题
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0 (编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|