查看原文
其他

mycat实践篇-Mycat项目实施步骤

2016-06-28 IT哈哈

首先,全面了解Mycat的能力、目前的限制、以及可能的解决办法,然后,在此基础上,考虑是否用Mycat的分表分片功能,根据目前业务的数据模型和数据访问模式,确定几个可能的分表方案,然后对方案进行针对性的性能测试,在性能数据的基础上,最终决定采用怎样的分片策略。


了解Mycat的能力,包括如下的方面:

  • Mycat的起源和解决的目标

  • Mycat在数据库中间件方面的独特功能和定位

  • Mycat的实际案例情况

  • Mycat的优点和不足

  • Mycat所提供的监控和测试工具

  • Mycat社区的动态

其中,关于分片规则的支持和扩展、多数据库支持、SQL拦截和注解、跨库Join、读写分离、缓存功能、高可用性等方面需要比较深入的学习和理解,有助于正确的使用Mycat来解决当前的业务问题。

接下来是分析当前业务,具体内容包括如下几个方面:

  • 数据模型:重点关注数据的增长模式(实时大量增长还是缓慢增长)和规律、数据之间的关联关系

  • 数据访问模式:通过抓取系统中实际执行的SQL,分析其频率、响应时间、对系统性能和功能的影响程度

  • 数据可靠性的要求:系统中不同数据表的可靠性要求,以及操作模式

  • 事务的要求:系统中哪些业务操作是严格事务的,哪些是普通事务或可以无事务的

  • 数据备份和恢复问题:目前的备份模式,对系统的压力等

数据的模型和访问模式在很大程度上决定了未来数据分片的模式,包括哪些表用全局表、哪些用ER分片、哪些用范围分片规则、哪些用一致性Hash或自定义方式。而数据可靠性的要求,则影响到Mycat后端是采用普通的MySQL主从还是用 Gluster多写模式,事务性要求需要相关的表或者SQL尽量不会垮分片执行,对于以后制定本项目的编程约束有重要意义。

分表方案则需要确定如下一些问题:

- 哪些表要分片、什么分片规则、依赖关联关系如何解决

- 数据迁移和扩容的手段

建议根据业务分析的结果,确定两套比较合适分表方案,然后进行性能测试,选出最佳的分表方案,性能测试可以采用Mycat自带的超级工具,此工具在前面提到过,可以模拟接近真实业务数据的数据,并随机制造大量的数据供测试,是目前开源的最佳数据库性能测试工具。

在最终进入开发之前,架构师还需要给出一个编程约束,需要明确列出不能执行的SQL语句,这些约束可能包括如下几种:

  • 跨越太多节点的查询语句

  • 不能Join的表和相关的Join SQL

  • 很影响性能的复杂SQL

  • 对比较大的表的SQL操作提示

最后在开发阶段,还应该做到如下几点

  • 一开始就按照最初的分片设计和数据规模,制造大量的随机数据,进行开发和测试,尽早发现性能问题

  • 对所有的SQL进行统计分析,找出异常的SQL,包括跨越太多分片的SQL,以及执行缓慢的SQL,对这些SQL进行分析和优化

  • 时刻关注性能问题

当项目上线后,通过Mycat Web对系统进行监控,特别是服务的IO和网络指标,除此之外,对Mycat运行过程中的日志也要进行排查,告警信息可能是SQL错误,可能是Mycat Bug,及时分析处理,并积极反馈给Mycat社区,寻求帮助。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存