一步一步在Windows中使用MyCat负载均衡 上篇 | 您所在的位置:网站首页 › mycat配置文件配置未启动的从库 › 一步一步在Windows中使用MyCat负载均衡 上篇 |
传统关系型数据库的分布式开发通常需要自己做,不仅耗时耗力而且效果不是很理想,当想快速搭建时,最初想到的是看有没有第三方,网上牛人还是很多的,做得比较好的其中之一Mycat,它是开源的分布式数据库系统,解决数据库的负载均衡,主备复制,读写分离,简单来说就是你只管直接与mycat通讯,至于分离什么的交给它里面自己做,其它啥都不用操心。 至于什么是MyCat有什么优势,可以看看官网介绍 Mycat 数据库分库分表中间件 。 上图是MyCat架构图。 MyCat可以与HAProxy使用实现高可用数据库集群,更深入的内容自己去查,本章只详讲从0开始使用MyCat 基础篇,至少能先跑起来。 一、下载本次运行环境为windows,Linux下更好吧,然后数据库用mysql,需要java环境,下载jdk8 jdk安装配置 1. 首先去oracle官网下载并安装jdk8,添加环境变量,JAVA_HOME设置为D:\Java\jdk1.8 2. CLASSPATH设置为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 3. path系统变量追加%JAVA_HOME%\bin; 安装Mysql,需要注意的是数据库,表,字段的编码都采用utf8吧,否则插入的中文显示为乱码,具体解决方法网上查一查,去试一试。 下载MyCat,http://dl.mycat.io/ 选择最新的版本下载。 二、配置下载解压后就要先配置MyCat了,(这里不是exe文件,没有安装,配置好后直接运行startup_nowrap.bat) 打开mycat\conf里面的startup_nowrap.bat 为了降低资源占用,mycat的jvm设置在startup_nowrap.bat 可以清楚看到如下配置: “%JAVA_CMD%” -server -Xms1G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp “..\conf;..\lib*” io.mycat.MycatStartup 这里将-Xms1G改成-Xms512M,-Xmx2G改成-Xmx1024M,保存后重新启动即可。 添加Windows环境变量,MYCAT_HOME设置为安装目录D:\MycatServer1.5 修改wrapper.conf文件里的改成wrapper.java.command=D:\jdk1.8\bin\java.exe 三、连接MySQLMycat绑定MySQL 启动的配置 conf 配置文件存放配置文件: 代码语言:javascript复制 --server.xml:是Mycat服务器参数调整和用户授权的配置文件。 --schema.xml:是逻辑库定义和表以及分片定义的配置文件。 --rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。 --log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug debug级别下,会输出更多的信息,方便排查问题。 --autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件 --lib MyCAT自身的jar包或依赖的jar包的存放目录。 --logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件具体什么意思后面慢慢看。 先解决主配置,server.xml配置文件配置访问用户及权限, 修改高亮处信息,其中mycat、user为访问mycat的用户,TESTDB为mycat虚拟的数据库,供上层应用访问。 代码语言:javascript复制 123456 TESTDB 123456 TESTDB truemycat的数据库配置是在schema.xml中配置,这部分不太好理解,精简了一下,主要分schema、dataNode、dataHost三个主要配置。 节点定义了mycat的虚拟数据库为TESTDB,下面借用园友的说明: 代码语言:javascript复制 select user()以上配置注意高亮部分,配置的是每个dn对应哪个实体服务器里面哪个实体库(此处只有本机,所以都绑定到本机localhost,再添加3个不同的数据库TESTDB1\TESTDB2\TESTDB3,手动都添加要测试的表,若有多余的服务器可以将ip替换掉测试),详细的内容参考文中的注释。 经过实验 goods表:在mycat的TESTDB的虚拟表goods中添加一行记录会在 TESTDB1和TESTDB2中的表goods同步添加一行记录。 hotnews表:在mycat的TESTDB的虚拟表hotnews中添加的一行记录会随机插入 TESTDB1、TESTDB2、TESTDB3的其中一个库中的hotnews表。 其它表的测试你们自己试试。 这就是分片,靠的是分片规则,下面就来看rule。 (每个数据库中相同的表要手工提前生成表结构,否则会提示找不到此表,操作mycat时它并不能自动同步实体数据库生成,可能有方法,现在还没深入了解) rule.xml配置文件,可以先不管。 代码语言:javascript复制 id func1 user_id func1 sharding_id hash-int id rang-long id mod-long id murmur create_date partbymonth calldate latestMonth id rang-mod id jump-consistent-hash 0 2 160 partition-hash-int.txt autopartition-long.txt 3 8 128 24 yyyy-MM-dd 2015-01-01 partition-range-mod.txt 3 四、运行用管理员权限运行startup_nowrap.bat启动MyCat。 若出现上面的问题,检查java的环境是否正确和mycat的环境配置。 启动成功后会出现: #如果启动失败,请修改D:\mycat\bin\startup_nowrap.bat文件中的以下参数。默认占用内存为2G D:\dev-bin\mycat\bin>"C:\Program Files (x86)\Java\jdk1.7.0_13/bin/java" -server -Xms512m -Xmx512m -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=768m -DMYCAT_HOME=D:\ p "..\conf;..\lib\*" io.mycat.MycatStartup 然后dos中会不停的出现心跳检测,有错误信息可去mycat\logs中查看日志。 注意:如日志中出现192.168.xxx not connected 等信息,请允许对应的mysql远程访问,且先提前独自检查mysql都能正确访问。 使用navicat连接mycat,操作方式和连接物理mysql库一致,用户mycat,密码123456,端口8066 连接成功后,将看到TESTDB数据库和hotnews等数据表 在hotnews表中添加一些数据,保存 执行select * from hotnews 查看操作,然后去TESTDB1、TESTDB2、TESTDB3中查询hotnews表 MyCat中TESTDB是中间件逻辑数据库,MySQL中的testdb、testdb2、testdb3是真实的数据库。 在mycat中添加数据时若提示testdb2.hotnews不存在,则要手动在testdb2中添加相同表结构。 添加完后,可以看到hotnews记录在三个testdb、testdb2、testdb3中是均衡随机插入的。 而goods在testdb、testdb2中是一样的。 至此可以配置出MyCat了,敬请期待下篇 net下如何使用。 |
CopyRight 2018-2019 实验室设备网 版权所有 |