就业班 第二阶段 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"    // 不检查sqlsqlMaxLimit="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 8066MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| testdb |
+----------+
1 row in set (0.00 sec)

继续测试读写分离策略

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

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

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

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

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

相关文章

简明 Python 教程(第1章安装Python)

Linux和BSD用户&#xff1a; 如果你使用的是Linux发行版&#xff08;如Fedora、Mandrake&#xff09;或BSD系统&#xff08;如FreeBSD&#xff09;&#xff0c;你的系统可能已经预装了Python。可以通过在终端中输入python -V来检查是否安装了Python以及其版本。如果没有安装Py…

​LeetCode解法汇总518. 零钱兑换 II

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个整数数组 coins 表示不同面额的硬…

关于对postcss安装和使用比较详细

PostCSS是一款强大的CSS工具&#xff0c;它可以自动解析CSS代码&#xff0c;应用一系列的插件&#xff0c;然后输出转换后的CSS。PostCSS本身是一个功能相对简单的工具&#xff0c;但它的强大之处在于其插件生态系统&#xff0c;这些插件提供了各种各样的功能&#xff0c;如自动…

leetcode-简单题-数学算法题

2469. 温度转换 - 力扣&#xff08;LeetCode&#xff09; 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度&#xff0c;以 摄氏度&#xff08;Celsius&#xff09;为单位。 你需要将摄氏度转换为 开氏度&#xff08;Kelvin&#xff09;和 华氏度&#xff08;Fahren…

LeetCode-1669题:合并两个链表(原创)

【题目描述】 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点的位置。下图中蓝色边和节点展示了操作后的结果&#xff1a; 请你返回结果链表的头指针。 【…

通俗易懂:MySQL中的FOREIGN KEY约束有什么作用?如何创建和删除?

在MySQL数据库中&#xff0c;FOREIGN KEY&#xff08;外键&#xff09;约束是一个重要的概念&#xff0c;它主要用于维护数据库表之间的引用完整性。其主要作用有以下几点&#xff1a; 1. 参照完整性保证 - 外键约束确保了一个表&#xff08;称作“从表”或“子表”&#xff09…

【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

背景展示&#xff1a;有页码的操作题 背景需求&#xff1a; 实操课终于全部结束了&#xff0c;把考试内容&#xff08;docx&#xff09;都写好了 【办公类-21-10】三级育婴师 视频转文字docx&#xff08;等线小五单倍行距&#xff09;&#xff0c;批量改成“宋体小四、1.5倍行…

数据库学习(四)mybatis

Mybatis Mybatis是一个基于数据持久层&#xff08;DAO层&#xff09;的一款框架&#xff0c;他能极大的简化Java中连接数据库&#xff0c;操作数据库也就是jdbc的操作。 在定义mybatis相关接口时&#xff0c;不需要定义实现类&#xff0c;因为在程序启动时&#xff0c;mybati…

docker启动rocketmq简洁教程

docker启动rocketmq 打开云服务器防火墙 配置外网访问创建容器外部存储文件&#xff1a;mkdir -p /root/rocketmq/data/namesrv/logs /root/rocketmq/data/namesrv/store /root/rocketmq/conf /root/rocketmq/data/broker/logs /root/rocketmq/data/broker/store进入到 /root/…

Python环境下一种新的类谱峭度算法的旋转机械故障诊断模型

谱峭度SK的本质是计算每根谱线峭度值的高阶统计量&#xff0c;谱峭度对信号中的瞬态冲击成分十分敏感&#xff0c;能有效的从含有背景噪声信号中识别瞬态冲击及其在频带中的分布。由于谱峭度的复杂性、缺少一个正式的定义和一个容易理解的计算过程使其在很长时间内都未能引入到…

Redis入门到实战-第六弹

Redis实战热身Lists篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理和流…

kubectl 启用shell自动补全功能

官网手册参考&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/ 系统&#xff1a;centos7 补全脚本依赖于工具 bash-completion&#xff0c; 所以要先安装它&#xff08;可以用命令 type _init_completion 检查 bash-completion 是否已安装&a…

PTA布尔矩阵的奇偶性

一个布尔方阵具有奇偶均势特性&#xff0c;当且仅当每行、每列总和为偶数&#xff0c;即包含偶数个1。如下面这个4*4的矩阵就具有奇偶均势特性&#xff1a; ⎣⎡​1010​0011​1010​0011​⎦⎤​ 编写程序&#xff0c;读入一个n阶方阵并检查它是否具有奇偶均势特性。如果没有…

2024年腾讯云优惠券领取教程及使用攻略分享

随着云计算技术的快速发展&#xff0c;腾讯云作为国内领先的云计算服务提供商&#xff0c;为企业和个人提供了丰富的云产品和服务。为了帮助大家更好地了解和使用腾讯云&#xff0c;本文将为大家详细介绍2024年腾讯云优惠券领取教程及使用攻略。 一、腾讯云优惠券介绍说明 腾讯…

linux性能调优汇总(一)cpu

目录 一、引言 二、CPU ------>2.1、/proc/cpuinfo ------>2.2、cpuid指令 ------>2.3、lscpu ------>2.4、turbostat ------>2.5、rdmsr ------>2.6、perf ------>2.7、top ------>2.8、ps ------>2.9、pidstat 查看每个进程CPU、内存、…

【CSP试题回顾】201812-1-小明上学(优化)

CSP-201812-1-小明上学 解题代码 #include <iostream> using namespace std;int r, y, g, n, k, t, sumTime;int main() {cin >> r >> y >> g >> n;for (size_t i 0; i < n; i){cin >> k >> t;if (k 0)sumTime t;else if(k1…

成都克鲁斯机器人电路板故障维修攻略,快来了解一下!

一、克鲁斯机器人电路板维修步骤 断开电源&#xff1a;在进行电路维修前&#xff0c;务必断开机器人的电源&#xff0c;确保安全。 拆卸电路板&#xff1a;根据电路图或维修手册&#xff0c;小心拆卸故障电路板。注意记录拆卸过程中的细节&#xff0c;以便后续重新安装。 更换损…

基于 VB6的猜拳游戏

基于 VB6的猜拳游戏 1 欢迎页的制作 welcomeFrom 添加一个定时器 代码如下&#xff1a; Private Sub Form_Load()定时器Timer1的时间间隔设置为1000毫秒Timer1.Interval 1000Timer1.Enabled TrueEnd SubPrivate Sub Timer1_Timer()关闭当前窗体Unload MeReadyFrom.Show…

验证码/数组元素的复制.java

1&#xff0c;验证码 题目&#xff1a;定义方法实现随机产生一个5位的验证码&#xff0c;前面四位是大写或小写的英文字母&#xff0c;最后一位是数字 分析&#xff1a;定义一个包含所有大小写字母的数组&#xff0c;然后对数组随机抽取4个索引&#xff0c;将索引对应的字符拼…

内网exp对抗

内网工具对抗 首先&#xff0c;你需要分析&#xff1a; 1、安全工具是否有源代码 2、安全工具源代码逻辑复杂程度 3、当前源代码你是否有能力修改 其次&#xff0c;你需要考虑&#xff1a; 1、无源码或无能力修改 2、各种异常bug打包问题 3、修改打包后效果也不太好 故…