目录
一:Mycat说明
二:Mycat的安装
1.安装(版本需要匹配Jdk)
2.配置管理(版本1.6.7)
三:Mycat实现读写分离
1.建立一个读库一个写库,其中fk库字段一致,并2个表中fk_user数据不一致
2. 修改二 2 (第二步)中的配置文件
3.Mycat链接测试
四:热切换
1、建立一个备份数据库
2、配置
3.测试
4.问题以及解决方案
一:Mycat说明
说实话,一开始还是比较拒绝Mycat的,因为刚开始看到Mycat配置直接蒙蔽了。然后转而学习了Mysql-proxy,学完了Mysql-proxy的读写分离之后,想学习Mysql-proxy分库分表的管理,结果翻阅大量的资料,没有一个说可以直接支持的,所以没办法只能将其剔除在数据库篇,但是如果项目之中只要求做读写分布,又不能耦合代码,那么强烈建议学习Mysql-proxy,请移步我的另一篇博客吧从零开始java数据库篇(番外):主从复制,复制一致性(msyql-proxy);
好了,废话不多说了,基于对比过Mysql-proxy,我们首先看一下Mycat能做哪些事情吧?
最简单就是读写分离和分库分表。
二:Mycat的安装 1.安装(版本需要匹配Jdk)
wins:下载压缩包,解压,安装,提前配置好jdk环境,在conf/wrapper.onf声明到jdk的迷你的钻石目录:
ubuntu:下载tar,解压,提前安装好jdk环境
2.配置管理(版本1.6.7)Mycat的映射Mysql流程
(1)Mycat创建一个用户,一个虚拟库
(2)Mysql创建一个用户,一个库
(3)Mycat将Mysql库中的表一一映射到虚拟表中
第一步:在/conf/server.xml中添加一个虚拟用户和一个虚拟库
第二步,在Mysql库中创建一个proxy用户并授予权限,同时创建一个实体表
第三步,在/conf/schema.xml进行映射到具体的Mysql
第四步,在/conf/schema.xml映射实体库到虚拟库中(我一下子映射了3歌库)
第五步,在/conf/schema.xml映射实体表到虚拟库中
第六步,测试
用可视化工具连接,Mycat的ip:8066以及配置的虚拟用户连接(9066是管理端口)
这里有一个奇怪的问题,但是select 查询可以如下:解决方案:
解决方案,第五步的配置文件(一定是true)
三:Mycat实现读写分离 1.建立一个读库一个写库,其中fk库字段一致,并2个表中fk_user数据不一致
2. 修改二 2 (第二步)中的配置文件 3.Mycat链接测试
(1)以Mycat链接
(2)先查询一下
由上面的可知,读库的确只有2条数据。
(3)插入一下
这是去写库里看一下
再去写库看一下
致辞Mycat的读写分离就完成了
四:热切换当主数据挂了,能够及时的切换到备份数据库。
1、建立一个备份数据库为了区别,建立一个一样的备份数据库,结构一样,但是所有的用户数据为空。
2、配置重复二,2,第三步
3.测试依次挂掉不同的数据源,都是可以切换的。
4.问题以及解决方案(1) 在进行热切时,2个数据源一定要互为主从,互可复制,一方数据不一致
(2)热切时,即使主库及时恢复,这时Mycat并不会主动切换到主库,后来问了相关的运维人员,解释是这样的:安装了mycat,那么数据库对于你应用层就是透明的,你相当于单库单表的形式访问,完全没必要关心谁是切库。