搭建开源数据库中间件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中间件不适用本项目,弃用了。

相关文章:
搭建开源数据库中间件MyCat2-配置mysql数据库双主双从
mycat2官网:MyCat2 前言:mycat2下载地址无法访问,不知道是不是被DNS污染了,还是需要搭梯子访问,所以我只能找到1.21的版本进行安装。搭建mycat2的前提是搭建数据库主从复制。 架构:双主双从 配置…...
Oracle 19c rac集群管理 -------- 集群启停操作过程
Oracle rac集群启停操作过程 首先查看数据库的集群的db_unique_name SQL> show parameter nameNAME TYPE VALUE ------------------------------------ ----------- --------------------------- cdb_cluster_name …...
【Java】HttpServlet类中前后端交互三种方式(query string、form表单、JSON字符串)
在前后端的交互中,前端通过以下三种方式来与后端进行交互🌟 ✅query string ✅form表单 ✅JSON字符串 下面我们将书写这三种方式的后端代码并进行讲解 1、Query String QueryString即在url中写入键值对,一般用doGet方法进行交互 代码如下 …...
【深蓝学院】移动机器人运动规划--第2章 基于搜索的路径规划--笔记
0. Outline 1. Graph Search Basis Configuration Space等概念 机器人配置: 指机器人位置和所有点的表示。 DOF: 指用于表示机器人配置所需的最小的实数坐标的数量n。 C-space: 包含机器人n维所有配置的空间。 在C-space中机器人的pose是一个点。 机器人在C-space中被表示为一…...
安装向量数据库milvus可视化工具attu
使用docker安装的命令和简单就一个命令: docker run -p 8000:3000 -e MILVUS_URL{milvus server IP}:19530 zilliz/attu:v2.3.5sunyuhuasunyuhua-HKF-WXX:~/dockercom/milvus$ docker run -p 8000:3000 -e MILVUS_URL127.0.0.1:19530 zilliz/attu:latest yarn run…...
STM32标准库开发——串口发送/单字节接收
USART基本结构 串口发送信息 启动串口一的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);初始化对应串口一的时钟,引脚,将TX引脚设置为复用推挽输出。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDef GPIO_In…...
jdk17新特性——文本块(即多行的字符串)增强
目录 一、文本块(即多行的字符串)概述二、文本块(即多行的字符串)示例2.1、jdk17之前 多行字符串处理方式2.2、jdk17及以后版本 多行字符串处理方式2.3、注意事项 三、文本块(即多行的字符串)转义字符示例3.1、jdk17及以后版本 多行字符串的转义字符处理方式示例一3.2、jdk17及…...
阿里云ECS使用docker搭建mysql服务
目录 1.确保正确安装好docker 2.安装mysql镜像 3.创建容器(设置端口映射、目录映射) 1.确保正确安装好docker 安装教程: 阿里云ECS(CentOS镜像)安装docker-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135686614?spm10…...
Windows给docker设置阿里源
windows环境搭建专栏🔗点击跳转 Windows系统的docker设置阿里源 文章目录 Windows系统的docker设置阿里源1.获得镜像加速器2.配置docker 由于我们生活在中国大陆,所以外网的访问总是那么慢又困难,用docker拉取几兆的小镜象还能忍受ÿ…...
安裝火狐和穀歌流覽器插件FoxyProxy管理海外動態IP代理
代理生態系統擁有大量有用的實用程式,使海外代理IP代理設置的使用變得簡單起來。其中一種類型叫做代理管理工具,像FoxyProxy就是該工具集比較受歡迎的。 本文將全面解析FoxyProxy擴展的功能和特性、Foxyproxy怎麼下載、以及如何在穀歌流覽器和火狐流覽器…...
C++重新入门-函数重载
1.函数重载的定义 C函数重载(Function Overloading)是指在同一作用域内,可以定义多个函数,它们具有相同的名称但参数列表不同的特性。通过函数重载,可以使用相同的函数名来实现不同的操作,提高了代码的可读…...
niushop靶场漏洞查找-文件上传漏洞等(超详细)
实战漏洞-niushop 一.端口扫描 http://www.xxx.com/index.php?s/admin/login 这里查询到后面的url有且仅有一个,目测估计是后台 访问url 发现确实是后台 二、找漏洞 Sql注入漏洞1: 点击进去 修改id www.xxx.com/index.php?s/goods/goodslist&…...
Bit Extraction and Bootstrapping for BGV/BFV
参考文献: [GHS12] Gentry C, Halevi S, Smart N P. Better bootstrapping in fully homomorphic encryption[C]//International Workshop on Public Key Cryptography. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 1-16.[AP13] Alperin-Sheriff J, Pe…...
七八分钟快速用k8s部署springboot前后端分离项目
前置依赖 k8s集群,如果没有安装,请先安装 kubectl ,客户端部署需要依赖 应用镜像构建 应用镜像构建不用自己去执行,相关镜像已经推送到docker hub 仓库,如果要了解过程和细节,可以看一下,否…...
中移(苏州)软件技术有限公司面试问题与解答(2)—— Linux内核内存初始化的完整流程1
接前一篇文章:中移(苏州)软件技术有限公司面试问题与解答(1)—— 可信计算国密标准 本文参考以下文章: 启动期间的内存管理之初始化过程概述----Linux内存管理(九) Linux初始化 特此致谢! 本…...
蓝桥杯、编程考级、NOC、全国青少年信息素养大赛—scratch列表考点
1、小小情报员(202309scratch四级24题) 1.准备工作 (1)选择背景 Colorful City; (2)保留角色小猫,选择角色Ballerina。 2.功能实现 (1)角色小猫初始位置…...
1.23 力扣图论
841. 钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个房间,你可能会在里面找到一套不…...
Vue学习笔记9--vuex(专门在Vue中实现集中式状态(数据)管理的一个Vue插件)
一、vuex是什么? 概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于…...
Operation
contents 服务器一、相关概念1.1 云服务器与实例1.2 关于域名解析延时与80端口1.3 关于备案1.4 关于SSL证书1.5 关于SSL证书的签发1.6 关于SSL证书的部署1.7 关于LNMP和LAMP1.8 关于bt面板 二、单服务器单一级域名多网站2.1 创建多个二级域名2.2 解析二级域名绑定到服务器上2.3…...
Kong关键概念 - 服务(Services)
服务(Services) 在Kong Gateway中,服务是代表外部上游(upstream)API或微服务的实体。例如,数据转换微服务、计费API等。 服务的主要属性是其URL。您可以使用一个字符串来指定URL,或者通过分别…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
