MyCat基础入门

1. MyCat安装

去官网下载安装包:

在这里插入图片描述

下载路径: 官方网站:http://www.mycat.org.cn/
github地址https://github.com/MyCATApache

上传到服务器上并解压:

在这里插入图片描述

它解压后是一个叫mycat的文件夹

在这里插入图片描述

去maycat的bin目录下,执行命令 ./mycat start 启动服务 ./mycat stop 停止服务 ./mycat
restart 重启服务

在这里插入图片描述

mycat的conf文件夹下有一个server.xml,里面有,mycat连接的用户名和密码

在这里插入图片描述

在这里插入图片描述

可以看到root用户密码是123456 连接使用mysql客户端

> mysql -h 127.0.0.1 -u root -p -P 8066

在这里插入图片描述

远程连接,记得防火墙开放8066端口 使用iptables开放如下端口

/sbin/iptables -I INPUT -p tcp --dport 8066 -j ACCEPT

保存

/etc/rc.d/init.d/iptables save

重启服务

service iptables restart

在这里插入图片描述

注意新安装的mycat,再使用远程工具的时候可能会卡住,多等一会就好了。

在这里插入图片描述
在这里插入图片描述

2. 分片

在mysql连接里建立三个数据库,注意是从前我们用的mysql连接,不是mycat。

在这里插入图片描述

修改mycat/conf/schema.xml

在这里插入图片描述

<table>用来配置表,原来的配置文件中有许多测试用的表。我们追加两个表,test_tb01和test_tb02。
test_tb01放到三个节点上,分别对应新创建的三个库mycat_db1、mycat_db2、
mycat_db3。rule指定它的分片策略是按照id分

在这里插入图片描述

分片规则:https://blog.csdn.net/u011731544/article/details/80579088

在这里插入图片描述

test_tb02的type=global,代表全局表
改完重启mycat

在这里插入图片描述

执行语句

DROP TABLE IF EXISTS `test_tb01`;
CREATE TABLE `test_tb01` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test_tb01`(id,name) VALUES ('5000001', 'aaaa');
INSERT INTO `test_tb01`(id,name) VALUES ('1', 'aaaa');
INSERT INTO `test_tb01`(id,name)  VALUES ('2', 'aaaa');
INSERT INTO `test_tb01`(id,name)  VALUES ('10000001', 'aaaa');

DROP TABLE IF EXISTS `test_tb02`;
CREATE TABLE `test_tb02` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test_tb02` (name)VALUES ('cccc');

注意表名的大小写要和配置文件中一致。 执行之后可以看到test_tb01的数据,根据id的不同,存储到了三个节点中。
test_tb02的数据在两个节点中是同步的。

启动mysql

cd /usr/local/mysql/support-files
./mysql.server start

3. 读写分离

数据库读写分离对于大型系统或者访问量很高的互联网应用,是必不可少的一个重要功能。对于MySql来说,标准的读写分离是主从模式,一个写节点Master跟着多个读节点。读节点的数量取决于系统的压力。通常1-3个读节点。

MyCat的读写分离需要Mysql的主从复制机制配合。 MySql主从复制需要注意的是:

  1. 主DB Server和从DB Server的数据库版本一致
  2. 主DB Server和从DB Server的数据库数据一致
  3. 主DB Server开启二进制日志,主DB Server和从DB Server的server_id必须唯一

3.1 主库配置

这里是引用

修改主库的/etc/my.cnf,追加如下内容:

binlog-do-db=mycat_db1
binlog-do-db=mycat_db2
binlog-do-db=mycat_db3
binlog-ignore-db=mysql
log-bin=mysql-bin
server-id=144

在这里插入图片描述

binlog-do-db是要同步的库

binlog-ignore-db是不同步的库

log-bin开启二进制日志

server-id必须是唯一的服务号,可以写成ip最后一段

重启mysql

service mysql restart

登录mysql,创建备份用户并授权

grant file on *.* to 'backup' @'%' identified by '123456';

grant replication slave,replication client on *.* to 'backup' @'%' identified by '123456'; 

flush privileges;

查看现在有哪些用户:

select user,host from mysql.user;

在这里插入图片描述

查看master状态

show master status\G;

在这里插入图片描述

3.2 配置从库

修改从库的/etc/my.cnf
server-id=139 可以使用ip的最后一段

在这里插入图片描述

重启服务

service mysql start

连接mysql,配置master的信息,注意这是一条语句,中间不要断开

CHANGE MASTER TO MASTER_HOST='10.0.107.145', MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=120;

在这里插入图片描述

其中MASTER_HOST是主库的ip,MASTER_USER和MASTER_PASSWORD是同步时的账号及密码,就是3.1中创建并授权的账号。MASTER_LOG_FILE是3.1中show master status时的file。 MASTER_LOG_POS 是show master status时的Position。

启动slave

start slave;

在这里插入图片描述

查看从服务器状态:

show slave status\G;

在这里插入图片描述

Slave_IO_Running: Yes //必须是YES
Slave_SQL_Running: Yes //必须是YES

3.3 配置mycat

在这里插入图片描述

balance:

balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。

balance=“1”,全部的 readHost 与 stand by writeHost 参与 select
语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2
都参与 select 语句的负载均衡。

balance=“2”,所有读操作都随机的在 writeHost、 readhost 上分发。

balance=“3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost
不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

writeType:

writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个

writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

writeType=“1”,所有写操作都随机的发送到配置的 writeHost。

writeType=“2”,没实现。

switchType:

-1 表示不自动切换

1 默认值,自动切换

2 基于MySQL 主从同步的状态决定是否切换

重启mycat服务。

4. java连接mycat

数据库链接地址,连接服务器的8066端口,指定连接到TESTDB库,用户名密码是mycat的server.xml中配置的用户名密码。其它操作和连接mysql一样:

jdbc:mysql://www.vm.com:8066/TESTDB?characterEncoding=utf-8

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

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

相关文章

修完这个 Bug 后,MySQL 性能提升了 300%

最近 MySQL 官方在 8.0.35 上修复了一个 bug&#xff1a; 这个 bug 是由 Mark Callaghan 发现的。Mark 早年在 Google MySQL 团队&#xff0c;后来去了 Meta MySQL&#xff0c;也主导了 RocksDB 的开发。 Mark 在 #109595 的 bug report 给出了非常详细的复现步骤 在官方修复后…

电源模块输出过冲如何产生?测试标准及其测试方法是什么?

输出电压过冲是一个常见的电路问题&#xff0c;它是指在电路中的电压超过了规定的范围&#xff0c;严重的话会造成系统不稳定&#xff0c;导致元器件、负载以及设备损坏。那么造成输出电压过冲的原因有哪些呢&#xff1f;电源自动测试系统要怎么测试输出过冲? 输出电压过冲产生…

基于SpringBoot、Vue的电影院管理系统

一、管理端 1.登陆界面 2.影院管理界面 3.电影信息管理页 4.订单信息管理页 二、 用户 1.登录页 2.首页 3.个人中心 4.监控大屏&#xff08;此功能可单加&#xff09; 需要的同学可以私我v哟 jg低廉 包调试安装

人体状态检测YOLOV8 NANO

人体状态检测Y8N&#xff0c;能检测站立、奔跑、跌倒、坐下、蹲下五种状态&#xff0c;采用YOLOV8NANO训练&#xff0c;转换成ONNX&#xff0c;OPENCV DNN调用&#xff0c;支持C/PYTHON/ANDROID开发 人体状态检测Y8N

Visual Components数字化工厂虚拟仿真软件 衡祖仿真

数字孪生、人工智能、工业互联网、边缘计算这些概念在整个产业里非常的火热&#xff0c;但是&#xff0c;如果这些概念没有“模型”作为基础的话&#xff0c;那么这些概念都只能是空中楼阁无法落地。而仿真技术是利用这些模型在计算机中构建一比一的真实场景&#xff0c;使得在…

MessageSourceUtil读取资源文件

在处理返回值提示的时候&#xff0c;需要根据local返回中文或者英文&#xff0c;因此要使用到国际化内容 操作 1&#xff0c;新建资源文件 在src/main/resources源文件夹下创建一个i18n的子目录&#xff0c; 然后创建中文和英文对应properties文件&#xff0c;然后输入自己的…

Hive Lateral View explode列为空时导致数据异常丢失

一、问题描述 日常工作中我们经常会遇到一些非结构化数据&#xff0c;因此常常会将Lateral View 结合explode使用&#xff0c;达到将非结构化数据转化成结构化数据的目的&#xff0c;但是该方法对应explode的内容是有非null限制的&#xff0c;否则就有可能造成数据缺失。 SE…

【机器学习10】循环神经网络

1循环神经网络 RNN通过将神经元串行起来处理序列化的数据。 由于每个神经元能用它的内部变量保存之前输入的序列信息&#xff0c;因此整个序列被浓缩成抽象的表示&#xff0c; 并可以据此进行分类或生成新的序列。 2 循环神经网络的梯度消失或梯度爆炸问题 传统的循环神经网…

websocket学习

写在前面 新公司用到了websocket技术&#xff0c;所以这里学习下。 1&#xff1a;Java原生 1.1&#xff1a;maven <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.3</ver…

代码随想录算法训练营第五十七天丨 动态规划part17

647. 回文子串 思路 动态规划 动规五部曲&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 如果大家做了很多这种子序列相关的题目&#xff0c;在定义dp数组的时候 很自然就会想题目求什么&#xff0c;我们就如何定义dp数组。 绝大多数题目确实是…

【java学习—十五】经典例题:生产者/消费者问题(7)

文章目录 1. 题目2. 答案 1. 题目 生产者 (Productor) 将产品交给店员 (Clerk) &#xff0c;而消费者 (Customer)从店员处取走产品&#xff0c;店员一次只能持有固定数量的产品 ( 比如 4 &#xff09;&#xff0c;如果生产者试图生产更多的产品&#xff0c;店员会叫生产者停一下…

特隆美储能PVS ASEAN 2023展览会完美落幕

2023年11月14-16日&#xff0c;特隆美储能参加在印尼雅加达举办的“2023东盟光伏与储能展览会”&#xff08;简称PVS ASEAN 2023&#xff09;。该展会展览面积达20000平米&#xff0c;有超过300家企业参展。 展会旨在推动印度尼西亚以及东南亚地区朝着绿色可持续发展和高能效的…

鉴源论坛 · 观模丨软件单元测试真的有必要吗?(下)

作者 | 包丹珠 上海控安产品总监 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” “软件单元测试真的有必要吗&#xff1f;&#xff08;上&#xff09;”一文中&#xff0c;着重探讨了单元测试的重要性及其正面临的困境&#xff0c…

【LeetCode:2736. 最大和查询 | 贪心 + 二分 + 单调栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

一文带你了解ADC测试参数有哪些?

模数转换器&#xff08;ADC&#xff09;是数字电子系统中重要组成部分&#xff0c;用于捕获外部世界的模拟信号&#xff0c;如声音、图像、温度、压力等&#xff0c;并将它们转化为数字信号0\1, 以供计算机进行处理分析。ADC芯片在出厂交付之前&#xff0c;需要对产品的性能做各…

超详细的Monkey测试介绍

前言 Monkey 是Android SDK提供的一个命令行工具&#xff0c; 可以简单&#xff0c;方便地运行在任何版本的Android模拟器和实体设备上。 Monkey会发送伪随机的用户事件流&#xff0c;适合对app做压力测试 。 环境搭建 安装Android SDK 并配置环境变量 什么是Monkey 顾名…

PyTorch - 高效快速配置 Conda + PyTorch 环境 (解决 segment fault )

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134463035 在配置算法项目时&#xff0c;因网络下载速度的原因&#xff0c;导致默认的 conda 与 pytorch 包安装缓慢&#xff0c;需要配置新的 co…

医美三季报内卷,华熙生物、爱美客、昊海生科混战双11

双十一落幕&#xff0c;据天猫大美妆数据统计&#xff0c;被称为“医美三剑客”的华熙生物(688363.SH&#xff09;、爱美客(300896.SZ)、昊海生科(688366.SH)的医美产品均未进入天猫双11美容护肤类目TOP10榜单。 与此同时&#xff0c;其业绩承压困局也写在最新的三季报里。 「…

【教学类-36】八等分格子-A4竖版-4条(制作皇冠、戒指)

背景需求&#xff1a; 最近在大四班孩子中间普及铅画纸制作“方盒”的活动&#xff0c;目前进展到使用三条8等分的长条纸&#xff0c;制作一个“坚硬的、不漏底”的方盒。 实验后&#xff0c;我想试试如果缩小纸条长宽&#xff0c;是不是可以做“迷你”纸盒。 目的&#xff…

工业镜头中的远心镜头与普通镜头的光路

普通镜头&#xff1a; 主光线与镜头光轴有角度&#xff0c;工件上下移动时&#xff0c;像的大小有变化。 FOV&#xff1e;镜头前端直径。 物方远心镜头&#xff1a; 物方主光线平行于光轴&#xff0c;物距发生改变时&#xff0c;像高不会发生改变&#xff0c;测得的物体尺寸大…