首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Mysql之Mycat读写分离及分库分表

​ Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等, 然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。 如下图: ​ 上述图片里,Orders表被分为三个分片datanode(简称dn),这三个分片是分布在两台MySQL Server上(DataHost),即datanode=database@datahost方式, 因此你可以用一台到N台服务器来分片,分片规则为(sharding rule)典型的字符串枚举分片规则,一个规则的定义是分片字段(sharding column)+分片函数(rule function), ​ 这里的分片字段为prov而分片函数为字符串枚举方式。 ​ 当Mycat收到一个SQL时,会先解析这个SQL,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,

05

pt-table-checksum工具主从一致性检查修复

当我们在进行数据库的运维工作时,很多时候会出现主从数据不一致的故障,尤其是当我们的binlog格式没有选择row模式,当主库执行一些类似于replace select或者时间函数等不确定的随机函数时,会出现从库数据和主库数据不一样。复制线程同步的时候就会报错,运营人员抽取数据就不会准确,尤其是对数据的一致性和安全性较高的金融公司。这个时候我们就要借助percona公司的pt工具来进行处理,pt-table-checksum和pt-table-sync分别检验master-slave的数据不一致并修复,避免了人工分析并筛选binlog日志进行修复的繁琐。但是对于pt工具,版本之间的差异还是比较大,尤其是pt工具的3.0.4版本并不能很好的检测出来,故而分享这个坑给诸位一线人员。

01
领券