MyCat基础入门

news2024/11/25 18:37:31

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

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

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

相关文章

查看libc版本

查看libc库版本 查看系统libc版本 $ ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1.2) 2.27 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or …

nodejs spawn

Node.js 的子进程 (child_process) 模块下有一 spawn 函数&#xff0c;可以用于调用系统上的命令&#xff0c;如在 Linux, macOS 等系统上&#xff0c;我们可以执行如下代码来调用通用的 npm 命令。 const spawn require(child_process).spawn; spawn(npm, {stdio: inherit …

【小收获】一维字符数组 与 二维字符数组

一维字符数组 一维字符数组 可以通过数组名直接进行整体输入和输出&#xff08;注意&#xff1a;当使用一维字符数组存储字符串时&#xff0c;因为元素尾部会有一个空字符\0,所以需要给空字符\0留一个位置&#xff09; char a[5]; cin>>a; cout<<a;二维字符数组 …

ZBrush 2024(三维数字雕刻软件)

ZBrush是一款Mac数字雕刻软件&#xff0c;它具有以下功能&#xff1a; 雕刻工具&#xff1a;ZBrush的雕刻工具非常强大&#xff0c;可以让用户在3D模型上进行雕刻&#xff0c;就像使用传统雕塑工具一样。高精度模型创建&#xff1a;ZBrush可以创建高精度的3D模型&#xff0c;适…

【AI】马斯克说大模型要开源,我们缺的是源代码?(附一图看懂6大开源协议)

目录 一、说说开源和闭源 1. GUN GPL协议 2. BSD&#xff08;Berkeley Software Distribution&#xff0c;伯克利软件发布版&#xff09;协议 3. Apache 许可证版本&#xff08;Apache License Version&#xff09;协议 4. MIT&#xff08;Massachusetts Institute of Tec…

Elasticsearch 8.9 Bulk批量给索引增加数据源码

一、相关API的handler二、RestBulkAction&#xff0c;组装bulkRequest调用TransportBulkAction三、TransportBulkAction 会把数据分发到数据该到的数据节点1、把数据按分片分组&#xff0c;按分片分组数据再发送到指定的数据节点(1) 计算此文档发往哪个分片1)根据索引是否是分区…

Flutter NestedScrollView 、SliverAppBar全解析,悬浮菜单的应用

在我们开发过程中经常会使用到悬浮菜单的使用&#xff0c;当我们滑动到指定位置后&#xff0c;菜单会自动悬浮。 实现效果如下&#xff08;左为滑动前、右为滑动后&#xff09;&#xff1a; 上述便是通过NestedScrollView 、SliverAppBar实现的效果&#xff0c;通过两个控件我…

HTTPS加密为什么能保证网络安全?

随着互联网的普及和发展&#xff0c;网络安全问题日益严重。为了保护用户的隐私和数据安全&#xff0c;许多网站都采用了HTTPS加密技术。那么&#xff0c;HTTPS加密为什么可以保证网络安全呢&#xff1f; 原因是HTTP协议采用的是数据明文传输方式。用户从客户端浏览器提交数据…

基于Java的鲜花商店的设计与实现,ssm+jsp,MySQL数据库,前台用户+后台管理,完美运行,有一万字论文

目录 演示视频 基本介绍 选题背景 系统结构 论文目录 系统截图 演示视频 基本介绍 基于Java的鲜花商店的设计与实现&#xff0c;ssmjsp&#xff0c;MySQL数据库&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万字论文。 前台功能&#xff1a;注册登…

Python Web APP在宝塔发布

本地测试运行&#xff1a;uvicorn main:app --host 127.0.0.1 --port 8082 --reload 宝塔发布&#xff1a; 运行配置——>启动模式&#xff1a;worker_class uvicorn.workers.UvicornWorker

Windows安装Elasticsearch并结合内网穿透实现远程访问

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎&#xff0c;它提供了一个分布式、多…

Win10远程连接服务器失败,报错:出现了内部错误

背景&#xff1a;本地windows10专业版电脑远程Windows虚拟机报错&#xff0c;但实际检查控制台发现&#xff0c;虚拟机状态正常&#xff0c;只是本地远程连接莫名其妙断开&#xff0c;并报错出现了内部错误&#xff1a; 原因&#xff1a;win10客户端RDP兼容性的问题 解决方法&…

数据资产“入表”是不是红利?国企怎么认识?怎么利用?

毫无疑问&#xff0c;数字资产入表是红利。 数据资产入表意味着将数据资源作为企业资产进行确认和计量&#xff0c;解决了数据资源作为非物质资产未被充分认可和有效计量的问题&#xff0c;意味着数据完成了从自然资源到经济资产的跨越。上海数据交易所总经理汤奇峰此前表示&a…

代码混淆的原理是什么?常见代码混淆方法介绍

目录 一、代码混淆的原理 二、代码混淆的方法 三、常见的代码混淆方式 本文主要想你介绍代码混淆的原理&#xff0c;常见代码混淆方法&#xff0c;欢迎查阅~ 移动应用代码安全非常重要&#xff0c;代码逆向会导致代码逻辑被获取&#xff0c;进一步导致控制流被hook&#xff0…

忆联消费级SSD AH660:将用户体验推向新高度

自1989年IBM推出世界上第一款固态硬盘&#xff08;SSD&#xff09;以来&#xff0c;SSD在三十多年的时间中历经了多次技术革新和市场变革&#xff0c;早已成为个人电脑、汽车电子、数据中心、物联网终端等领域的主流存储产品&#xff0c;并广泛应用于各行各业&#xff0c;在202…

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

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

【学习笔记】Java安全之动态加载字节码

文章目录 什么是Java的字节码利用URLClassLoader加载远程class文件利用ClassLoader#defineClass直接加载字节码利用TemplatesImpl加载字节码利用BCEL ClassLoader加载字节码 最近在学习Phith0n师傅的知识星球的Java安全漫谈系列&#xff0c;随手记下笔记 什么是Java的字节码 J…

双向链表的知识点+例题

1.链表的种类 题中常考查以下两种&#xff1a; 上一讲我们学了无头单向非循环链表&#xff0c;这节&#xff0c;让我们看一下双向链表的操作吧~ 2基本操作 1&#xff0c;定义双向链表 2&#xff0c;创建一个节点 3&#xff0c;初始化双链表 4&#xff0c;尾插一个节点 5打印…

C语言判断素数(ZZULIOJ1057:素数判定)

题目描述 输入一个正整数n&#xff0c;判断n是否是素数&#xff0c;若n是素数&#xff0c;输出”Yes”,否则输出”No”。 注意&#xff1a;1不是素数。 输入&#xff1a;输入一个正整数n(n<1000) 输出&#xff1a;如果n是素数输出"Yes"&#xff0c;否则输出"…

Nuxt3框架全局引用外部JS/CSS文件的相关配置方法

全局引入外部文件方法&#xff1a; 找到根目录下的nuxt.config.ts配置文件&#xff1b;然后如上图所示&#xff0c;在defineNuxtConfig配置对象下app选项节点下&#xff0c;head对象中即可配置全局需要的JS或CSS文件&#xff1b; // https://nuxt.com/docs/api/configuration/…