2 Mycat2 安装与启动

1、制作安装包

  1. Mycat2不提供安装包,只提供核心JAR包,JAR包可以独立运行,安装包是使用Java Service Wrapper做壳的,如果需要安装包,需要自己制作。
  2. JAR可以作为Java库引入自己业务项目中使用
  3. Mycat2中的各个组件的设计都是可以独立使用的。

步骤如下:

1. 下载对应的tar或zip安装包,以及对应的jar包
2. zip包地址:http://dl.mycat.io/2.0/install-template/mycat2-install-template-1.20.zip
3. jar包地址:http://dl.mycat.io/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies-2022-3-14.jar
4. 解压下载下来的zip包, 然后将下载好的jar包放入到 mycat/lib 目录下,如下图:

在这里插入图片描述

上传到Linux,这里我们将MyCat上传到192.168.58.200,这台服务器。Mycat 作为数据库中间件要和数据库部署在不同机器上。

授予 bin 目录下所有命令 可执行权限

[root@localhost mycat]# chmod +x bin/*

2、启动MyCat

  1. MyCat需要连接的MySQL数据库中,创建用户,并赋予权限 (也可以直接使用root用户)
-- 修改默认密码校验方式 
ALTER USER 'root'@'%' IDENTIFIED WITH mysqlnativepassword BY '123456';
-- 用户名mycat,密码123456
CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
-- 官方文档强调要给root账号添加XA RECOVER权限
GRANT XARECOVERADMIN ON . TO 'root'@'%';
-- 视情况给mycat赋予权限
GRANT ALL PRIVILEGES ON . TO 'mycat'@'%' ; flush privileges; 
  1. 配置mycat要连接的数据源
1.mycat连接真正数据库的信息目录是在 /mycat/conf/datasources
2.配置原型库的数据源信息 prototypeDs.datasource.json,  主要是 url、user、password这三个参数。
{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE",
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"prototypmysql"
        "password":"123456",
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.58.100:3310/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
        "user":"mycat",
        "weight":0
}
  1. mycat相关命令
    shell 进入bin目录
./mycat status 状态
./mycat start 启动
./mycat stop 停止
./mycat restart 重启服务
./mycat pause 暂停
  1. Mycat用户配置
    文件目录及配置文件
cd /root/software/mycat/conf/users
[root@localhost users]# ll 总用量 4 -rw-r--r--. 1 root root 107 123 04:06 root.user.json
[root@localhost users]# vim root.user.json

只需要配置用户名,密码

{
        "dialect":"mysql",
        "ip":null,
        "password":"123456",  
        "transactionType":"xa",
        "username":"root"
}
  1. 启动mycat,使用图形工具链接,mycat默认端口8066
    在这里插入图片描述

3、连接Mycat

  1. 连接成功后,创建执行下面的建库建表语句
-- 创建数据库
CREATE DATABASE user_db CHARACTER SET utf8;

-- 创建表
CREATE TABLE users (
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  NAME VARCHAR(20) DEFAULT NULL,
  age INT(11) DEFAULT NULL
); 

-- 插入数据
INSERT INTO users VALUES(NULL,'user1',20);
INSERT INTO users VALUES(NULL,'user2',21);
INSERT INTO users VALUES(NULL,'user3',22);
  1. 在Mycat中执行成功,Mycat所代理的数据库中也会增加一个user_db数据库和users表。
    在这里插入图片描述
1.mycat.xa_log 是事务日志表会在Mycat2启动时候在存储节点上建立。
2.mycat.spm_plan mycat执行计划相关的表

4、Mycat2 核心概念

  1. 分库分表
按照一定的规则把数据库中的表拆分为多个带有数据库实例,物理库,物理表访问路径的分表。
  1. 逻辑库
对数据进行分片之后,从原来的与一个库,被切分为了多个分片数据库,所有的分片数据库构成了整个完整的数据库存储。Mycat在操作时,使用逻辑库代表整个完整的数据库集群,方便对于整个集群进行操作。
  1. 物理库
MySQL中真实存在的数据库
  1. 物理表
MySQL中真实存在的表
  1. 分片键
用于分片的数据库字段,是将数据库进行水平拆分的关键字段
  1. 物理分表
指的是已经进行数据拆分的,在数据库上面的物理表,是分片表的一个分区,多个物理分表中的数据汇总起来就是逻辑表的全部数据。
  1. 物理分库
一般是指包含多个分表的库,数据切分之后每一个大表被分不到不同的数据库上面,每个表分片所在的数据库就是物理分库。
  1. 单表
没有分片,没有数据冗余的表
  1. 全局表
1.变动不频繁
2.数据总量变化不大
3.经常被用来进行关联查询
//比如说: 地址表 、字典表 这一类都是属于全局表,在每个数据库中都有这样一张或几张全局表,每个数据库中的全局表的数据是要保持一致的。
  1. ER表
Mycat提出了基于E-R关系的数据分片策略,子表的记录与所有关联的父表的记录存放在同一个数据分片上,子表依赖于父表,通过表分组保证 数据的join不会跨库。

5、Mycat2 核心配置文件

Mycat2作为一个数据库中间件,它所有的功能其实都是通过一些列配置文件定制一系列业务规则,通过与MySQL协作,提供具体的业务功能。所有Mycat2的所有功能都体现在他的配置文件中。

服务相关配置文件所在的目录是: mycat/conf
在这里插入图片描述
5.1 用户配置

  1. 配置用户相关信息的目录在: mycat/conf/users
  2. 命名方式:{用户名}.user.json
  3. 配置内容如下:
{
        "dialect":"mysql",
        "ip":null,
        "password":"123456",
        "transactionType":"xa",
        "username":"root"
}
字段含义
ip:客户端访问ip,建议为空,填写后会对客户端的ip进行限制
username:用户名
password:密码
isolation:设置初始化的事务隔离级别
	READ_UNCOMMITTED :1
	READ_COMMITTED :2
	REPEATED_READ:3,默认
	SERIALIZABLE:4

tractionType:事务类型,可选值, 可以通过语句实现切换
	set transaction policy ='xa'
	set transaction.policy ='proxy'

proxy 表示本地事务,在涉及大于1个数据库的事务, commit阶段失败会导致不一致,但是兼容性最好xa事务,需要确认存储节点集群类型是否支持XA.

5.2 数据源配置

配置Mycat连接的数据源信息
1)所在目录 `mycat/conf/datasources`
2)命名方式 `{数据源名字} . datasource.json`
3)配置内容如下:
   {
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE",
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"prototypeDs",
        "password":"123456",
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.58.100:3310/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
        "user":"mycat",
        "weight":0
   }
字段含义
	dbType:数据库类型,mysql
	name:用户名
	password:密码
	type:数据源类型,默认JDBC
	url:访问数据库地址
	idleTimeout:空闲连接超时时间 
	initSqls:初始化sql
	initSqlsGetConnection:对于jdbc每次获取连接是否都执行initSqls
	nstanceType:配置实例只读还是读写, 可选值:READ_WRITE,READ,WRITE
	weight:负载均衡权重

连接相关配置
	"maxCon": 100,
	"maxConnectTimeout" : 3000,
	"RetryCount" : 5,
	"minCon": 1,

5.3 集群配置

1)配置集群信息,所在目录 `mycat/conf/clusters`
2)命名方式:`{集群名字} . cluster.json`
3)配置内容如下:
   {
        "clusterType":"MASTER_SLAVE",   //主从集群
        "heartbeat":{                      //心跳检查
                "heartbeatTimeout":1000,
                "maxRetry":3,
                "minSwitchTimeInterval":300,
                "slaveThreshold":0
        },
        "masters":[
                "prototypeDs"    //主节点
        ],
        "maxCon":200,
        "name":"prototype",
        "readBalanceType":"BALANCE_ALL",   //负载均衡策略
        "switchType":"SWITCH"     //表示进行主从切换
   }
   字段含义
clusterType:集群类型,可选值:
	SINGLE_NODE:单一节点
	MASTER_SLAVE:普通主从
	JSTER:garela- cluster/PXC 集群
	MHA: MHA集群
	MGR: MGR集群

readBalanceType:查询负载均衡策略,可选值:
	BALANCE_ALL(默认值),获取集群中所有数据源
	BALANCE_ALL_READ,获取集群中允许读的数据源
	BALANCE_READ_WRITE,获取集群中允许读写的数据源,但允许读的数据源优先
	BALANCE_NONE,获取集群中允许写数据源,即主节点中选择

switchType:切换类型

5.4 逻辑库表

1)配置逻辑库表,实现分库分表,所在目录 `mycat/conf/schemas`
2)命名方式  `{库名} . schema.json`
3)配置内容如下:
   vim mysql.schema.json

{
	"customTables":{},
	"globalTables":{},       //全局表配置
	"normalProcedures":{},
	"normalTables":{   // MySQL中真实表信息
		"users":{
      //建表语句
			"createTableSQL":"CREATE TABLE user_db.users (\n\tid INT(11) PRIMARY KEY AUTO_INCREMENT,\n\tNAME VARCHAR(20) DEFAULT NULL,\n\tage INT(11) DEFAULT NULL\n)",
			"locality":{
				"schemaName":"user_db",  //物理库
				"tableName":"users",     //物理表
				"targetName":"prototype" //指向集群或者数据源
			}
		}
	},
	"schemaName":"user_db",   
	"shardingTables":{}, //分片表配置
	"views":{}
   }
   

注意:配置的schema的逻辑库逻辑表必须在原型库(prototype)中有对应的物理库物理表,否则不能启动

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

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

相关文章

【C++干货铺】继承后的多态 | 抽象类

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 多态的概念 多态的定义和实现 多态的定义条件 虚函数 虚函数的重写 特殊情况 协变(基类和派生类的虚函数返回值不同) 析构函数的重…

ffmpeg踩坑之手动编译报错Unrecognized option ‘preset‘及rtsp/rtmp推流

本文解决的问题记录: 报错1:Unrecognized option preset. Error splitting the argument list: Option not found 报错2:ERROR: x264 not found using pkg-config 报错3:ffmpeg: error while loading shared libraries: libavd…

【linux】Debian不能运行sudo的解决

一、问题: sudo: 没有找到有效的 sudoers 资源,退出 sudo: 初始化审计插件 sudoers_audit 出错 二、可用的方法: 出现 "sudo: 没有找到有效的 sudoers 资源,退出" 和 "sudo: 初始化审计插件 sudoers_audit 出错&q…

spring面试:一、面试题分类总览+bean线程安全问题+AOP相关问题(定义、使用步骤、编程式事务管理和声明式事务管理和声明式事务管理失效)

面试题分类总览 bean线程安全问题 单例/多例 单例(singleton):在每个spring ioc容器中都只有一个实例。 多例(prototype):在每个spring ioc容器中有多个实例。 默认情况下spring中的bean都是单例的。但是…

基于Java SSM框架实现智能停车场系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现智能停车场系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个智能停车场管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述…

call 和 apply:改变对象行为的秘密武器(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

TSINGSEE视频智能解决方案边缘AI智能与后端智能分析的区别与应用

视频监控与AI人工智能的结合是当今社会安全领域的重要发展趋势。随着科技的不断进步,视频监控系统已经不再局限于简单的录像和监视功能,而是开始融入人工智能技术,实现更加智能化的监控和安全管理。传统的监控系统往往需要人工操作来进行监控…

内网渗透测试基础——Windows PowerShell篇

内网渗透测试基础——Windows PowerShell篇 1. Windows PowerShell基础 Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows版本中(Windows7、Windows Server 2008 R2及更高版本),为Windows命令行使…

讨好型人格最适合从事什么职业?

讨好型人格,其言行不是考虑个人,而是以满足对方为主,只要是他人的想法,都会尽力去满足,特别害怕自己做了什么事情,让对方产生不满的想法。遇到事情,也很难主动请求别人,总是依靠自己…

计算机组成原理-函数调用的汇编表示(call和ret指令 访问栈帧 切换栈帧 传递参数和返回值)

文章目录 call指令和ret指令高级语言的函数调用x86汇编语言的函数调用call ret指令小结其他问题 如何访问栈帧函数调用栈在内存中的位置标记栈帧范围:EBP ESP寄存器访问栈帧数据:push pop指令访问栈帧数据:mov指令小结 如何切换栈帧函数返回时…

APP安全测试填坑

在实习过程中,我接触到了一些SDL安全提测的工作。原来我是学web端渗透比较多的,移动端这块基本没怎么试过手,结果刚开始一直踩坑,连抓包都抓不到(T▽T)。 下面记录下我遇到的部分问题和解决方法&#xff0…

Python基础04-数据容器

零、文章目录 Python基础04-数据容器 1、了解字符串 &#xff08;1&#xff09;字符串的定义 字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。<class ‘str’>即为字符串类型。一对引号…

【C++干货铺】会搜索的二叉树(BSTree)

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 前言&#xff1a; 二叉搜索树 二叉搜索树概念 二叉搜索树操作 二叉搜索树的查找 二叉搜索树的插入 二叉搜索树元素的删除 ​二叉搜索树的实现 BSTree结点 …

人工智能导论习题集(4)

第六章&#xff1a;机器学习 题1题2题3 题1 题2 题3

大型网站架构演进过程

架构演进 大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户&#xff0c;问题就会变得很棘手。大型网站架构主要就是解决这类问题。 架构选型是根据当前业务需要来的&…

系列六、Springboot整合Spring Session

一、概述 在互联网发展的起始阶段&#xff0c;一般使用的是单服务架构&#xff0c;由于只有一台服务器&#xff08;Tomcat&#xff09;&#xff0c;所有的请求和响应都是基于这台服务器实现的&#xff0c;那么就不存在session共享的问题&#xff0c;但是在互联网发展的今天&…

SpringData自定义操作

一、JPQL和SQL 查询 package com.kuang.repositories;import com.kuang.pojo.Customer; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingR…

Datawhale聪明办法学Python(task3变量与函数)

一、课程基本结构 课程开源地址&#xff1a;课程简介 - 聪明办法学 Python 第二版 章节结构&#xff1a; Chapter 0 安装 Installation Chapter 1 启航 Getting Started Chapter 2 数据类型和操作 Data Types and Operators Chapter 3 变量与函数 Variables and Functions Ch…

NE555芯片

首先看一下NE555芯片的实物图以及电路符号&#xff0c;如下图所示。 NE555是使用很广泛且很受欢迎的芯片之一。上到航空航天火箭&#xff0c;下到电子玩具都能看到它的身影。 下图是它的内部结构图&#xff0c;可以更快的去学习并且上手使用这个芯片。最上面是3个5k的电阻&am…

javaEE -17(13000字 CSS3 入门级教程)

一&#xff1a;CSS3 简介 CSS3 是 CSS2 的升级版本&#xff0c;它在 CSS2 的基础上&#xff0c;新增了很多强大的新功能&#xff0c;从而解决一些实际面临的问题&#xff0c;CSS3 在未来会按照模块化的方式去发展&#xff1a;https://www.w3.org/Style/CSS/current-work.html …