centos9+mysql8.0下mycat1.6部署

news2024/9/23 5:34:01

#创作灵感#

整理一下mysql代理技术,这个当时是和mysql集群部署一个项目的,一并整理出来供参考。

1、环境准备

此处使用的为M-M-SS双主双从结构集群,集群部署方法放在我的上一篇文章中

防火墙可以使用firewall-cmd放行,演示环境中已提前关闭。

mycat192.168.189.141
master1192.168.189.137
master2192.168.189.138

slave1

192.168.189.139
slave2192.168.189.140

在master1与master2上创建mycat连接数据库所需账号mycatproxy

此命令只需在一台master上执行即可

(因上一篇文章设置的为二进制日志同步格式,所以后续操作部分不受影响,可以达成同时建立4个数据库账号的效果)

create user 'mycatproxy'@'192.168.189.141' identified by 'Liumuquan@123';
grant all on *.* to 'mycatproxy'@'192.168.189.141' ;
flush privileges;

1、配置JAVA环境

这里使用官方下载地址,需要使用oracle账户,国内镜像源位置变动比较频繁保存的两个都已经丢失了。

Java 存档下载 - Java SE 8 (oracle.com)

注意此处jdk版本

[root@mycat ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@mycat ~]# ln -s /usr/local/jdk1.8.0_91/ /usr/local/java
[root@mycat ~]# vim /etc/profile
#文件最下面添加环境变量
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
#保存退出
[root@mycat ~]# source /etc/profile
[root@mycat ~]# env |grep JAVA
JAVA_HOME=/usr/local/java
[root@mycat ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

2、Mycat部署

下载mycat

官网地址:

https://github.com/MyCATApache/Mycat-download-old

百度云:

链接:https://pan.baidu.com/s/1oR4poMbueCqF9-lcWyoMFw?pwd=j59f 
提取码:j59f 

配置mycat

解压

[root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
[root@mycat ~]# ls /usr/local/mycat/
bin  catlet  conf  lib  logs  version.txt
[root@mycat ~]# vim /usr/local/mycat/conf/server.xml
编辑mycat前端文件

注销多余账号

原文件

注释后

启动管理员账号

注释完后往上翻可以找到,原文件

修改mycat管理的库,库名称为mydb2,修改后

保存退出,mycat前端配置完成

编辑mycat后端文件

配置内容较多,建议将该文件备份一份,进入文件后清理掉所有注释行,方便后续配置,本文档没有关于分表操作内容(后端工程师按需配置,此次只是数据库代理演示)table部分也进行了删除

初步清理完的文件内容如下

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="localhost:3306" user="root"
                                   password="123456">
                        <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
                </writeHost>
                <writeHost host="hostS1" url="localhost:3316" user="root"
                                   password="123456" />
        </dataHost>
</mycat:schema>

修改后

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="mydb2" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="mydb2" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master1" url="master1:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave1" url="slave1:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        <writeHost host="master2" url="master2:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave2" url="slave2:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        </dataHost>
</mycat:schema>

注释版

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="管理的数据库名称" checkSQLschema="false" sqlMaxLimit="100" dataNode="数据节点名称">
        </schema>
        <dataNode name="数据节点名称" dataHost="集群名称" database="管理的数据库名称" />
        <dataHost name="集群名称" maxCon="最大连接数" minCon="最小连接一般用于数据库优化" balance="开启读写分离是1,不开启是0" writeType="工作模式备份是0,负载均衡是1" dbType="数据库类型(mysql或sqlserver等)" dbDriver="数据库驱动native为本地型" switchType="切换模式"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master1" url="master1:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave1" url="slave1:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        <writeHost host="master2" url="master2:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave2" url="slave2:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        </dataHost>
</mycat:schema>
mysql8.0+mycat1.6特有步骤

mysql5+mycat1.5不需要进行此操作,此处产生原因应该为新版本特有的默认加密验证方式

ALTER USER 'mycatproxy'@'192.168.189.141' IDENTIFIED WITH mysql_native_password BY 'Liumuquan@123';

#修改mycatproxy验证方式

ALTER USER 'mycatproxy'@'192.168.189.141' IDENTIFIED BY 'Liumuquan@123' PASSWORD EXPIRE NEVER;

#设定该账号密码强制永不过期

flush privileges;
增加mysql尝试连接限制

排错操作非必要

有时会出现因为延迟反复连接导致连接溢出报错,可以通过刷新连接池解决

在master1上执行

mysqladmin flush-hosts -uroot -p'Liumuquan@123'

2、启动Mycat

[root@mycat conf]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...
[root@mycat conf]# netstat -anpt | grep 8066
tcp6       0      0 :::8066                 :::*                    LISTEN      2218/java
[root@mycat conf]# ps aux | grep mycat

若启动失败可以通过mycat日志检查

安装mariadb(mysql客户端程序)登录本机

yum install -y mariadb
mysql -hmycat -uroot -p123456 -P8066
#此处为前端文件中设置的账户密码

可以对集群中的mydb2库进行修改

排错:

如果登陆上后 use mydb2;切换库命令反应极慢,并且show表报错,可以尝试将schema.xml 文件中write 节点的url改为 127.0.0.1:3306,此处原因目前不明确,这个方式纯属经验积累,查找了一下没有相关文档希望有大佬可以留言讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nature Communications|柔性高密度、高灵敏应变传感器阵列(柔性应变传感/界面调控/电子皮肤/柔性电子)

复旦大学武利民( Limin Wu)和李卓( Zhuo Li)团队,在《Nature Communications》上发布了一篇题为“High-density, highly sensitive sensor array of spiky carbon nanospheres for strain field mapping”的论文。论文内容如下: 一、 摘要 在工程应用中,准确地映射应变…

SQL 删除emp_no重复的记录,只保留最小的id对应的记录。

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 删除emp_no重…

CDGA|数据治理:标准化处理与确保数据可溯源性

在当今信息爆炸的时代&#xff0c;数据已成为企业决策、科学研究和政府管理的核心要素。然而&#xff0c;随着数据量的不断增加和来源的多样化&#xff0c;数据治理成为了一个亟待解决的问题。特别是在处理复杂数据时&#xff0c;标准化处理和确保数据的可溯源性显得尤为重要。…

etcd 实现分布式锁

10 基于 Etcd 的分布式锁实现原理及方案

Python算法分析学习目标及能力验证

1、突破编程的关键点 不破不立&#xff0c;如何破&#xff1f;如何立&#xff1f; 人生苦短&#xff0c;我用python 目标&#xff1a;不在于多&#xff0c;而在于准&#xff1b; 验证&#xff1a;必须量化&#xff0c;否则都是虚夸。 那么目标怎么准确可量化呢&#xff1f; …

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日&#xff0c;在2024世界人工智能大会上&#xff0c;容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上&#xff0c;容联云发布了容犀智能大模型应用升级&#xff0c;该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…

动态规划的一种常见技巧

动态规划是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。 动态规划并不是一种算法&#xff0c;而是一种思想&#xff0c;或者说策略 动态规划的思想就是将大问题分解成一个一个的小问题&#xff0c;聚焦到每个小问题并逐个击破&#xff0c;小问题解决了就没有大问…

数据融合工具(7)文本属性值规范化处理

一、需求背景 数据检查方案中&#xff0c;对文本属性值的检查一般包括以下内容&#xff1a; 检查属性值中不能含有不合理的标点符号&#xff08;“&#xff0c;”、“&#xff1f;”、空格、换行符等&#xff09;&#xff1b; 确认全部属性字段是否为半角&#xff1b; 名称简…

FastAPI 学习之路(四十二)利用Docker部署发布

我们之前的部署都是基于本地的部署&#xff0c;我们这次来看下&#xff0c;如何使用docker部署我们的fastapi项目。 编写Dockerfile ①&#xff1a;首先编写一个docker镜像的制作文件Dockerfile FROM python:3.10RUN pip install fastapi uvicorn aiofiles sqlalchemy pytho…

led灯什么牌子的质量好呢?盘点五款高口碑的led灯

很多新手小白在选购护眼台灯前&#xff0c;都会思考led灯什么牌子的质量好呢&#xff1f;这因为有的无良商家因为想要降低成本&#xff0c;使用一些廉价低劣的处理器&#xff0c;led灯的电压和功率都难以保证&#xff0c;有的甚至会产生有害的辐射&#xff0c;对人体的健康造成…

基于web、dns、nfs的综合实验

题目&#xff1a; 现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 no…

win11下部署Jenkins,build c#项目

一个c#的项目&#xff0c;由于项目经理总要新版本测试&#xff0c;以前每次都是手动出包&#xff0c;现在改成jenkins自动生成&#xff0c;节省时间。 一、下载Jenkins&#xff0c; 可以通过清华镜像下载Index of /jenkins/windows-stable/ | 清华大学开源软件镜像站 | Tsingh…

低压电柜导线颜色标准

低压电柜导线颜色标准主要遵循以下规则&#xff1a;‌ 保护导线&#xff08;‌PE&#xff09;‌必须采用黄绿双色&#xff0c;‌这是为了明确标识接地线路&#xff0c;‌确保安全。‌ 动力电路的中线&#xff08;‌N&#xff09;‌和中间线&#xff08;‌M&#xff09;‌必须…

Windows 如何安装和卸载 OneDrive?具体方法总结

卸载 OneDrive 有人想问 OneDrive 可以卸载吗&#xff1f;如果你不使用当然可以卸载&#xff0c;下面是安装和卸载 OneDrive 中的卸载应用具体操作步骤&#xff1a; 卸载 OneDrive 我们可以从设置面板中的应用选项进行卸载&#xff0c;打开设置面板之后选择应用&#xff0c;然…

人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作与代码详解。OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它提供了各种视觉处理函数&am…

《python程序语言设计》2018版第5章第55题利用turtle绘制平方函数,我用的是我之前的解题,有点扛不住了。兄弟们

直接上图 import turtleturtle.speed(20) turtle.penup() # 这里就是我理解的平方函数的概念&#xff0c;不知道对不对 for i in range(-18, 19):turtle.goto(i, i ** 2)turtle.pendown()turtle.hideturtle() turtle.done()只有平方函数的结果。没有横线竖线。各位兄弟们自己脑…

硅谷甄选4(项目主体)

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue&#xff08;以home组件为例&#xff09; 安装插件&#xff1a; 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } fro…

【Python学习笔记】调参工具Optuna + 泰坦尼克号案例

【Python学习笔记】调参工具Optuna&泰坦尼克号案例 背景前摇&#xff1a;&#xff08;省流可不看&#xff09; 最近找了份AI标注师的实习&#xff0c;但是全程都在做文本相关的活&#xff0c;本质上还是拧螺丝&#xff0c;就想着学点调参、部署什么的技能增加一些竞争力&a…

昇思MindSpore学习笔记6-02计算机视觉--ResNet50迁移学习

摘要&#xff1a; 记录MindSpore AI框架使用ResNet50迁移学习方法对ImageNet狼狗图片分类的过程、步骤。包括环境准备、下载数据集、数据集加载、构建模型、固定特征训练、训练评估和模型预测等。 一、概念 迁移学习的方法 在大数据集上训练得到预训练模型 初始化网络权重参数…

爬虫-浏览器自动化

什么是selenium selenium是浏览器自动化测试框架&#xff0c;原本用于网页测试。但到了爬虫领域&#xff0c;它又成为了爬虫的好帮手。有了 selenium&#xff0c;我们便不再需要判断网页数据加载的方式&#xff0c;只要让 selenium 自动控制浏览器&#xff0c;就像有双无形的手…