欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Mycat 读写分离

程序员文章站 2022-05-02 12:19:19
Mycat 读写分离: 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。主数据库进行写操作后,数据及时同步到所读的数据库,尽可能保证读、写数据库的数据一致,比如MySQL的主从复制、Oracle的da ......

mycat 读写分离:

         读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。主数据库进行写操作后,数据及时同步到所读的数据库,尽可能保证读、写数据库的数据一致,比如mysql的主从复制、oracle的data guard、sql server的复制订阅等。


Mycat 读写分离

 

看上图  我们要进行对数据库的查询操作 当mycat收到一个sql时,会先解析这个sql,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到sql里分片字
段的值,并匹配分片函数,得到该sql对应的分片列表,然后将sql发往这些分片去执行,最后收集和处理所有分片返回的结果
数据,并输出到客户端。以select * from orders where prov=?语句为例,查到prov=wuhan,按照分片函数,wuhan返回
dn1,于是sql就发给了mysql1,去取db1上的查询结果,并返回给用户。

我们下面来进行 对mycat的操作和使用

首先  要进入 mycat的官网

mycat官网:
官网了解mycat原理。

mycat下载地址:

下载:
建议大家选择 1.6-release 最新版本。

进行使用linux部署mycat

上传 解压缩到  tar -zxvf mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -c /usr/local

会解压缩成一个mycat的文件夹,进入文件夹 显示有七个目录  bin catlet conf lib logs tmlogs version.txt ,我们只需要用到 bin 和 conf  文件夹,

进入conf 文件夹, vi ./schema.xml  来配置 schema.xml 文件  下面给大家展示一下我的配置

1 <?xml version="1.0"?> 2 <!doctype mycat:schema system "schema.dtd"> 3 <mycat:schema xmlns:mycat="http://io.mycat/"> 4 5 <schema name="testdb" checksqlschema="false" sqlmaxlimit="100"> 6 <!-- auto sharding by id (long) --> 7 <table name="tb_item" datanode="dn1,dn2,dn3" rule="auto-sharding-long" /> 8 9 </schema> 10 <datanode name="dn1" datahost="localhost1" database="dome1" /> 11 <datanode name="dn2" datahost="localhost1" database="dome2" /> 12 <datanode name="dn3" datahost="localhost1" database="dome3" /> 13 <!--<datanode name="dn4" datahost="sequoiadb1" database="sample" /> 14 <datanode name="jdbc_dn1" datahost="jdbchost" database="db1" /> 15 <datanode name="jdbc_dn2" datahost="jdbchost" database="db2" /> 16 <datanode name="jdbc_dn3" datahost="jdbchost" database="db3" /> --> 17 <datahost name="localhost1" maxcon="1000" mincon="10" balance="0" 18 writetype="0" dbtype="mysql" dbdriver="native" switchtype="1" slavethreshold="100"> 19 <heartbeat>select user()</heartbeat> 20 <!-- can have multi write hosts --> 21 <writehost host="hostm1" url="192.168.79.133:3306" user="root" 22 password="5-*8;p=etskz"> 23 </writehost> 24 </datahost> 25 </mycat:schema>

 Mycat 读写分离

配置了三个数据库,接下来看下 server.xml文件  vi ./server.xml   

直接翻到最下面 看一下用户

 1         <user name="root" defaultaccount="true">
 2                 <property name="password">root</property>
 3                 <property name="schemas">testdb</property>
 4 
 5                 <!-- 表级 dml 权限设置 -->
 6                 <!--
 7                 <privileges check="false">
 8                         <schema name="testdb" dml="0110" >
 9                                 <table name="tb01" dml="0000"></table>
10                                 <table name="tb02" dml="1111"></table>
11                         </schema>
12                 </privileges>
13                  -->
14         </user>

配置好server.xml 文件后  进入mysql  把mysql中的mysql.user表中的root 用户的 host改为%后,重启mysql,mycat连接后就可以操作表了


退出conf文件夹  进入bin 文件  

./mycat console

  当显示 

Mycat 读写分离

  已经启动成功

 

便可以使用 mycat连接mysql   mycat 默认端口号是 8066

我使用的是  centos:7

完毕!

谢谢大家!