Mycat2+Mysql一主一从实现读写分离配置

news/2024/12/4 15:34:10/文章来源:https://www.cnblogs.com/litayun/p/18586450

Mycat2+Mysql一主一从实现读写分离配置

前置配置

  • Mysql一主一从搭建
  • Mycat2环境搭建

环境信息

ip地址 软件 角色 版本
192.168.1.19 Mysql 8.0.40-0ubuntu0.20.04.1
192.168.1.19 Mycat2 —— 1.21-release-3-14
192.168.1.20 Mysql 8.0.40-0ubuntu0.20.04.1

image-20241203184927825

操作步骤

1. 修改并增加数据源

  • 新增配置文件${mycat安装目录}/conf/datasources/ds0.datasource.json,该文件在环境搭建时应该已修改好
{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"ds0","password":"123456","type":"JDBC","url":"jdbc:mysql://localhost:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false","user":"mycat","weight":0
}
  • 增加配置文件${mycat安装目录}/conf/datasources/ds1.datasource.json,ds1为随意取的名字,与文件中name的值保持一致即可
{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"ds1","password":"123456","type":"JDBC","url":"jdbc:mysql://192.168.1.20:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false","user":"mycat","weight":0
}
  • instanceType:instanceType配置实例只读还是读写,读节点可以设置为READ

image-20241203185033513

2. 修改集群配置

  • 复制prototype.cluster.json文件为master-slave.cluster.json
cp prototype.cluster.json master-slave.cluster.json
  • 修改配置文件${mycat安装目录}/conf/cluster/master-slave.cluster.json
{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetry":3,"minSwitchTimeInterval":300,"slaveThreshold":0},"masters":["ds0"],"replicas":["ds1"],"maxCon":200,"name":"master-slave","readBalanceType":"BALANCE_ALL_READ","switchType":"NOT_SWITCH"
}
  • 解释:

    • replicas: 配置datasource目录下Mysql从机数据源名称

    • name:后面schema配置会用到

    • readBalanceType: 查询负载均衡策略

      • BALANCE_ALL(默认值):获取集群中所有数据源
      • BALANCE_ALL_READ:获取集群中允许读的数据源
      • BALANCE_READ_WRITE:获取集群中允许读写的数据源,但允许读的数据源优先
      • BALANCE_NONE:获取集群中允许写数据源,即主节点中选择
    • switchType:切换模式

      • NOT_SWITCH:不进行主从切换
      • SWITCH:进行主从切换

3. 配置物理库 schemas和mycat数据源/集群的关联关系

  • 新增配置文件${mycat安装目录}/conf/schemas/test.schema.json,命名为${数据库}.schema.json
{"schemaName": "test","targetName": "master-slave","normalTables": {}
}
  • 解释
    • schemaName:指向物理库
    • targetName:指向集群或者数据源, 这里配置与前面集群配置的name一致

测试

测试前准备

  • 开启Mysql主从的日志
#日志输出到表中 对应的表是mysql.general_log 
SET GLOBAL log_output = 'TABLE'; #打开general_log,重启后失效
SET GLOBAL general_log = 'ON';# 测试完成后将日志重写入文件
SET GLOBAL log_output = 'FILE';
SET GLOBAL general_log = 'OFF'; #关闭
  • 通过如下语句查看最近执行的语句
SELECT event_time,user_host,thread_id,server_id,command_type,CAST(argument AS CHAR(500) CHARACTER SET utf8mb4) argument
FROM mysql.general_log
ORDER BY event_time DESC;
  • 为避免干扰,可在Mysql主机使用truncate mysql.general_log命令先清空表中日志再查询

连接Mycat

image-20241203185954578

测试写入

  • 在mycat的test数据库中写入插入命令

Mysql主机结果

image-20241203105929629

Mysql从机查询结果

image-20241203110259741

  • 同步方式为ROW,可以看出从机并没有执行insert语句,但是数据已增加。尝试多次,结果一致,符合预期

测试查询

先清空mysql.general_log,并在Mycat中查询表user_info的最后三个结果

select * from `user_info` order by id desc limit 3;

两个数据库均有查询语句,符合预期

  • Mysql主库

image-20241203190843036

  • Mysql从库

image-20241203190931986

参考

  • mycat2实现读写分离
  • Mycat2权威指南 集群
  • Mycat2权威指南 逻辑库与逻辑表

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

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

相关文章

体验iOS手机群控免费苹果手机免越狱群控:银河中控全面解析

在多设备管理的需求日益增长的今天,能够高效地管理和控制多台iOS设备成为了一个重要的课题。对于不想或不能进行越狱操作的用户来说,找到一种安全、合法且高效的解决方案显得尤为重要。本章将深入探讨一款名为“银河中控”的免费苹果手机免越狱群控系统,帮助您了解其功能特性…

k8s~关于非常啰嗦的标签和选择器

总感觉k8s中定义的deplyment和service非常的啰嗦,尤其是在选择器的定义上,但没办法,它的设计总有它的道理。svc(spec.selector.app)deployment(metadata.labels.app,spec.selector.matchLabels.app)pods(metadata.labels.app)nginx的部署 下面是一个 Kubernetes YAML 文件示…

Windows11中安装SQL Server 2019

介绍 Microsoft SQL Server 是一种关系数据库管理系统 (RDBMS)。 应用程序和工具连接到 SQL Server 实例或数据库,并使用 Transact-SQL (T-SQL) 进行通信。 SQL Server Management Studio (SSMS) 是一种集成环境,用于管理任何 SQL 基础结构。 使用 SSMS 访问、配置、管理和开…

python项目安装虚拟环境

滴水成冰,世间不存在毫无意义的付出,时间终会给你答案。

边坡检测解决方案,根据实际需求来定制方案

大家好,我是星创易联的林工。今天跟大家聊一聊我们做边坡监测的那些事儿。 ​ (参考:key-iot.com.cn ) 说到边坡监测啊,最重要的就是安全。我们公司这些年一直在这个领域深耕,积累了不少经验。来,我给大家详细说说我们是怎么做的。 首先啊,我们要先摸清楚这个边坡的脾气。用我…

【科普系列】ICMPv6协议基础简介

引言在科普介绍文章《IPv6协议—互联网通信协议第六版》中介绍了IPv6协议,这次的科普主题是ICMPv6(Internet Control Message Protocol version 6),它作为IPv6网络中的核心协议之一,是网络通信中不可或缺的一部分。ICMPv6的设计继承了IPv4中ICMPv4协议的基本功能,然而,它…

ELK常用命令

# 查询 logstash ps -ef|grep logstash # elastic ps -ef|grep elastic # kibana ps -ef|grep kibana# 关闭服务,根据线程id进行kill kill -9 {#线程id}# 进入目录 cd /opt/elk7.17/ # 查看logstash日志 tail -f /opt/elk7.17/logstash/output.log tail -n 1000 logstash/…

三星硬盘维修数据恢复

常见原因: 误删除文件:用户在清理文件时不小心将重要文件误删。 硬盘格式化:用户格式化整个硬盘而忘记提前备份重要数据。 文件系统损坏:导致硬盘中的数据无法正常读取,通常表现为移动硬盘连接电脑后无法识别或提示格式化。 物理损坏:如硬盘摔落、进水、硬盘内部元件损坏…

哪些CRM系统在2024年赢得了国内市场?

在2024年,国内CRM市场呈现出新的发展趋势,其中智能化、体系化和平台化成为主流方向。随着企业数字化转型的加速和对客户关系管理的日益重视,CRM系统的重要性愈发凸显。 在这一背景下,纷享销客等业内领先的供应商依然处于市场前列,凭借其强大的功能和优质的服务赢得了广泛的…

从Delphi到Lazarus——Lazarus编程时可以使用的组件(控件)

0.前言 使用过可视化编程的人都知道在编程时组件的重要性。可以使用的组件越多,编程越方便快捷。 理论上,Delphi中的所有组件在Lazarus中都可以使用。当然,在Windows编程时多数是可以直接使用的,有些需要做适当的修改才能使用。而在Unix或Linux下编程就有些不能使用了,这涉…

# 20222309 2024-2025-1 《网络与系统攻防技术》实验7实验报告

1.实验内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有 (1)简单应用SET工具建立冒名网站 (2)ettercap DNS spoof (3)结合应用两种技术,用DNS spoof引导特定访问到冒名网站。 2.实验过程 (1)简单应用SET工具建立冒名网站…

为什么许多项目经理根本无法实现数字化转型?你做对了吗?

在当今数字化时代,数字化转型对于项目经理而言至关重要。随着科技的飞速发展,企业越来越依赖数字化手段来提高效率、降低成本、增强竞争力。项目经理作为项目的核心领导者,其在数字化转型中的作用不可忽视。然而,当前许多项目经理却难以实现数字化转型,这一现象值得我们深…