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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生网关 MSE Higress,422元/月
简介: 高性能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
相关文章
|
15天前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
3月前
|
存储 SQL 关系型数据库
MySQL体系结构与配置
MySQL体系结构与配置
49 0
|
3天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
4天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
28 2
|
9天前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
2月前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
20天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
51 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
3月前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
342 8
centos7 mysql安装及配置
|
2月前
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
194 3

推荐镜像

更多