mycat

Mycat

╄→尐↘猪︶ㄣ 提交于 2019-12-02 22:32:53
mysql主从实现 Mycat不负责任何的数据同步问题,mysql的主从复制还得从mysql层面来实现;如果没有实现mysql的主从复制,后文就都成 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。 了。 mysql的主从复制是实现读写分离的基础,具体的搭建过程请参考:mysql5.7.18的安装与主从复制,本文就不展示详细的搭建过程了。我的mysql主从信息如下 master:192.168.1.210;slave:192.168.1.211; 需要复制的数据库:mycat_db Mycat搭建 Mycat是什么?是数据库中间件,介于数据库与应用之间,进行数据处理与交互的中间件服务,可以简单的理解成数据库代理,我们的应用只需要与数据库中间件交互,而无需关注复杂的数据库部署。 如上图所示,数据被分到多个分片数据库后,应用如果需要读取数据,就需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要在应用层直接处理,原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复造轮子。所以有了数据库中间件

MyCAT全局序列号-数据库方式

匿名 (未验证) 提交于 2019-12-02 22:06:11
1.MyCat中的全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一。为此,MyCat 提供了全局 sequence,并且提供了包含本地配置和数据库配置等多种实现方式。 2.数据库方式 原理:在数据库中建立一张表,存放 sequence 名称(name),sequence 当前值(current_value),步长(increment int 类型每次读取多少个 sequence,假设为 K)等信息; 获取步骤: 当初次使用该 sequence 时,根据传入的 sequence 名称,从数据库这张表中读取 current_value,和 increment 到 MyCat 中,并将数据库中的 current_value 设置为原 current_value 值+increment 值; . MyCat 将读取到 current_value+increment 作为本次要使用的 sequence 值,下次使用时,自动加 1,当 使用 increment 次后,执行步骤 1)相同的操作. MyCat 负责维护这张表,用到哪些 sequence,只需要在这张表中插入一条记录即可。若某次读取的 sequence 没有用完,系统就停掉了,则这次读取的 sequence 剩余值不会再使用。 3.配置数据库方式 <3.1> 修改Mycat配置文件server

mysql之MHA、Mycat综合分析

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、简介     你可以把它看做是一个监控MySQL的工具,当master挂了之后,起一个slave作为master,另外一台slave重新作为新master的备库;     所以MHA的架构做好是三台数据库,并且已经提前做好了主从模式(一主两从),MHA可以管理多组MySQL主从集群;VIP的跳转也     是通过keepalived来实现的,总体的架构设计如下图所示(借助网上的图片):   Mycat:     实现读写分离、分库分表的一个开源的工具,我这里没有使用到分库分表的功能,只是单纯的做读写分离;mycat实现读写分离是在配置文件     中配置的,配置起来也比较的简单,下面会详细介绍,架构方面则是采用的如下图所示的架构模式: 二、MHA搭建安装   2.1 搭建( 一主两从已经实现,这里不做阐述 )     包分为两部分,一个是manager的包,另外一个是node包;包的下载地址为:https://pan.baidu.com/s/1D6v6yPeCTecaB68LwPZJ2A,密码:oyez     所有的节点都需要安装node包,然后所有的节点你都需要安装Perl的依赖包:perl-DBD-MySQL     如果还缺少其它包的话,那就见招拆招呗!!     还有一点需要注意:那个manager包你可以单独部署在一台服务器上,也可以部署在其中一台node节点上  

MyCAT+MySQL 搭建高可用企业级数据库集群

匿名 (未验证) 提交于 2019-12-02 22:06:11
MyCAT+MySQL 搭建高可用企业级数据库集群 第1章 课程介绍 课程介绍 1-1 MyCAT导学 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的,介绍如何以打包好的可执行程序的方式来启动MyCAT。以及如何对其相关的启动配置文件进行配置。 2-1 章节综述 2-2 什么是MyCAT 2-3 什么是数据库中间层 2-4 MyCAT的主要作用 2-5 MyCAT基本元素 2-6 MyCAT安装 第3章 MYCAT核心配置详解 本章将对MyCAT的常用核心配置文件server.xml、rule.xml以及schema.xml详细讲解,也会对常用的分片算法进行逐一讲解 3-1 章节综述 3-2 常用配置文件间的关系 3-3 server.xml配置详解 3-4 log4j2.xml配置文件 3-5 rule.xml文件详解 3-6 常用分片算法(上) 3-7 常用分片算法(下) 3-8 schema.xml文件用途 3-9 schema定义逻辑库 3-10 table标签 3-11 dataNode标签 3-12 dataHost标签 3-13 dataHost标签属性 3-14 heartbeat标签 3-15 writehost标签 3-16 schema总结 第4章

MyCat教程六:全局序列号-全局主键的自增长

匿名 (未验证) 提交于 2019-12-02 22:06:11
主键 维护的问题,此时肯定不能使用单个数据库中id自增的方式来处理了,这时我们就可以通过MyCat中提供的几种增长的方式来实现 全局主键自增 一、本地文件自增方式 本地文件自增 方式 1. 修改分片策略 crc32slot 是不支持主键自增的,所以我们需要修改为 auto-sharding-long 2. 修改server.xml文件 sequnceHandlerType 是用来配置主键生成类型的 sequnceHandlerTypeֵ 说明 0 本地文件自增方式 1 数据库自增方式 2 本地时间戳自增方式 所以我们需要先把sequnceHandlerType的值修改为 0 3.sequence_conf.properties介绍 sequence_conf.properties 中有序列的相关配置信息 #Wed Oct 16 07:40:44 CST 2019 COMPANY.MAXID=2000 GLOBAL.MAXID=20000 COMPANY.HISIDS= CUSTOMER.MAXID=2000 HOTNEWS.CURID=1000 ORDER.MINID=1001 CUSTOMER.HISIDS= HOTNEWS.MINID=1001 GLOBAL.CURID=10002 ORDER.MAXID=2000 COMPANY.CURID=1000 CUSTOMER

Mycat 连接Mysql8.0以上版本

匿名 (未验证) 提交于 2019-12-02 22:02:20
一 、下载jdbc 驱动 http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.16/ ,下载之后将mycat/lib 文件夹下mysql-connector-java/5.1.35 删掉,上传mysql/mysql-connector-java/8.0.16/ 到mycat/lib 目录下。 再给jar包赋权限 [root@oracle-server lib]# chmod 777 mysql-connector-java-8.0.16.jar 二、修改schema.xml <?xml version="1.0"?> <mycat:schema xmlns:mycat=“ http://io.mycat/ ”> <schema name="TEST" checkSQLschema="true" sqlMaxLimit="100"> <!--(一定要把checkSQLschema改成true)--> <table name="tb_user" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode

mycat+ mysql集群 分库分表

匿名 (未验证) 提交于 2019-12-02 22:02:20
mycat介绍 Mycat数据库分库分表中间件 国内最活跃的、性能最好的开源数据库中间件! Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单

Mycat实现读写分离

匿名 (未验证) 提交于 2019-12-02 21:59:42
随着应用的访问量并发量的增加,应用读写分离是很有必要的。当然应用要实现读写分离,首先数据库层要先做到主从配置。 应用实现读写分离至少有两种方法: 应用本身通过代码实现,例如基于动态数据源、AOP的原理来实现写操作时用主数据库,读操作时用从数据库。 通过中间件的方式实现,例如通过Mycat,即中间件会分析对应的SQL,写操作时会连接主数据库,读操作时连接从数据库。 本篇文章是介绍通过Mycat中间件的方式实现读写分离。 1、Mycat Mycat是一款开源的数据库中间件,其官网为 http://www.mycat.io/ ,其中官方对它介绍为: Mycat 是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的Mycat 智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变。 Mycat的实现原理为: Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL 语句,首先对SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

mycat 配置

淺唱寂寞╮ 提交于 2019-12-02 16:29:51
最近在看 mycat ,官网: http://www.mycat.io/ 上面就有 PDF 的教程下载。但是对于我这个初学者来讲,搭建环境的时候还是有点晕,下面从一个简单的例子来讲解相关配置。我用的是 linux 版本的,在解压后的目录记作:${MYCAT},在 ${MYCAT}/conf 目录下有几个关键的配置文件。 1. server.xml 主要用来配置 mycat 这个服务器的一些配置。程序员开发时,应该只关注一个数据库连接,但是分库分表时,数据是存在不同的物理机的 mysql 里的。 这个文件的其实配置的就是一个数据源,这个数据源可以通过 mycat 去按需连接到不同的物理机的 mysql 去获取数据。 <?xml version="1.0"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户--> <property name="nonePasswordLogin">0</property> <!-- 连接 mycat 的端口 --> <property name="serverPort">8066</property> <!--

简析JavaScript中的this关键字

旧城冷巷雨未停 提交于 2019-12-02 10:14:50
本文为译文,文章有点长,但是仔细通篇阅读下来,关于 this 的识别问题基本就搞定了。由于译者水平有限,文中有纰漏之处,还请读者多多指正。下面看正文吧: 1. 谜之this 在很长一段时间内, this 关键字都让我感到迷惑,相信很多JavaScript的初学者也是一样。 this 是JavaScript中很强大的一个特点,但是想搞懂它,你必须得花点时间。 对于像Java、PHP这样的标准语言来说, this 在类方法中指代的就是调用这个方法的实例。一般来说, this 不能在方法外使用,如此简单的规则不会让人迷惑。 但是在JavaScript中情况就有些不同了: this 指的是当前函数的执行上下文。在JavaScript中,函数有4种调用类型: 函数调用(function invocation): alert('Hello World') 方法调用(method invocation): console.log('Hello World') 构造调用(constructor invocation): new RegExp(\\d) 间接调用(indirect invocation): alert.call(undefined, 'Hello World') 每种调用类型都有自己定义执行上下文的方式,所以 this 指代的对象和我们预期的可能稍有不同。