高性能Mysql中间组件Mycat安装配置

    由于公司项目需要使用到读写分离,但是官方版本的Mysql-proxy读写分离组件太不稳定且有很多BUG,最终决定使用Mycat作为中间组件,其实读写分离只是Mycat中的一个功能,Mycat中还有分区分表等功能特性非常实用,并且还能通过Mycat-WEB进行各种监控,还是非常方便的,下面是具体的安装配置步骤。

    首先去Mycat的官网:http://www.mycat.io/  下载最新版本的Mycat或者直接使用命令下载:wget 

http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz,然后解压:tar -zxvf  Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

    其实Mycat最主要的两个配置文件就是conf目录下面的server.xml和scheam.xml文件,

        <user name="mycat">
            <property name="password">mycat</property>
            <property name="schemas">mycat</property>
        </user>

        <!-- baixiong,bxyd_activity,bxyd_log,open_platform -->
        <user name="mycat1">
            <property name="password">mycat</property>
            <property name="schemas">mycat</property>
            <property name="readOnly">true</property>
        </user>
上面转配置是server.xml中的,在需要读写分离的库中先把读写用户和只读用户创建出来,然后配置scheam.xml文件,
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!-- 设置库属性 -->
        <schema name="db1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
        <schema name="db2" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2"></schema>
        <schema name="db3" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn3"></schema>
        <schema name="db4" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn4"></schema>
        <!-- 库分片管理的节点设置,按库设置 -->
        <dataNode name="dn1" dataHost="mycat_1" database="db1" />
        <dataNode name="dn2" dataHost="mycat_1" database="db2" />
        <dataNode name="dn3" dataHost="mycat_1" database="db3" />
        <dataNode name="dn4" dataHost="mycat_1" database="db4" /> <!-- 下面是读写分离的配置 -->
        <dataHost name="mycat_1" maxCon="1500" minCon="100" balance="2"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="300">
                <heartbeat>select 1</heartbeat>
                <writeHost host="bxyd_master" url="10.29.25.149:3306" user="mycat"  password="Kje09u230ifbhbhxc">
                        <readHost host="bxyd_slave" url="172.19.53.6:3306" user="mycat1" password="Kje09u230ifbhbhxc" />
                </writeHost>
        </dataHost>
</mycat:schema>

    配置完成后启动Mycat:../bin/mycat start,查看启动状态:../bin/mycat status

   接下去我们配置Mycat-WEB,进行WEB管理控制台的监控,首先下载客户端:wget http://dl.mycat.io/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz,然后解压:tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz

  在启动Mycat-WEB前必须先安装Zookeeper,因为Zookeeper是Mycat-WEB的注册中心,下载Zookeeper:wget http://dl.mycat.io/zookeeper-3.4.6.tar.gz,解压:tar -zxvf zookeeper-3.4.6.tar.gz,然后进入conf文件夹,mv zoo_smaple.cfg zoo.cfg,然后启动zookeeper:../bin/zkServer.sh start

    Zookeeper启动成功后,我们开始启动Mycat-WEB:./start.sh &,启动完成后看下监听端口是否正常,lsof -i tcp:8082

   一切准备就绪后我们就可以访问Mycat-WEB了,但是先确保你开了外网的8082端口,访问地址:http://localhost:8082/mycat

   下面是server.xml中优化配置项的说明: 

<property name="charset">utf8</property> 

字符集

<property name="processors">1</property> 

处理线程数量,默认是cpu数量。

<property name="processorBufferChunk">4096</property> 

每次读取留的数量,默认4096。

<property name="processorBufferPool">409600</property>

创建共享buffer需要占用的总空间大小。processorBufferChunk*processors*100。

<property name="processorBufferPoolType">0</property>

默认为0。0表示DirectByteBufferPool,1表示ByteBufferArena。

<property name="processorBufferLocalPercent">100</property>

二级共享buffer是processorBufferPool的百分比,这里设置的是百分比。

<property name="sequnceHandlerType">100</property>

全局ID生成方式。(0:为本地文件方式,1:为数据库方式;2:为时间戳序列方式;3:为ZK生成ID;4:为ZK递增ID生成。

<property name="useCompression">1</property>

是否开启mysql压缩协议。1为开启,0为关闭,默认关闭。

<property name="packetHeaderSize">4</property> 

指定 Mysql 协议中的报文头长度。默认 4。

<property name="maxPacketSize">16M</property>

指定 Mysql 协议可以携带的数据最大长度。默认 16M。

<property name="idleTimeout">1800000</property>

指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认 30 分钟,单位毫秒。

<property name="txIsolation">3</property>

前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为 REPEATED_READ,设置值为数字默认 3。 
READ_UNCOMMITTED = 1; 
READ_COMMITTED = 2; 
REPEATED_READ = 3; 
SERIALIZABLE = 4;

<property name="sqlExecuteTimeout">300</property>

SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒。

<property name="processorCheckPeriod">1000</property>

清理 NIOProcessor 上前后端空闲、超时和关闭连接的间隔时间。默认是 1 秒,单 
位毫秒。

<property name="dataNodeIdleCheckPeriod">300000</property> 

对后端连接进行空闲、超时检查的时间间隔,默认是 300 秒,单位毫秒。

<property name="dataNodeHeartbeatPeriod">10000</property>

对后端所有读、写库发起心跳的间隔时间,默认是 10 秒,单位毫秒。

<property name="bindIp">0.0.0.0</property>

mycat 服务监听的 IP 地址,默认值为 0.0.0.0。

<property name="serverPort">8066</property>

定义 mycat 的使用端口,默认值为 8066。

<property name="managerPort">9066</property>

定义 mycat 的管理端口,默认值为 9066。

<property name="fakeMySQLVersion">5.6</property>

mycat 模拟的 mysql 版本号,默认值为 5.6 版本,如非特需,不要修改这个值,目前支持设置 5.5,5.6,5.7 版本,其他版本可能会有问题。

<property name="useSqlStat">0</property>  

是否开启实时统计。1为开启;0为关闭 。

<property name="useGlobleTableCheck">0</property>   

是否开启全局表一致性检测。1为开启;0为关闭 。

<property name="handleDistributedTransactions">0</property>

分布式事务开关。0为不过滤分布式事务;1为过滤分布式事务;2 为不过滤分布式事务,但是记录分布式事务日志。

<property name="maxStringLiteralLength">65535</property>

默认是65535。 64K 用于sql解析时最大文本长度 
以上举例的属性仅仅是一部分,可以配置的变量很多,具体可以查看SystemConfig这个类的属性内容。 
System标签下的属性,一般是上线后,需要根据实际运行的情况,分析后调优的时候进行修改。



    

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝-琪琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值