搭建开源数据库中间件MyCat2-配置mysql数据库双主双从

mycat2官网:MyCat2

前言:mycat2下载地址无法访问,不知道是不是被DNS污染了,还是需要搭梯子访问,所以我只能找到1.21的版本进行安装。搭建mycat2的前提是搭建数据库主从复制。

架构:双主双从

配置:3台服务器,4台数据库;其中2台服务器为数据库各装主从配置,1台服务器为数据库中间件。

版本信息:mycat1.21,mysql8.0.16

下载地址:

安装程序包:http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip

Jar包:http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar

一、配置双主双从数据库

1、使用docker创建mysql数据库

安装mysql,安装4台数据库,名称和端口要区分开:

docker run -d --restart=always --name mysql-master -p 3306:3306 -v /home/apps/mysql-master/conf:/etc/mysql/conf.d -v /home/apps/mysql-master/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro --security-opt seccomp=unconfined -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16 --lower_case_table_names=1

2、配置mysql数据库:需要注意的是服务器id是唯一的,第一台可以设置5,第二台6,以此类推。

创建配置文件:vim /home/apps/mysql-master/conf/my.cnf[mysqld]
# 服务器唯一id,默认值1
server-id=6
# 设置日志格式,默认值ROW
binlog_format=STATEMENT
# 二进制日志名,默认binlog
# log-bin=binlog
# 设置需要复制的数据库,默认复制全部数据库
#binlog-do-db=mytestdb
# 设置不需要复制的数据库
binlog-ignore-db=mysql
binlog-ignore-db=infomation_schema
binlog-ignore-db=sys
binlog-ignore-db=performance_schema
# 跳过缓存,解决连接数据库缓慢
skip-host-cache
skip-name-resolve

在主从配置完成前,请不要操作数据库写入,否则日志会更新,此时同步数据会不全,当然也可以用工具进行同步。

3、配置主从:

先配置master1和slave1之间的主从同步。在master1中查看日志名和postition

在slave1中修改好master1的ip、用户名、密码、端口等,分别执行以下语句,配置后开启同步,查看显示同步状态。

-- 在主机master1中查询状态
SHOW MASTER STATUS;slave1执行:
-- 配置主从同步
CHANGE MASTER TO MASTER_HOST='192.168.16.71', MASTER_USER='root',MASTER_PASSWORD='数据库密码', MASTER_PORT=3306,MASTER_LOG_FILE='binlog.000005',MASTER_LOG_POS=155;
-- 开启主从同步
START SLAVE;
-- 显示同步状态
SHOW SLAVE STATUS
-- 停止主从同步
stop slave; 
-- 重置同步配置,在从机上执行。功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件。
reset slave all;

 配置完成后查看同步状态,IO和SQL状态均为YES,表示同步成功。显示为NO,表示失败,下方有失败原因。

4、配置主-主之间的同步

其实两台主机之间的同步,和主从同步配置一样,把master1当做master2的从机,把master2当做master1的从机。

例如:在master1中配置:将ip换成master2的ip信息,相当于master2是master1的从机。以此配置master2。

master1执行:
-- 配置主从同步
CHANGE MASTER TO MASTER_HOST='192.168.16.72', MASTER_USER='root',MASTER_PASSWORD='数据库密码', MASTER_PORT=3306,MASTER_LOG_FILE='binlog.000005',MASTER_LOG_POS=155;
-- 开启主从同步
START SLAVE;
-- 显示同步状态
SHOW SLAVE STATUS
-- 停止主从同步
stop slave; 
-- 重置同步配置,在从机上执行。功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件。
reset slave all;

当所有主从配置完成后,数据库的架构就可以了。 

二、配置mycat2

参考文档:Mycat2安装配置(窗外流星) · 语雀

官网:http://www.mycat.org.cn/
资源地址:http://dl.mycat.org.cn/2.0/
安装程序包:http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
Jar包:http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar

下载安装程序包后解压,把jar包放到lib文件夹中,然后上传至中间件服务器/usr/local/目录中。mycat2依赖组件有:mysql8数据库,java8

1、安装mysql数据库

在数据库中间服务器中,需要安装mysql数据库当做逻辑库

配置yum源:

下载链接:https://dev.mysql.com/downloads/repo/yum/

# 下载mysql8 yum源

wget https://repo.mysql.com//mysql80-community-release-el8-9.noarch.rpm

# 安装mysql8 yum源

rpm -ivh mysql80-community-release-el8-9.noarch.rpm

# 安装mysql8社区版

yum -y install mysql-community-server

# 启动mysql并加入开机自启

systemctl enable mysqld --now

tips:

# 找到mysql初始密码
grep "password" /var/log/mysqld.log
# 修改mysql密码,密码要强密码,不然会提示不符合规则
ALTER USER 'root'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;

mysql8.0.35授权远程登录
use mysql;
update user set user.Host='%'where user.User='root';
flush privileges; 

2、安装java8

参考资料:Jenkins安装多个jdk版本,并在项目中选择对应jdk版本_jenkins指定编译项目的jdk版本-CSDN博客

安装好后,解压到/usr/local,并配置vim /etc/profile,在最后加上java环境变量

export JAVA_HOME=/usr/local/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

验证:java -version

3、配置mycat2

配置逻辑梳理:

a、先做基本默认结构,连通mycat2的8066端口,可以访问成功;

b、配置schemas逻辑库;

c、配置clusters集群;

d、配置datasources数据源。

mycat2命令:

后台启动MyCat:./mycat start
查看启动状态:./mycat status
停止:./mycat stop
重启:./mycat restart
前台启动并在控制台打印日志(ctrl+c停止):./mycat console

目录结构如下:

1).配置数据源datasources

cd /usr/local/mycat/conf/datasources

vim prototypeDs.datasource.json

然后进入bin目录,启动mycat2,./mycat console

本地网络主机使用数据库连接软件,如navicat,地址是中间件服务器地址,端口为8066,连接成功即可创建成功。

2).创建逻辑库schemas

连接到8066端口mysql数据库,创建项目所需要的数据库,这个是逻辑库的名称,创建的名称和实际数据库名称一样即可。其他条件不用加,例如特定字符集。

CREATE DATABASE database_name;

在此路径下schemas,就可以看到以数据库名自动建立的逻辑库json文件。 

编辑新增的逻辑库json文件:

新增:"targetName":"wms",

这是集群名称,后面会和cluster对应,注意这是json文件,增加一行后面要加逗号,

3).创建clusters集群

回到conf文件目录,进入clusters文件夹。复制默认集群配置文件prototype.cluster.json为新名称的集群

cp prototype.cluster.json wms.cluster.json

编辑文件wms.cluster.json,其中masters和replicas是配置主从数据库服务器的,名称和后续数据源配置统一。注意故障自动切换需要搭配timer时间配置,否则无效。

{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetry":3,"minSwitchTimeInterval":300,"slaveThreshold":0},"masters":["master1","master2"],"maxCon":200,"name":"wms","readBalanceType":"BALANCE_ALL","switchType":"SWITCH","replicas":["master2","slave1","slave2"],"timer":{"initialDelay": 30,"period":5,"timeUnit":"SECONDS"}
}

4).配置datasources数据源

进入datasources目录,复制默认的prototypeDs.datasource.json文件,分别为主从数据库,以此文件名为master1,master2,slave1,slave2开头。

依次编辑数据源文件: 

以master1为例:vim master1.datasource.json

{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"master1","password":"数据库密码","type":"JDBC","url":"jdbc:mysql://192.168.12.12:3306/abc_wms?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8","user":"root","weight":0
}

 以slave1为例:vim slave1.datasource.json

{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"slave1","password":"数据库密码","type":"JDBC","url":"jdbc:mysql://192.168.12.14:3306/abc_wms?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8","user":"root","weight":0
}

 5).启动mycat2

mycat2命令:

后台启动MyCat:./mycat start
查看启动状态:./mycat status
停止:./mycat stop
重启:./mycat restart
前台启动并在控制台打印日志(ctrl+c停止):./mycat console 

可以先用./mycat console,查看是否有报错信息,后续正式用后台启动mycat。

三、使用mycat2

项目中配置信息,修改为mycat2的服务器地址,用户名和密码,即可使用mycat2,会根据配置的信息自动切换查询和新增的服务器。

以spring-boot的java项目为例,在这里修改为mycat2的连接信息。

遇到的问题:

本人才疏学浅,没有找到这个问题如何解决,因为此问题,项目可视化大屏数据无法展示,不清楚是什么问题导致的也没有解决方案,因为直接上了正式环境,所以有点影响,结果mycat中间件不适用本项目,弃用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414004.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线App封装技术:HTML5的新生命

HTML5封装的魅力所在HTML5带来了丰富的多媒体功能、地理位置服务、离线存储等特性,使得Web应用的体验更加接近原生App。封装HTML5到App中,可以大大缩短开发周期,降低开发成本,并且一次编写,多平台运行,极大…

一套可以替代人工的Cnc机床自动上下料机器人

Cnc机床自动上下料|整体解决方案 CNC机床自动上下料是指通过自动化设备和系统,实现CNC机床在加工过程中自动进行上下料操作。这种自动化系统通常包括自动送料机和卸料机,可以根据加工工件的尺寸和形状自动调整上下料的位置和角度,从而提高生产…

Git提交 ssh: connect to host github.com port 22: Connection timed out解决方案

你们好,我是金金金。 场景 之前都是好好的,不知道今天为什么提交代码就这样了 排查 根据英文可以看出,ssh端口号被拒绝了,22号端口不行,那就换一个端口 造成error的原因 ssh端口被拒绝 解决 找到.ssh文件&#xff…

【数据库原理】(27)数据库恢复

在数据库系统中,恢复是指在发生某种故障导致数据库数据不再正确时,将数据库恢复到已知正确的某一状态的过程。数据库故障可能由多种原因引起,包括硬件故障、软件错误、操作员失误以及恶意破坏。为了确保数据库的安全性和完整性,数…

RK3568 android11 移植 v4l2loopback 虚拟摄像头

一,v4l2loopback 简介 v4l2loopback是一个Linux内核模块,它允许用户创建虚拟视频设备。这种虚拟视频设备可以用于各种用途,例如将实际摄像头的视频流复制到虚拟设备上,或者用于视频流的处理和分析等。v4l2loopback的主要作用是创…

python数字图像处理基础(十)——背景建模

目录 背景建模背景消除-帧差法混合高斯模型 背景建模 背景建模是计算机视觉和图像处理中的一项关键技术,用于提取视频中的前景对象。在视频监控、运动检测和行为分析等领域中,背景建模被广泛应用。其基本思想是通过对视频序列中的像素进行建模&#xff…

【RT-DETR有效改进】轻量化CNN网络MobileNetV2改进特征提取网络

前言 大家好,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持ResNet32、ResNet101和PP…

4. 示例:更改监听端口

默认Spring Boot启动是监听在8080上的。 如果8080被使用,就会报以下错误。 这个时候可以更换一个新的端口。 server: port: 8180 然后再启动,启动成功并且绑定到端口8180。

开源免费的可私有化部署的白板excalidraw 详细部署教程

简介 excalidraw 是一款开源免费的虚拟白板,提供一个在线的实时协作白板工具,使用户能够创建简单的图形和图示。 excalidraw 的设计目标是提供一个易于使用的绘图工具,支持团队协作,同时具有跨平台和实时协作的功能。 简单易用&…

第十五届蓝桥杯单片机组——定时器的基本原理与应用

文章目录 一、定时器介绍二、定时器的应用2.1 定时功能❗注意事项!❗什么是1T和12T 2.2 计数功能❗注意点 三、利用定时器计数功能实现555频率测量 一、定时器介绍 在没有钟表的时候,定时的方式通过有一注香的时间,或者一桶水的时间。前者烧香…

智慧灌区解决方案:针对典型灌区水利管理需求

​随着国家对农业水利的重视,各地积极推进智慧灌区建设,以实现对水资源的精准调度和科学化管理。下面我们针对典型灌区水利管理需求,推荐智慧灌区解决方案。 一、方案构成智慧水利解决方案- 智慧水利信息化系统-智慧水利平台-智慧水利公司 - 星创智慧水利 一、方案构成 (一)水…

WAF攻防相关知识点总结1--信息收集中的WAF触发及解决方案

什么是WAF WAF可以通过对Web应用程序的流量进行过滤和监控,识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击,例如SQL注入、跨站点脚本攻击(XSS)、跨站请求伪造(CSRF)等,并采取相…