首页 » 网站建设 » phpmycat技巧_用Mycat学会数据库读写分离分表分库

phpmycat技巧_用Mycat学会数据库读写分离分表分库

访客 2024-10-27 0

扫一扫用手机浏览

文章目录 [+]

可以理解下Mycat的背景和运用情形,这样利用起来比较有信心。

Mycat下载地址:http://dl.mycat.io/

phpmycat技巧_用Mycat学会数据库读写分离分表分库

官网有个文档,属于详细的先容,初次入门,看起来比较花韶光。

phpmycat技巧_用Mycat学会数据库读写分离分表分库
(图片来自网络侵删)

下载:

建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本。

安装:

根据不同的系统选择不同的版本。
包括linux、windows、mac,作者考虑还是非常全面的,当然,也有源码版的。
(ps:源码版的下载后,只要配置精确,就可以正常运行调试,这个赞一下。

Mycat的安装实在只要解压下载的目录就可以了,非常大略。

安装完成后,目录如下:

目录解释binmycat命令,启动、重启、停滞等catletcatlet为Mycat的一个扩展功能confMycat 配置信息,重点关注libMycat引用的jar包,Mycat是java开拓的logs日志文件,包括Mycat启动的日志和运行的日志。
配置

Mycat的配置文件都在conf目录里面,这里先容几个常用的文件:

文件解释server.xmlMycat的配置文件,设置账号、参数等schema.xmlMycat对应的物理数据库和数据库表的配置rule.xmlMycat分片(分库分表)规则

Mycat的架构实在很好理解,Mycat是代理,Mycat后面便是物理数据库。
和Web做事器的Nginx类似。
对付利用者来说,访问的都是Mycat,不会打仗到后真个数据库。

我们现在做一个主从、读写分离,大略分表的示例。
构造如下图:

做事器IP解释Mycat192.168.0.2mycat做事器,连接数据库时,连接此做事器database1192.168.0.3物理数据库1,真正存储数据的数据库database2192.168.0.4物理数据库2,真正存储数据的数据库

Mycat作为主数据库中间件,肯定是与代码弱关联的,以是代码是不用修正的,利用Mycat后,连接数据库是不变的,默认端口是8066。
连接办法和普通数据库一样,如:jdbc:mysql://192.168.0.2:8066/

server.xml

示例

重点关注下面这段,其他默认即可。

参数解释user用户配置节点--name登录的用户名,也便是连接Mycat的用户名--password登录的密码,也便是连接Mycat的密码--schemas数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如须要这个用户须要管理两个数据库db1,db2,则配置db1,dbs--privileges配置用户针对表的增编削查的权限,详细见文档吧

我这里配置了一个账号test 密码也是test,针对数据库lunch,读写权限都有,没有针对表做任何分外的权限。

schema.xml

schema.xml是最紧张的配置项,首先看我的配置文件。

参数解释schema数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应dataNode分片信息,也便是分库干系配置dataHost物理数据库,真正存储数据的数据库

每个节点的属性逐一解释:

schema:

属性解释name逻辑数据库名,与server.xml中的schema对应checkSQLschema数据库前缀干系设置,建议看文档,这里暂时设为folsesqlMaxLimitselect 时默认的limit,避免查询全表

table:

属性解释name表名,物理数据库中表名dataNode表存储到哪些节点,多个节点用逗号分隔。
节点为下文dataNode设置的nameprimaryKey主键字段名,自动天生主键时须要设置autoIncrement是否自增rule分片规则名,详细规则下文rule详细先容

dataNode

属性解释name节点名,与table中dataNode对应datahost物理数据库名,与datahost中name对应database物理数据库中数据库名

dataHost

属性解释name物理数据库名,与dataNode中dataHost对应balance均衡负载的办法writeType写入办法dbType数据库类型heartbeat心跳检测语句,把稳语句结尾的分号要加。
运用处景

数据库分表分库

配置如下:

我在192.168.0.2、192.168.0.3均有数据库lunch。

lunchmenu、restaurant、userlunch、users这些表都只写入节点dn1,也便是192.168.0.2这个做事,而dictionary写入了dn1、dn2两个节点,也便是192.168.0.2、192.168.0.3这两台做事器。
分片的规则为:mod-long。

紧张关注rule属性,rule属性的内容来源于rule.xml这个文件,Mycat支持10种分表分库的规则,基本能知足你所须要的哀求,这个必须赞一个,其他数据库中间件彷佛都没有这么多。

table中的rule属性对应的便是rule.xml文件中tableRule的name,详细有哪些分表和分库的实现,建议还是看下文档。
我这里选择的mod-long便是将数据均匀拆分。
由于我后端是两台物理库,以是rule.xml中mod-long对应的function count为2,见下面部分代码:

数据库读写分离

配置如下:

这样的配置与前一个示例配置改动如下:

删除了table分配的规则,以及datanode只有一个

datahost也只有一台,但是writehost总添加了readhost,balance改为1,表示读写分离。

以上配置达到的效果便是102.168.0.2为主库,192.168.0.3为从库。

把稳:Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,须要通过mycat的主从复制将数据复制到readhost,这个问题当时候我纠结了好久,数据写入writehost后,readhost一贯没有数据,以为是自己配置的问题,后面才创造Mycat就没有实现主从复制的功能,毕竟数据库本身自带的这个功能才是最高效稳定的。

至于其他的场景,犹如时主从和分表分库也是支持的了,只要理解这个实现往后再去修正配置,都是可以实现的。
而热备及故障专业官方推举利用haproxy合营一起利用,大家可以试试。

利用

Mycat的启动也很大略,启动命令在Bin目录:

如果在启动时创造非常,在logs目录中查看日志。

wrapper.log 为程序启动的日志,启动时的问题看这个

mycat.log 为脚本实行时的日志,SQL脚本实行报错后的详细缺点内容,查看这个文件。
mycat.log是最新的缺点日志,历史日志会根据韶光天生目录保存。

mycat启动后,实行命令不堪利,可能实际上配置有缺点,导致后面的命令没有很好的实行。

Mycat带来的最大好处便是利用是完备不用修正原有代码的,在mycat通过命令启动后,你只须要将数据库连接切换到Mycat的地址就可以了。
如下面就可以进行连接了:

连接成功后可以实行sql脚本了。

以是,可以直接通过sql管理工具(如:navicat、datagrip)连接,实行脚本。
我一贯用datagrip来进行日常大略的管理,这个很方便。

Mycat还有一个管理的连接,端口号是9906.

连接后可以根据管理命令查看Mycat的运行情形,当然,喜好UI管理办法的人,可以安装一个Mycat-Web来进行管理,有兴趣自行搜索。

简而言之,开拓中利用Mycat和直策应用Mysql机会没有差别。

常见问题

利用Mycat后总会碰着一些坑,我将自己碰着的一些问题在这里列一下,希望能与大家有共鸣:

Mycat是不是配置往后,就能完备办理分表分库和读写分离问题?

Mycat合营数据库本身的复制功能,可以办理读写分离的问题,但是针对分表分库的问题,不是完美的办理。
或者说,至今为止,业界没有完美的办理方案。

分表分库写入能完美办理,但是,不能完美办理紧张是联表查询的问题,Mycat支持两个表联表的查询,多余两个表的查询不支持。
实在,很多数据库中间件关于分表分库后查询的问题,都是须要自己实现的,而且节本都不支持联表查询,Mycat已经举措看成地非常前辈了。

分表分库的后联表查讯问题,大家通过合理数据库设计来避免。

Mycat支持哪些数据库,其他平台如 .net、PHP能用吗?

官方说了,支持的数据库包括MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,很赞。

只管即便用Mysql,我试过SQL Server,会有些小问题,由于部分语法有点差异。

Mycat 非JAVA平台如 .net、PHP能用吗?

可以用。
这一点MyCat做的也很棒。

参考

《Mycat威信指南》: http://www.mycat.io/document/Mycat_V1.6.0.pdf

官网 :http://www.mycat.io/

如果想闇练利用Mycat,建议要仔细看看官方推举的文档,可能须要花点韶光。
本文只是大略的先容下Mycat的配置,希望能快速让大家对Mycat有个认识,官方的文档理解起来也很随意马虎,只是须要的韶光更多,本文为解释的参数,请参考官方文档。

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读0 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读0 评论0