mycat
mycat是一个开源的分布式数据库系统,是一个实现了mysql协议的服务器,前端用户使用mysql客户端工具和命令行对数据库进行访问,而其后端可以用mysql原生协议与多个mysql服务器通信,也可以用jdbc协议与大多数主流数据库服务器通信
mycat的核心功能是分表分库,即将一个大表水平分割为多个小表,存储在后端不同的mysql服务器中
工作原理
mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的sql语句,首先对sql语句做了一些特定的分析:如分
片分析、路由分析、读写分离分析、缓存分析等,然后将此sql发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户
读写分离(read/write splitting)
让一部分数据库服务器处理事务性增、改、删操作(insert、update、delete),另一部分数据库服务器处理select查询操作
分库分表
当数据库达到一定规模后(比如说大几千万以上),对库和表进行切分是必须要考虑的,一般来说我们首先要进行垂直切分,即按业务分割,比如说用户相关、订单相关、统计相关等等都可以单独成库,然后进行水平切分进一步分散数据
准备四台centos7虚拟机,关闭防火墙和selinux,配置ip地址和hostname,同步系统时间,配置ip地址和hostname映射
hostname
ip
mid
192.168.29.133
node1
192.168.29.132
node2
192.168.29.138
node3
192.168.29.131
其中mid机器安装mycat中间件,其余node结点机器安装mysql
mysql配置
安装openjdk
server.xml配置文件
配置schema.xml文件
启动mycat服务
测试在宿主机进行
测试test表读写分离
测试test1表读写分离
以上两项测试与mycat中配置写结点和读结点相符,实现了读写分离和分库分表的部署
结合mysql数据库的主从复制即可实现在保证数据一致性同时提升读写效率的效果
传统主从复制部署可参考::https://blog.51cto.com/14832653/2500735
基于gtid主从复制部署可参考:https://blog.51cto.com/14832653/2508733