大规模MySQL运维陷阱:使用MyCat踩坑篇
这个问题,我并不知道MyCat有没有做过优化,比如10个分片,如果一个语句的执行会涉及到这十个分片,那在每个分片上重写语句之后,就要分别在这十个分片上执行对应的语句了,执行时是串行,还是并行?串行的话,性能必然会下降10倍以上,所以做得好点的话,就是并行了,但并行的实现方法是,在MyCat这个连接上面,创建10个线程,去处理这十个节点的执行情况,那这样的连接多了,MyCat产生的对系统的冲击就非常大了,性能还是不行。当然也可以说,这里做了连接池,没错,是可以的,但MyCat是这样做的么?这样做了性能又如何呢?如果有一个超时,整个访问就失败了。 配置文件或者配置库出问题,整个集群会出现什么情况? 前面已经说了,MyCat用的是schema.xml来配置的分库分表策略,这是一个配置文件,MyCat本身的高可用,如果配置多套的话,他们的同步问题,是如何解决的?如果没有同步(或者同步出问题,或者延迟等),某一个MyCat挂了,业务切换到其它的MyCat时,此时的情况就是,故障……故障……。因为数据都乱了。有可能造成的问题是,写入了错误的位置,进而导致整个集群的数据被写坏。感觉比直接被删了还严重。同样的问题,感觉MyCat可能会优化这点,也许会改为将其集中存储在某一个数据库中,这样集中管理的话就不需要同步了,想法是好的,但这相当于是把鸡蛋放在一个篮子里面了,如果这个配置库出问题了,业务何去何从? DDL如何进行? 这个问题也许是每个人都关心的事情了,MyCat把数据都分而不相关的分片MySQL节点了,这样很多在单点上的改表策略都不能用了,而DDL又是一个必须要保证每个节点同时完成的事情,那在分布式上面是如何保证的呢?根据我的调研,好像现在使用MyCat的人,都是通过“同一时刻启动在每一个节点上更新表结构”这样的方法来做的,当然还得选择是半夜,当然我个人觉得也是可行的,因为毕竟已经使用了它,而没有更好的办法来解决这个问题。当然咱再说后果,如果做不到无缝原子修改,那对业务的影响不是一星半点,可能会有很多SQL会报表不存在的问题。如果一个语句和另一个语句修改完成时间相差比较多的话,两个相减的时间就是故障时间了。 据我调研,MyCat还实现了自动故障切换的功能,请问这个靠谱么? (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |