就业班 第二阶段 2401--3.25 day5 mycat读写分离

@[TOC]

 启动并更改临时密码

[root@mysql1~]# systemctl start mysqld && passwd=`grep password /var/log/mysqld.log | awk 'END{ print $NF} '`&& mysqladmin -p"$passwd" password 'Qwer123..';

MyCAT读写分离

Mycat 是一个开源的数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的数据库系统。 那么 Mycat 是什么?Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。

MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

部署环境

1下载JDK

官网下载

2.解压文件

[root@mycat ~]# tar -xf jdk-8u181-linux-x64.tar.gz   -C  /usr/local/

3.配置环境变量

[root@mycat ~]# vim /etc/profile.d/java.sh

JAVA_HOME=/opt/java 告诉java程序,java编译器的位置(自己设置位置)

PATH=$PATH:$JAVA_HOME/bin 告诉系统,java命令的位置

export JAVA_HOME PATH 使这两个环境变量生效

​
使环境变量生效
[root@mycat ~]# source /etc/profile.d/java.sh

验证是否成功

部署Mycat

下载
[root@mycat ~]# wget http://dl.mycat.org.cn/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz(建议用课件)
解压
[root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
配置Mycat

认识配置文件

MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:

/usr/local/mycat/conf/server.xml           定义用户以及系统相关变量,如端口等。其中用户信息是前端应用程序连接 mycat 的用户信息。

/usr/local/mycat/conf/schema.xml        定义逻辑库,表、分片节点等内容。

配置 server.xml

以下为代码片段

下面的用户和密码是应用程序连接到 MyCat 使用的,可以自定义配置

而其中的schemas 配置项所对应的值是逻辑数据库的名字,也可以自定义,但是这个名字需要和后面 schema.xml 文件中配置的一致。

vim server.xml
<!--下面的用户和密码是应用程序连接到 MyCat 使用的.schemas 配置项所对应的值是逻辑数据库的名字,这个名字需要和后面 schema.xml 文件中配置的一致。-->
​
     

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">

        <user name="xa2401" defaultAccount="true">
                <property name="password">111111</property>
                <property name="schemas">faker</property>

        </user>

</mycat:server>

上面的配置中,假如配置了用户访问的逻辑库,那么必须在 schema.xml 文件中也配置这个逻辑库,否则报错,启动 mycat 失败

配置schema.xml

以下是配置文件中的每个部分的配置块儿

逻辑库和分表设置

<schema name="testdb"           // 逻辑库名称,与server.xml的一致
        checkSQLschema="false"    // 不检查sql
        sqlMaxLimit="100"         // 最大连接数
        dataNode="dn1">        //  数据节点名称
<!--这里定义的是分表的信息-->        
</schema>

数据节点

<dataNode name="dn1"             // 此数据节点的名称
          dataHost="localhost1"     // 主机组
          database="testdb" />  // 真实的数据库名称

主机组

<dataHost name="localhost1"                       // 主机组
          maxCon="1000" minCon="10"               // 连接
          balance="0"                             // 负载均衡
          writeType="0"                           // 写模式配置
          dbType="mysql" dbDriver="native"        // 数据库配置
          switchType="1"  slaveThreshold="100">
<!--这里可以配置关于这个主机组的成员信息,和针对这些主机的健康检查语句-->
</dataHost>
balance 属性
负载均衡类型,目前的取值有 3 种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 
    互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
4. balance="2", 所有读操作都随机的在 writeHost、readhost 上分发。
5. balance="3", 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。

writeType 属性
负载均衡类型
1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准.
2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。

健康检查

<heartbeat>select user()</heartbeat>

读写配置

<writeHost host="hostM1" url="192.168.62.153:3306" user="root" password="Syf_123456">
                        <!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.62.152:3306" user="root" password="Syf_123456" />
</writeHost>

以下是组合为完整的配置文件,适用于一主一从的架构

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

  <schema name="testdb" 
        checkSQLschema="false" 
        sqlMaxLimit="100" 
        dataNode="dn1"> 
   <!--这里定义的是分库分表的信息-->     
   </schema>
   

  <dataNode name="dn1" 
          dataHost="localhost1" database="testdb" />
        
        
  <dataHost name="localhost1" 
            maxCon="1000" minCon="10" 
            balance="0"
            writeType="0" 
            dbType="mysql" dbDriver="native" 
            switchType="1"  slaveThreshold="100">
            
            
   <heartbeat>select user()</heartbeat>
       <!-- can have multi write hosts -->
   <writeHost host="hostM1" url="192.168.62.153:3306" 
              user="root"  password="Syf_123456">
      <!-- can have multi read hosts -->
      <readHost host="hostS2" url="192.168.62.152:3306" 
                user="root" password="Syf_123456" />
     </writeHost>
   </dataHost>
</mycat:schema>

双主双从

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

        <schema name="faker" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="mysql1:3306" user="mycat"
                                   password="Qwer123..">
                        <readHost host="hostS1" url="mysql3:3306" user="mycat" password="Qwer123.." />
                </writeHost>

                <writeHost host="hostM2" url="mysql2:3306" user="mycat"
                                   password="Qwer123..">
                        <readHost host="hostS2" url="mysql4:3306" user="mycat" password="Qwer123.." />
                </writeHost>
        </dataHost>
</mycat:schema>

启动 mycat(使用自己的安装目录启动)
[root@mycat ~]# /usr/local/mycat/bin/mycat  start

支持一下参数
start | restart |stop | status

启动过程中可以动态查看日志观察过程

真实的 master 数据库上给用户授权
mysql> grant all on testdb.* to root@'%' identified by 'Syf_123456';
mysql> flush privileges;
测试

在 mycat 的机器上测试用户权限有效性

测试是否能正常登录上 主服务器

mysql -uroot -p'Syf_123456' -h192.168.62.153

继续测试是否能登录上从服务器

mysql -uroot -p'Syf_123456' -h192.168.62.152

通过客户端进行测试是否能登录到 mycat 上

192.168.62.151 是 mycat 的主机地址(配置文件那个服务器可以说是)

注意端口号是 8066

[root@mysqlclient ~]# mysql -uroot -pSyf_123456 -h192.168.62.151 -P 8066

MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| testdb |
+----------+
1 row in set (0.00 sec)

继续测试读写分离策略

使用  mysql 客户端工具使用  mycat 的账户和密码登录 mycat , 之后执行 select 语句。

之后查询 mycat 主机上 mycat 安装目录下的 logs/mycat.log 日志。

在日志重搜索查询的语句或者查询 从库的 ip 地址,应该能搜索到

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Node.js】WebSockets

概述 WebSockets是一种在浏览器和服务器之间建立持久连接的协议&#xff0c;它允许服务器主动推送数据给客户端&#xff0c;并且在客户端和服务器之间实现双向通信。 建立连接&#xff1a;客户端通过在JavaScript代码中使用WebSocket对象来建立WebSockets连接。例如&#xff1…

安达发|电子产品制造企业APS生产排程软件

在电子脉动的世界中&#xff0c;时间是芯片上的电流&#xff0c;效率是电路板上的速度。在这个时代&#xff0c;每一微秒都蕴藏着无限可能&#xff0c;每一决策都关乎着企业的生死存亡。APS生产排程软件&#xff0c;是您的电子制造帝国中的智慧大脑&#xff0c;以卓越的创造力&…

C++手撕AVL树

文章目录 AVL树概念 节点插入右单旋左右双旋 验证AVL树AVL树的性能 AVL树 之前我们讲了二叉搜索树的相关内容&#xff0c;但是也了解到二叉搜索树有其自身的缺陷&#xff0c;就是当插入的元素有序或者接近有序&#xff0c;退化成单支树的时候&#xff0c;他的时间复杂度就会退…

AIGC: 4 IT从业者如何构建自己的AI知识体系

图片是我使用dall.e模型生成的图片&#xff0c; 提示词&#xff1a; 程序员系统学习OpenAI开发者平台系统学习。 我按照SCQA模型&#xff0c;来开始今天的内容。 S 场景 今天是2024年3月23日&#xff0c;我在深圳&#xff0c;从事IT行业&#xff0c;每个人从事的行业各不相…

redis启动后无法被外部主机连接

目录 一、场景二、连接异常三、排查四、原因五、解决 一、场景 1、CentOS安装redis后&#xff0c;外部主机无法连接到redis 二、连接异常 1、RedisDesktopManager无法连接 2、使用telnet命令测试6379端口是否能正常访问 三、排查 1、redis服务是否启动 四、原因 从以下信息…

前端学习之JavaScript基础语法三种引入方式、三种输出方式、输入框、确认框、循环加强、arguments

目录 三种引入方式 三种输出方式 运行结果 变量 确认框、输入框 运行结果 循环加强 arguments 三种引入方式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><!-- 三…

MySQL索引优化二

分页查询优化 很多时候我们的业务系统实现分页功能可能会用如下sql实现 select * from employees limit 10000,10;表示从表employees中取出从10001行开始的10条记录.看似只查询了10条记录,实际这条sql是先读取10010条记录,然后抛弃前10000条记录,然后读到后面10条想要的数据,…

蓝鹏智能测量仪应用于这些方面!助力发展新质生产力!

新质生产力是未来几年着重发展的方向&#xff0c;关于如何实现产业化升级&#xff0c;各厂家会在自身的基础上进行产业化调整升级&#xff0c;利用新工具、新手段&#xff0c;大幅缩短研发设计周期&#xff0c;从而让产品迭代速度不断加快&#xff1b;提升产品品质&#xff0c;…

防静电检测设备如何完善PCBA车间的防静电管控?

在PCBA&#xff08;Printed Circuit Board Assembly&#xff09;车间中&#xff0c;静电是一个极其重要的问题&#xff0c;因为静电可能对电子元器件和PCB板造成损坏&#xff0c;进而影响整个生产流程和产品质量。为了有效防止静电问题&#xff0c;企业通常会引入防静电检测设备…

UE5学习日记——蓝图节点前缀关键字整理

一、起因 节点如海&#xff0c;中英文翻译的时候还是有差别的&#xff0c;比如&#xff1a; 同一个中文&#xff0c;可能在英文里完全不同&#xff0c;连出现位置可能都不一样 附加 Attach Actor To Component&#xff08;将Actor附加到组件&#xff09;Append Array&#xf…

CTF题型 nodejs(1) 命令执行绕过典型例题

CTF题型 nodejs(1) 命令执行绕过 文章目录 CTF题型 nodejs(1) 命令执行绕过一.nodejs中的命令执行二.nodejs中的命令绕过1.编码绕过2.拼接绕过3.模板字符串4.Obejct.keys5.反射6.过滤中括号的情况典型例题1.[GFCTF 2021]ez_calc2.[西湖论剑 2022]Node Magical Login 一.nodejs中…

SpringBoot可以同时处理多少请求

SpringBoot默认的内嵌容器是Tomcat&#xff0c;即看Tomcat可以处理多少请求 默认配置 server:tomcat:threads:min-spare: 10 # 最小工作线程数max: 200 # 最大线程数max-connections: 8192 # 接受和处理的最大连接数&#xff0c;超过8192的请求就会被放入到等待队列中ac…

【原创教程】关于东方马达的控制方法(上)

1 实现的功能 能够精准定位,快速移动到指定位置 2 硬件配置 东方马达组件一套包含:AZD-CD驱动器,AZM66MC马达电机。 如下图所示: 2.1 东方马达I/O端子分配 2.2 电路图 2.3 硬件接线

代码随想录算法训练营第二十一天|530. 二叉搜索树的最小绝对差

530. 二叉搜索树的最小绝对差 已解答 简单 相关标签 相关企业 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出…

rfc793-page36

rfc793原文 If the connection is in any non-synchronized state (LISTEN,SYN-SENT, SYN-RECEIVED), and the incoming segment acknowledgessomething not yet sent (the segment carries an unacceptable ACK), orif an incoming segment has a security level or compart…

Redis数据类型bitMap以及解决的相关实际需求

在Redis数据库中&#xff0c;Bitmap&#xff08;位图&#xff09;是一种特殊的数据结构&#xff0c;它不是一个独立的数据类型&#xff0c;而是基于String类型实现的。Bitmap主要用于存储大量二进制位&#xff08;0或1&#xff09;的数据&#xff0c;这些位可以代表不同的状态或…

CMU-TARE 探索算法官方社区问答汇总

参考引用 TARE机器人自主导航系统社区-CSDN社区云TARE平台资源链接汇总CMU团队开源算法点云地面分割 terrainAnalysis 代码解析Local Planner 代码详解以及如何适用于现实移动机器人论文翻译&#xff1a;Autonomous Exploration Development Environment and the Planning Algo…

3.学习前后端关联

目录 1.接口类型 2.错误状态码 3.如何定义路由 4.那如何要求前端传入一个JSON数据呢&#xff1f; 4.解决前后端口不同源,跨域问题 1.使用CrossOrigin 2.直接复制代码使用 5.用户登录校验 1.接口类型 POST(新增数据)、PUT(更新更改数据)、GET(查询)、DELET(删除数据) …

day05 设计计算机硬件

嵌入式学习-04_嵌入式技术之从零搭建计算机 1 添加立即数 现有系统的数据RAM存储方式(操作码+操作数)。 地址指令opcode(操作码)addr(操作数)新代码 /数据000ld_a0b000010b1000b0000100000000100001add0b000100b1010b0001000000000101010sub0b000110b1100b000110000000…

搭建PHP本地开发环境:看这一篇就够了

什么是PHP本地开发环境 PHP本地开发环境是指在个人计算机上模拟的服务器环境&#xff0c;这使得开发者能够在没有网络连接的情况下也能开发、测试和调试PHP应用程序。就像在你的电脑里装个小“服务器”&#xff0c;即使没网也能搞定PHP程序的开发和修修补补。这就是PHP本地开发…