IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mycat的安装使用(技术篇) -> 正文阅读

[大数据]mycat的安装使用(技术篇)

第一章:概念

1.为什么要拆分:

①MySQL 实例内部结构

1.单一架构

[2]复制架构:

尽管搭建了复制架构,但是实际上从逻辑上来说仍然只有一个 db_hr 数据库。

②性能瓶颈

MySQL 工作过程中的性能瓶颈主要来自于下面三个方面(同等硬件条件下):

  • 数据存储量:单表 1000 万条数据达到极限;500 万条开始性能明显下降;300 万条开始就应该考虑拆分。
  • I/O 瓶颈:关系型数据库以硬盘作为主要存储介质,所以必然存在 I/O 瓶颈。
  • 访问量瓶颈:通常 MySQL 的最大连接数默认是100,最大可以达到 16384。

由此我们可以看出,对数据库进行拆分主要是出于数据量不断增加的挑战。

2、拆分方式

①垂直拆分

垂直拆分是最容易想到的拆分方式。它按照项目的业务功能模块,把从属于不同模块的数据库表分散到对应的不同数据库中。

这种拆分的优缺点:
    -优点:
        -拆分的规则明确,不同的功能模块或者服务模块分配到不同的数据库
        -数据库维护与定位简单
    -缺点:
        -并没有解决单表数据量太大的问题
        -会出现跨库join
        -需要对上层应用系统的代码进行重构,修改原有的事务操作

②水平拆分

针对一张数据量很大的表,把它拆分为多张表,数据分流保存到各个拆分后的数据库表中。

如果数据量继续增加,超过一个单库能够容纳的极限则需要继续分库:

这种拆分方式的优缺点评价:

- 只分表不分库:
    - 同库无分布式事务问题,事务处理相对简单
    - 同库无跨库 join 问题
    - 表拆分后不存在超大型表的性能问题
    - 只要拆分规则定义好,很难出现扩展性的限制,但拆分规则设定并不简单
,规则一定会和业务挂钩,如根据 id、根据时间等。
- 既分表又分库:
    - 异库存在分布式事务问题
    - 异库存在跨库 join 问题
    - 多数据源管理难度加大,代码复杂度增加

3、MyCat 简介

尽管拆分后面临很多问题,但是随着数据量的增加又不得不拆,mycat就是帮助我们实现这个功能的:

MyCat 是一款数据库中间件。

对于应用程序来说完全透明:不管底层的数据如何拆分,应用只需要连接 MyCat 即可完成对数据的操作。

支持 MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库。

MyCat 不存储数据,它只是数据的路由。

底层拦截用户发送过来的 SQL 语句并进行分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

Mycat的特性如下:

  • 支持SQL92标准
  • 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理
  • 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群
  • 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
  • 基于Nio实现,有效管理线程,高并发问题
  • 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数
  • 支持单库内部任意join,支持跨库2表join
  • 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询
  • 支持多租户方案
  • 支持分布式事务
  • 支持全局序列号,解决分布式下的主键生成问题
  • 分片规则丰富,插件化开发,易于扩展
  • 强大的web,命令行监控
  • 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb
  • 支持密码加密
  • 支持服务降级
  • 支持IP白名单
  • 支持SQL黑名单、sql注入攻击拦截
  • 支持分表(1.6以后版本)
  • 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0以后版本)

第二章 安装与配置

1、获取 MyCat 程序

访问这个地址下载:https://codeload.github.com/MyCATApache/Mycat-Server/zip/Mycat-server-1675-release

2、解压 MyCat 压缩包到idea中

3、配置 schema.xml

从这里开始,我们就是在初步搭建 MyCat 服务器。我们想要初步实现的目标:

  • MyCat 中配置虚拟数据库、虚拟数据库表,物理库和物理表暂时不拆分
  • 启动 MyCat
  • 使用客户端连接到 MyCat

而让 MyCat 连接物理库、配置虚拟库、虚拟表都需要在 schema.xml 中配置。

①配置文件位置?

?????????

②告诉 MyCat 如何连接物理库schema.xml中配置

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

<!--	配置虚拟数据库(虚拟数据库名,检查sql模型,sql最大限制,随机数据节点)-->
	<schema name="virtual_hr" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="datanode">
<!--        配置虚拟表(制定虚拟表的名称,制定主键,制定使用的节点,制定规则,
				是否开启自增长主键,根据jdbc取出存储
				制定虚拟表对应的物理表)-->
		<table name="virtual_dept" primaryKey="dept_id" dataNode="datanode"
			   rule="sharding-by-intfile" autoIncrement="true"
			   fetchStoreNodeByJdbc="true" subTables="t_dept">
		</table>

	</schema>

<!--	配置数据节点(名称,物理数据库链接连接,具体的数据库)-->
	<dataNode name="datanode" dataHost="physics_db_connect" database="db_hr" />

<!--	物理数据库连接的配置 (名称,最大连接数,最小连接数,负载均衡,写入方式,数据库类型,驱动,选择类型,从服务器数)-->
	<dataHost name="physics_db_connect" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
<!--		心跳检查-->
		<heartbeat>select user()</heartbeat>
<!--		真实物理机地址(命名,url,用户,密码)-->
		<writeHost host="hostM1" url="jdbc:mysql://159.75.227.188:3306" user="root"
				   password="R8tPj-.aC9hWfD8">
		</writeHost>
	</dataHost>

</mycat:schema>

4、配置 server.xml

①配置文件位置

②配置 MyCat 自身的连接信息?

<!--	配置外界连接mycat时候使用的链接信息(mycat用户名,制定密码,
		要链接的虚拟机名称(schema.xml 配置文件中找到 schema 标签的name属性))-->
	<user name="user">
		<property name="password">123456</property>
		<property name="schemas">virtual_hr</property>
	</user>

5、启动 MyCat

②配置 JVM 参数

  • 指定 MYCAT_HOME:这个参数是需要指定 MyCat 工程的 src/main 目录的完整路径。
  • 指定直接内存大小:如果 512M 不够,那就指定 1024M。

-DMYCAT_HOME=D:\idea2019workspace\mycat210722\src\main
-XX:MaxDirectMemorySize=512M

有可能的问题:

?

此时就可以通过数据库进行链接了(注意启动服务是本地localhost,端口8066)

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:27:35  更:2022-03-16 22:31:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:29:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码