目录
原理
读写分离实践
读写分离的实现方式
使用Mycat实现读写分离
Mycat的安装部署
Mycat的架构
环境搭建
登录mycat读写分离服务
原理
读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。
读写分离实践
绝大多数的企业的应用场景对于数据库来说都是读多写少,比如微博,明星发一条微博,上千万人读。所以为了分担数据库压力,做负载均衡,首先考虑到的就是读写分离,读写分离基于上面实现的主从复制,使用主库作为写库,从库为读库,提高数据库性能,提高IO性能。
读写分离的实现方式
为了实现读写分离,出现了很多解决方案,其中比较流行的是采用中间件做为Proxy,保持应用层代码不随数据库的变动而发生变化,这里包括Amoeba、Atlas、Cobar、Mycat、MySQL Proxy等,而Mycat是目前开源的数据库中间件中比较成熟的解决方案。
使用Mycat实现读写分离
下载安装Mycat
- Mycat官网:http://www.mycat.io/
可以了解下Mycat的背景和应用情况,这样使用起来比较有信心。
- Mycat下载地址:http://dl.mycat.io/
官网有个文档,属于详细的介绍,初次入门,看起来比较花时间
Mycat的安装部署
mycat的安装目录只要解压下载的目录就ok了。
安装完成后,目录如下:
目录 | 说明 |
bin | mycat命令,启动重启,停止等 |
catlet | catlet为mycat的一个扩展功能 |
conf | mycat配置信息,重点关注 |
lib | mycat引用的jar包,mycat是java开发的 |
logs | 日志文件,包括mycat启动的日志和运行的日志 |
配置
mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:
文件 | 说明 |
server.xml | mycat的配置文件,设置账号、参数等 |
schema.xml | mycat对应的物理数据库和数据库表的配置 |
rule.xml | mycat分片(分库分表)规则 |
Mycat的架构
Mycat是代理,Mycat后面就是物理数据库。Mycat作为主数据库中间件,肯定是与代码弱关联的,
所以代码是不用修改的,使用Mycat后,连接数据库是不变的,默认端口是8066。
环境搭建
需要三台CentOS7Master,Slave,Mycat
Master_IP:192.168.21.131
Slave_IP:192.168.21.135
Mycat_IP:192.168.21.136
mycat安装到opt目录下
配置mycat
server.xml文件配置
各配置参数含义
schema.xml文件配置
启动mycat进入bin目录。
./mycat start 使用这个命令启动
启动之后可以在logs中的wrapper.log中查看程序启动的日志。
出现这个结果表示启动正常
查看端口 netstat -anultp 9066和8066端口 9066表示业务端口 8066表示管理端口
登录mycat读写分离服务
使用navicat连接mycat,端口为8066
show @@heartbeat; #查看心跳 #RS_CODE为1表示心跳正常 为-1是连接超时
show @@datasource; #查看机器的读写分离配置情况
hostM是W写权限,hostS是R读权限
连接成功为绿色,显示库里面的表dog1
第一种验证:
关闭从服务器中的主从复制在在mycat命令行界面插入数据,查询
因为关闭了主从复制,插入新数据在主库进行,而查询的是从库,为此不会查询到新插入的数据
第二种验证:
在从服务器更改数据
在主服务器查询,数据还是原来的
在mycat命令行查询,是在从库更改之后的数据
总结:如果读写分离没有成功,配置文件有错误或者防火墙没关闭,所以要确保配置文件配置正确,防火墙关闭。