主页 > 数据库 > Mycat - 实现数据库的读写分离与高可用

Mycat - 实现数据库的读写分离与高可用

mysql主从实现

Mycat不负责任何的数据同步问题,mysql的主从复制还得从mysql层面来实现;如果没有实现mysql的主从复制,后文就都成

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

 

Mycat - 实现数据库的读写分离与高可用

 

了。

mysql的主从复制是实现读写分离的基础,具体的搭建过程请参考:mysql5.7.18的安装与主从复制,本文就不展示详细的搭建过程了。我的mysql主从信息如下

master:192.168.1.210;slave:192.168.1.211; 需要复制的数据库:mycat_db

Mycat - 实现数据库的读写分离与高可用

 

 

Mycat搭建

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 - 实现数据库的读写分离与高可用

 

 

将MyCat配置到环境变量中

[root@centos212 local]# vi /etc/profile

增加如下内容

MYCAT_HOME=/usr/local/mycat

PATH=$MYCAT_HOME/bin:$PATH

Mycat - 实现数据库的读写分离与高可用

 

 

保存后退出,执行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

搭建结果展示

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!