数据库进阶教学——读写分离(Mycat1.6+Ubuntu22.04主+Win10从)

目录

1、概述

2、环境准备

3、读写分离实验

3.1、安装jdk

3.2、安装Mycat

3.3、配置Mycat

3.3.1、配置schema.xml

​​​​3.3.2、配置server.xml

3.4、修改主从机远程登陆权限

3.4.1、主机

3.4.2、从机

3.5、启动Mycat

3.6、登录Mycat

3.7、验证


1、概述

  • 读写分离就是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。
  • 通过MyCat即可轻易实现上述功能。
    • 【注】Mycat是一个开源数据库中间件,是一个实现了MySQL协议的的数据库中间件服务器,我们可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问Mycat,而Mycat再使用用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,包括SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。
  • 下面为一主一从的图解: 
    • eda2b420b8b147f4a07cd2ac14fc9938.png

2、环境准备

  • 主机:阿里云服务器Ubuntu22.04
  • 从机:本地电脑Win10
  • Mycat1.6(从机Win10上)
  • java环境:jdk1.8
  • 数据库:Mysql8.0.34
  • 读写分离是基于主从复制的,如何搭建主从复制可以看这篇文章:数据库进阶教学——主从复制(Ubuntu22.04主+Win10从)-CSDN博客
  • 搭建好主从复制环境后,在从机中查看主从复制信息,显示如下。
    • bb27ede2c7f847c6bda79f91a91a44fc.png

3、读写分离实验

3.1、安装jdk

  • 使用mycat是需要java环境的,先查看本地电脑上是否安装了java环境。
    • 【注】mycat1.6需要的jdk版本不能太新,不然会报错!用jdk1.8就行。
    • db7366db292643e1a50ff985e3f947fd.png
  • 我这已经安装好了,没有安装的可以参考:超详细JDK1.8安装与配置_jdk1.8安装教程及环境变量配置-CSDN博客

3.2、安装Mycat

  • 理论上,应该将Mycat安装在一个独立的服务器上,然后配置Mycat与主库和从库建立连接,通过Mycat提供的读写分离配置,将读操作分发到从库,将写操作分发到主库。
  • 这里为了方便,直接在本地电脑(从库)上安装Mycat。Mycat资源:Win10安装Mycat_mycat windows-CSDN博客(不知道为啥官网打不开)。
    • 【注】因为我的本地电脑没有外网,所以mycat只能装在我的本地电脑中。如果装在服务器上,它将不能访问我的本地电脑。而我的本地电脑是可以访问服务器的。
  • 【注】下面是在Win10中安装Mycat。
  • 下载压缩包并解压。
    • 2e8aae4dbdcf473d9d819c415fe22815.png
  • 配置环境变量:
    • 新增环境变量MYCAT_HOME,配置mycat的根目录。
      • 03034b48e4134bb18ea1514b6b4ded18.png
    • 新增Path变量。
      • %MYCAT_HOME%\bin
      • d7480c32ea9c463f86114244aff16bea.png
  • 修改配置文件mycat/conf/wrapper.conf 
    • # 添加java路径
      wrapper.java.command=D:\App\Java\jdk-1.8\
      wrapper.java.command=%JAVA_HOME%/bin/java.exe# 修改内存
      wrapper.java.additional.10=-Xmx4G
      wrapper.java.additional.11=-Xms1G
      改为:
      wrapper.java.additional.10=-Xmx512M
      wrapper.java.additional.11=-Xms64M
    • 019e0191d0484436be31eab2d3715d18.png
    • a7f8d251779b495c91c88c3cc1054f93.png

3.3、配置Mycat

3.3.1、配置schema.xml
  • Mycat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制。
  • balance参数值:
    • 0:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
    • 1:全部的readHost与备用的writeHost都参与select语句的负载均衡(主要针对于双主双从模式)。
    • 2:所有的读写操作都随机在writeHost,readHost上分发。
    • 3:所有的读请求随机分发到writeHost对应的readHost上执行,writeHost不负担读压力。
  • schema.xml位置:
    • 555cd570f1854166a031ccaa1bbd6d91.png
  • 选择要实现读写分离的数据库,要在文件中修改对应的名字。
    • 7ffeed5dd29f4ce3b1b83d36399f0db5.png
    • <?xml version="1.0"?>
      <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
      <mycat:schema xmlns:mycat="http://io.mycat/"><schema name="MASTER_RW" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"/> --><dataNode name="dn1" dataHost="localhost1" database="db01" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="master" url="123.56.xxx.xxx:3306" user="root" password="root">		   <readHost host="slave" url="127.0.0.1:3306" user="root" password="root"/></writeHost></dataHost></mycat:schema>
  • 重点关注以下几个参数:
    • 1d08e747fb75488481cbc05149983f0c.png
​​​​3.3.2、配置server.xml
  • server.xml的位置。
    • 555cd570f1854166a031ccaa1bbd6d91.png
  • 修改逻辑库。
    • <!--以下设置为应用访问帐号权限 -->
      <user name="root" defaultAccount="true"><property name="password">root</property>  # mycat登录密码<property name="schemas">MASTER_RW</property>
      </user>
      <!--以下设置为应用只读帐号权限 -->
      <user name="user"><property name="password">user</property><property name="schemas">MASTER_RW</property><property name="readOnly">true</property>
      </user>

3.4、修改主从机远程登陆权限

  • mycat需要通过权限访问主库和从库。 
3.4.1、主机
  • 进入数据库,输入命令:
    • update user set host='%' where user = 'root';
      flush privileges;  # 刷新权限
    • 4fce220b498f46bab857f7fca3387358.png
3.4.2、从机
  •  进入数据库,输入命令:
    • update user set host='%' where user = 'root';
      flush privileges;  # 刷新权限
    • 27e9f2ec8571467380841f8e5940660d.png

3.5、启动Mycat

  • 以管理员打开终端,进入 mycat/bin,启动mycat。
    • mycat.bat start
    • 启动失败:
      • 0980566c276c49ca8335c8ad3bdeaa65.png
      • 查看日志文件wrapper.log。
        • b4058967cf904822866280b9e924f495.png
        • f592bc3ee3ff4356b86f454af0c5252d.png
    • 解决办法:
      • 修改配置文件mycat/conf/wrapper.conf
      • bd6a4ef6525a439b8596873d84b4df05.png
  • 再次启动,成功。
    • 4ef4a17cd13c410da5a7d2c5554425bc.png

3.6、登录Mycat

  • 使用终端登录mycat。
    • mysql -u root -p -h127.0.0.1 -P8066
    • aaf3c30521234076bf1deab05fac8b6b.png
  • 登录成功,查看其中的数据。
    • c118c3029470466fa40fb7f14c3e1763.png fb75057e237b401fa023a0999ba9ca9f.png e4ee054985fc47c38f61e2e65f9d2586.png

3.7、验证

  • 在mycat的终端插入一条数据。 
    • insert into tb_user(id,name,sex) values(4,'master',0);
  • 查看主库的数据,已经插入了新数据。
    • 4c6b0e379f92488c92ab8f4184308315.png

  • 查看从库的数据,并没有插入新数据。
    • 2f19de07f5fc42b1902db2b652af53b2.png
    • 说明插入操作是在主库中进行的。
  • 【注】这是因为主从复制和读写分离配置的都是3306端口,使用了读写分离后,主从复制就会失效。只需要用完读写分离后,再打开主从复制即可。
  • 在mycat中执行查询操作。
    • c082b72ca37f4aceb8fc8af644d4fc21.png
    • 查询到的数据与从库一致,说明查询操作是在从库中进行的
  • 重新开启主从复制。在从库的数据库中执行下列命令:
    • stop slave;
      set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
      start slave;
      show replica status\G;
    • 2b9d02fef9b24375a9455f5f4d8164c9.png
    • bb27ede2c7f847c6bda79f91a91a44fc.png

  • 查看从库数据,已经与主库保持一致。
    • 5e1eac1929fc4e1bb139eb05568f6a59.png
  • 再次在mycat中执行查询操作。
    • 4973c08d77cb462799e747286c1a545c.png
  • 验证完毕。

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

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

相关文章

如何合理配置云服务器的CPU和内存?

​  提到云服务器性能&#xff0c;大抵有两个主要影响因素&#xff0c;CPU 核心数量和内存容量 &#xff0c;它们决定了云服务器的速度和可靠性。日常运用中&#xff0c;我们如何判断网站需要需要更多或更少?如何扩大或缩小它们以优化网站的性能? 一般来说&#xff0c;您拥…

视频遥测终端机的设计需求

目录 1.目的 2.参考文件 3.总体描述 4.硬件资源描述 4.1微控制单元 4.2视频处理单元 4.3性能指标 5.功能要求 5.1系统参数要求 5.1.1系统管理 5.1.2系统配置 5.1.2.1一般参数 5.1.2.2编码参数 5.1.2.3网络参数 5.1.2.4网络服务 5.1.2.5OSD参数 5.1.2.6抓拍 5.…

java设计模式学习之【访问者模式】

文章目录 引言访问者模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用电脑示例代码地址 引言 设想你是一个艺术馆的管理员&#xff0c;艺术馆里有各种各样的艺术品。每当有游客来访时&#xff0c;根据他们的兴趣&#xff0c;他们可能只想看画、雕塑或特定的…

【开源】基于Vue+SpringBoot的房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

spring security oauth2搭建认证服务器

如图&#xff08;上面图片的代码在业务项目中&#xff09;&#xff0c;第一步在独立的业务项目中&#xff0c;先获取授权码&#xff08;也叫jsessionId&#xff09;、获取授权码的路径就是 /oauth2/authorize&#xff0c;这个路径是oauth2的框架中被OAuth2AuthorizationEndpoin…

如何从RTP包的AP类型包,获取h265的PPS、SPS、VPS信息

ffmpeg播放rtp流&#xff0c;为了降低首开延迟&#xff0c;需要在SDP文件中指定PPS、SPS、VPS信息。抓包后发现wireshark无法解析AP包。需要自己进行AP包解析。RTP协议AP包格式如下&#xff1a; 根据如上信息&#xff0c;我们可以解析AP包&#xff0c;效果如下 40 01&#xff…

图像质量评估:使用 SSIM 计算图像相似性

在图像处理领域&#xff0c;衡量两幅图像之间相似性的一种常见方法是使用结构相似性指数&#xff08;SSIM&#xff09;。SSIM 是一种全参考的图像质量评估指标&#xff0c;它不仅考虑了图像的亮度、对比度&#xff0c;还考虑了结构信息。在本文中&#xff0c;我们将介绍一个使用…

【Vue2+3入门到实战】(13)插槽<slot>详细示例及自定义组件的创建与使用代码示例 详解

目录 一、学习目标1.插槽2.综合案例&#xff1a;商品列表 一、插槽-默认插槽1.作用2.需求3.问题4.插槽的基本语法5.代码示例6.总结 二、插槽-后备内容&#xff08;默认值&#xff09;1.问题2.插槽的后备内容3.语法4.效果5.代码示例 三、插槽-具名插槽1.需求2.具名插槽语法3.v-s…

【JAVA】使用OPENGL

从这个网址下载对应的库&#xff1a; LWJGL - Lightweight Java Game Libraryhttps://www.lwjgl.org/browse/release/3.3.3下载这个压缩包&#xff08;实际上有很多版本3.3.3是比较新的版本&#xff1a;LWJGL - Lightweight Java Game Library&#xff09;&#xff1a; https…

关于log4j的那些坑

背景&#xff1a;工程中同时存在log4j.xml&log4j2.xml maven依赖如下&#xff1a; 此时工程实际使用的日志文件为log4j.xml 1、当同时设置log4j和log4j2的桥接依赖时 maven依赖如下&#xff1a; 此时启动会有警告日志&#xff1a; 点击告警日志链接&#xff1a;https://…

【Vue2 + ElementUI】el-table中校验表单

一. 案例 校验金额 阐述&#xff1a;校验输入的金额是否正确。如下所示&#xff0c;点击【编辑图标】会变为input输入框当&#xff0c;输入金额。当输入框失去焦点时&#xff0c;若正确则调用接口更新金额且变为不可输入状态&#xff0c;否则返回不合法金额提示 <templat…

计算机网络复习4

网络层——点到点 文章目录 网络层——点到点功能路由算法IPV4NAT 网络地址转换子网划分与子网掩码、CIDR地址解析协议ARP&#xff1a;根据IP地址找到MAC地址动态主机配置协议DHCP网际控制报文协议ICMPIPV6内部网关协议&#xff08;IGP&#xff09;外部网关协议(EGP) 功能 异构…

数字人直播系统——打破时空限制的新媒体时代

随着科技的不断进步&#xff0c;新媒体开始逐渐成为人们获取信息和娱乐的首选方式。其中&#xff0c;数字人直播系统作为一种创新的传媒形式&#xff0c;正以其独特的优势受到越来越多人的关注和喜爱。数字人直播系统通过将虚拟人物与现实世界紧密结合&#xff0c;打破了时间和…

SuperMap YashanDB联合解决方案发布,赋能更强大的地理智慧

近期&#xff0c;深圳计算科学研究院&#xff08;简称“深算院”&#xff09;携手超图软件集团&#xff08;简称“超图 ”&#xff09;重磅推出基于崖山数据库的空间数据管理解决方案&#xff0c;基于YashanDB空间数据库能力&#xff0c;与超图SuperMap GIS平台深度适配&#x…

【温故而知新】vue运用之探讨下单页面应用(SPA)与多页面应用(MPA)

一、概念 1.单页面应用SPA(Single page application) Vue单页面应用是一种采用Vue.js框架开发的Web应用程序,它仅有一个HTML文件,通过前端路由实现页面的切换和渲染。与传统的多页面应用相比,Vue单页面应用在用户体验和开发效率方面有着明显的优势。 在Vue单页面应用中…

计算机与人工智能:共创智能时代的新篇章

计算机与人工智能&#xff1a;共创智能时代的新篇章 在这个科技日新月异的时代&#xff0c;计算机与人工智能&#xff08;AI&#xff09;的结合正以前所未有的速度改变着世界。它们在各自的领域内飞速发展&#xff0c;而当这两者相遇时&#xff0c;它们产生了巨大的能量&#x…

C++ Qt开发:TableView与TreeView组件联动

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TableView与TreeView组件联动的常用方法及灵活…

== 和 equals() 的区别

大家好&#xff0c;我是"java继父"伯约&#xff0c;这篇对大家有帮助的话求一个赞&#xff0c;另外文章末尾放了我从月入7k到现在3W的学习资料&#xff0c;大家可以去领一下&#xff08;无偿&#xff09;。 对于基本类型和引用类型的作用效果是不同的&#xff1a; …

再谈动态SQL

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 文章目录 专栏精选摘要引言正文动态sql标签ifchoose...when...otherwisewhere、…

【AI】阿里云免费GPU服务资源领取方法

首先&#xff0c;直接点击链接&#xff1a;阿里云免费试用 也可以复制链接到浏览器进行跳转&#xff1a;https://free.aliyun.com?userCodernbj0c1o 页面如下所示&#xff1a;这里的免费试用期限是3个月&#xff0c;给的资源点够我们试用V100 16G显存服务器300个小时&#xff…