比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

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

高性能Mysql中间组件Mycat安装配置http://www.bieryun.com/3539.html

由于公司项目需要使用到读写分离,但是官方版本的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文件,

[plain] view plain copy

  1.         <user name=”mycat”>
  2.             <property name=”password”>mycat</property>
  3.             <property name=”schemas”>mycat</property>
  4.         </user>
  5.         <!– baixiong,bxyd_activity,bxyd_log,open_platform –>
  6.         <user name=”mycat1″>
  7.             <property name=”password”>mycat</property>
  8.             <property name=”schemas”>mycat</property>
  9.             <property name=”readOnly”>true</property>
  10.         </user>

上面转配置是server.xml中的,在需要读写分离的库中先把读写用户和只读用户创建出来,然后配置scheam.xml文件,

[plain] view plain copy

  1. <?xml version=”1.0″?>
  2. <!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
  3. <mycat:schema xmlns:mycat=”http://io.mycat/”>
  4.         <!– 设置库属性 –>
  5.         <schema name=”db1″ checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn1″></schema>
  6.         <schema name=”db2″ checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn2″></schema>
  7.         <schema name=”db3″ checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn3″></schema>
  8.         <schema name=”db4″ checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn4″></schema>
  9.         <!– 库分片管理的节点设置,按库设置 –>
  10.         <dataNode name=”dn1″ dataHost=”mycat_1″ database=”db1″ />
  11.         <dataNode name=”dn2″ dataHost=”mycat_1″ database=”db2″ />
  12.         <dataNode name=”dn3″ dataHost=”mycat_1″ database=”db3″ />
  13.         <dataNode name=”dn4″ dataHost=”mycat_1″ database=”db4″ /> <!– 下面是读写分离的配置 –>
  14.         <dataHost name=”mycat_1″ maxCon=”1500″ minCon=”100″ balance=”2″
  15.                           writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”1″  slaveThreshold=”300″>
  16.                 <heartbeat>select 1</heartbeat>
  17.                 <writeHost host=”bxyd_master” url=”10.29.25.149:3306″ user=”mycat”  password=”Kje09u230ifbhbhxc”>
  18.                         <readHost host=”bxyd_slave” url=”172.19.53.6:3306″ user=”mycat1″ password=”Kje09u230ifbhbhxc” />
  19.                 </writeHost>
  20.         </dataHost>
  21. </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标签下的属性,一般是上线后,需要根据实际运行的情况,分析后调优的时候进行修改。

未经允许不得转载:比尔云 » 高性能Mysql中间组件Mycat安装配置
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS