前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式数据库中间件Mycat2

分布式数据库中间件Mycat2

作者头像
CiiLii西里站长
发布2024-05-10 09:47:07
790
发布2024-05-10 09:47:07
举报
文章被收录于专栏:消息中间件消息中间件

安装与启动

官网可能受到DNS污染导致无法访问,下载服务失效,导致安装下载不便

可以修改操作系统的host文件添加下面行,绕过DNS解析

并刷新操作系统的host缓存

https://gitee.ciilii.com/show/news-22.html

https://gitee.ciilii.com/show/news-22.html

安装与启动

安装JDK,要求JDK1.8,非1.8环境请自行编译源码

缓存的JAR下载地址

http://dl.mycat.org.cn/2.0/

不提供安装包,只提供核心JAR包,JAR包可以独立运行,安装包是使用Java Service Wrapper做壳的,安装包请自己制作

JAR可以作为Java库引入自己业务项目中使用,Mycat2中的各个组件的设计都是可以独立使用的

jar包执行

实际上生产的启动命令

制作tar安装包

https://www.yuque.com/ccazhw/ml3nkf/gnqwyv

替换JAR的时候千万不要把旧的JAR保留在lib文件夹里面,改名也不可以,改扩展名也不可以

MySQL8安装后请设置XA RECOVER权限

GRANT XA_RECOVER_ADMIN ON . TO 'root'@'%';

安装包执行

出现权限不足请提升到管理员权限

1.13版本后,如果没有配置文件,会在第一次启动后自动创建

默认带有root账户,密码123456,并且自带默认数据源127.0.0.1:3306 root 123456

linux

windows

查看wrapper.log文件

如果出现以下字样,则说明启动成功

如果启动后遇到乱码和时区问题,请注意设置JDK设置

-Dfile.encoding=UTF-8

-Duser.timezone=GMT+8

以及JDBC的连接字符串

jdbc连接字符串关闭SSL可以提高性能

可以在java -jar 作为参数设置

也可以wrapper.conf里面设置

验证设置成功可以在mycat里执行

连接mycat的客户端参数也要设置时区

根据实际需求设置MySQL8设置时区

验证在mycat里能查询的值是预期请使用以下方法

设置输出日志

遇上配置目录不生效的情况,修改jar内的日志配置文件

例子

https://github.com/MyCATApache/Mycat2/issues/621

或者启动的时候添加

-D参数一定要写在jar路径前面

另外也可以把这个参数添加在wrapper.conf里面

Mycat2随着发展使用了不同的日志框架

到1.20为止使用slf4j接口框架,其实现是simplelogger

它的设置参考如下

simplelogger.properties

在2021-10-15号发布的1.20使用了logback,并添加了kafka连接器(lingkang提交该功能,通过更换maven依赖实现),便于记录并分析生产日志

它的设置参考如下

logback.xml

XML

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

代码语言:javascript
复制
<appender name="kafkaAppender" class="com.github.danielwegener.logback.kafka.KafkaAppender">

复制

代码语言:javascript
复制
	<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

复制

代码语言:javascript
复制
		<pattern>%message %n</pattern>

复制

代码语言:javascript
复制
		<charset>utf8</charset>

复制

代码语言:javascript
复制
	</encoder>

复制

代码语言:javascript
复制
	<topic>applog-test</topic>

复制

代码语言:javascript
复制
	<keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy"/>

复制

代码语言:javascript
复制
	<deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>

复制

代码语言:javascript
复制
	<producerConfig>bootstrap.servers=192.168.18.43:9092,192.168.18.44:9092</producerConfig>

复制

代码语言:javascript
复制
	<producerConfig>linger.ms=1000</producerConfig>

复制

代码语言:javascript
复制
	<producerConfig>acks=0</producerConfig>

复制

代码语言:javascript
复制
	<producerConfig>client.id=localhost-time-collector-logback-relaxed</producerConfig>

复制

代码语言:javascript
复制
	<producerConfig>max.block.ms=0</producerConfig>

复制

代码语言:javascript
复制
</appender>

复制

代码语言:javascript
复制
<logger name="org.apache.kafka.clients" level="error"></logger>

复制

代码语言:javascript
复制
<logger name="org.apache.kafka.clients.NetworkClient" level="error"></logger>

复制

代码语言:javascript
复制
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

复制

代码语言:javascript
复制
	<encoder>

复制

代码语言:javascript
复制
		<pattern>

复制

代码语言:javascript
复制
			%d[%level]%c{100}.%M:%L%m%n

复制

代码语言:javascript
复制
		</pattern>

复制

代码语言:javascript
复制
	</encoder>

复制

代码语言:javascript
复制
</appender>

复制

代码语言:javascript
复制
<root level="debug">

复制

代码语言:javascript
复制
	<appender-ref ref="kafkaAppender"/>

复制

代码语言:javascript
复制
	<appender-ref ref="CONSOLE" />

复制

代码语言:javascript
复制
</root>

复制

</configuration>

其中bootstrap.servers是kafka服务器的ip

不带kafka的配置如下

XML

复制代码

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

代码语言:javascript
复制
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

复制

代码语言:javascript
复制
	<encoder>

复制

代码语言:javascript
复制
		<pattern>

复制

代码语言:javascript
复制
			%d[%level]%c{100}.%M:%L%m%n

复制

代码语言:javascript
复制
		</pattern>

复制

代码语言:javascript
复制
	</encoder>

复制

代码语言:javascript
复制
</appender>

复制

代码语言:javascript
复制
<root level="debug">

复制

代码语言:javascript
复制
	<appender-ref ref="CONSOLE" />

复制

代码语言:javascript
复制
</root>

复制

</configuration>

注意设置模拟的MySQL版本

server.json

SQL

复制代码

1

代码语言:javascript
复制
"serverVersion": "5.7.33-mycat-2.0" //与后端,客户端版本对应

复制

2021-8-20号后,默认开启监控端口9066的http服务,该服务供Mycat UI监控,注意该端口不能被占用

监控页https://www.yuque.com/ccazhw/ml3nkf/gwx15x

0000-00-00 00:00:00问题

Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited

jdbc字符串添加zeroDateTimeBehavior=convertToNull

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档