mysql主从实现
Mycat不负责任何的数据同步问题,mysql的主从复制还得从mysql层面来实现;如果没有实现mysql的主从复制,后文就都成
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
了。
mysql的主从复制是实现读写分离的基础,具体的搭建过程请参考:mysql5.7.18的安装与主从复制,本文就不展示详细的搭建过程了。我的mysql主从信息如下
master:192.168.1.210;slave:192.168.1.211; 需要复制的数据库:mycat_db
Mycat搭建
Mycat是什么?是数据库中间件,介于数据库与应用之间,进行数据处理与交互的中间件服务,可以简单的理解成数据库代理,我们的应用只需要与数据库中间件交互,而无需关注复杂的数据库部署。
如上图所示,数据被分到多个分片数据库后,应用如果需要读取数据,就需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要在应用层直接处理,原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复造轮子。所以有了数据库中间件,应用只需要关注业务处理,大量的通用的数据聚合、事务、数据源切换都由数据库中间件来处理。更多Mycat信息,请查阅《Mycat权威指南》。
192.168.1.212上搭建Mycat
JDK的安装
Mycat依赖jdk,我们需要先安装jdk,必须是JDK7或更高版本;具体安装过程就不做展示了,大家可参考:virtualBox安装centos,并搭建tomcat。
Mycat安装
安装包:Mycat-server-1.6.6.1-release-20181031195535-linux.tar,在/opt目录下
[root@centos212 opt]# cp Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local
[root@centos212 local]# useradd mycat
[root@centos212 local]# chown -R mycat:mycat /usr/local/mycat
[root@centos212 local]# passwd mycat
修改mycat内存配置
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
我的linux虚拟机配置的内存大小是1GB,大家需要根据自己的实际情况进行配置
[root@centos212 local]# vi mycat/conf/wrapper.conf
wrapper.java.additional.10=-Xmx4G (大约在36行) wrapper.java.additional.11=-Xms1G 改成 wrapper.java.additional.10=-Xmx1G wrapper.java.additional.11=-Xms256M
配置hostname(若已配置则忽略)
[root@centos212 local]# vi /etc/sysconfig/network
追加一行:HOSTNAME=你的主机名(xxxx),我的主机名是centos212
[root@centos212 local]# vi /etc/hosts
在127.0.0.1和::1末尾追加你的主机名(xxxx),如下图所示,
将MyCat配置到环境变量中
[root@centos212 local]# vi /etc/profile
增加如下内容
MYCAT_HOME=/usr/local/mycat
PATH=$MYCAT_HOME/bin:$PATH
保存后退出,执行source命令使配置生效
[root@centos212 local]# source /etc/profile
配置mycat
server.xml和rule.xml先不修改,用默认的即可;只需要简单配置下schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema> <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743" /> --> <dataNode name="dn1" dataHost="localhost1" database="test_db" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.1.210:3306" user="root" password="123456" /> </dataHost> </mycat:schema>
默认有两个账号可以连接mycat的TESTDB,root:123456和user:user(在server.xml中),user账号只有只读权限。
启动mycat
[root@centos212 local]# mycat start
搭建结果展示