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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 高性能Mysql中间组件Mycat安装配置 由于公司项目需要使用到读写分离,但是官方版本的Mysql-proxy读写分离组件太不稳定且有很多BUG,最终决定使用Mycat作为中间组件,其实读写分离只是Mycat中的一个功能,Mycat中还有分区分表等功能特性非常实用,并且还能通过Mycat-WEB进行各种监控,还是非常方便的,下面是具体的安装配置步骤。

高性能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文件,

[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标签下的属性,一般是上线后,需要根据实际运行的情况,分析后调优的时候进行修改。

原文地址http://www.bieryun.com/3539.html

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 关系型数据库 MySQL
Linux 安装 mysql 及配置存储位置
Linux 安装 mysql 及配置存储位置
109 3
|
2月前
|
存储 SQL 关系型数据库
MySQL体系结构与配置
MySQL体系结构与配置
43 0
|
16天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
15天前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
18天前
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
37 3
|
2月前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
187 8
centos7 mysql安装及配置
|
18天前
|
SQL 关系型数据库 MySQL
MySQL主从配置
MySQL主从配置
|
1天前
|
数据可视化 关系型数据库 MySQL
【IDEA】配置mysql环境并创建mysql数据库
【IDEA】配置mysql环境并创建mysql数据库
14 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL----配置双主双从
本文档详细介绍了如何在四台服务器上配置MySQL的双主双从架构。首先,通过关闭防火墙和SELinux确保网络通信畅通无阻。接着,设置各服务器的主机名和本地Host,确保名称解析正确。然后,通过YUM安装MySQL并修改初始密码。接下来,逐步配置四个节点(master01、master02、slave01、slave02),包括修改配置文件、创建用户和授权等步骤,实现主从复制。最后,通过SQL命令验证主从同步是否成功。
|
2月前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?

热门文章

最新文章