集群搭建之读写分离
MySQL-Proxy下载
https://downloads.mysql.com/archives/proxy/
MySQL-Proxy安装
名字太长,把名字改成mysql-proxy
mv mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy
MySQL-Proxy配置
创建mysql-proxy.cnf文件
修改mysql-proxy.cnf文件的权限:chmod
修改rw-splitting.lua脚本
启动测试
在当前目录下,执行mysql-proxy命令,后面跟着配置文件地址mysql-proxy.cnf(因为就在当前目录下,所以写的相对路径,可改成绝对路径)
./mysql-proxy --defaults-file=mysql-proxy.cnf
执行ok后
这样再使用连接测试,发现已经能连接了
mysql -uroot -proot -h192.168.68.4 -P4040
然后update数据,发现主从服务器的数据已跟着发生改变
分库分表之MyCat实现
什么是MyCAT?
MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
MyCat有哪些作用
目前虽然传统关系数据库存在一些列的先天弊端,但NoSQL数据库又将其替代,但是如果传统数据库易于扩展和分拆就可以极大的避免单机单库在数据增删改查方面的缺陷。
MyCAT的关键特性
支持 SQL 92标准
支持Mysql集群,可以作为Proxy使用
支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用
支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群
自动故障切换,高可用性
支持读写分离,支持Mysql双主多从,以及一主多从的模式
支持全局表,数据自动分片到多个节点,用于高效表关联查询
支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
多平台支持,部署和实施简单
MyCAT架构
如图所示:MyCAT使用Mysql的通讯协议模拟成了一个Mysql服务器,并建立了完整的Schema(数据库)、Table (数据表)、User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点DataNode(MySQL Instance)上的真实物理库中,这样一来,所有能使用Mysql的客户端以及编程语言都能将MyCAT当成是Mysql Server来使用,不必开发新的客户端协议。
Mycat解决的问题
性能问题
数据库连接过多
E-R分片难处理
可用性问题
成本和伸缩性问题
Mycat读写分离
Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。