DBLE

微课程 | 第十一课《Hint 简介和演示》

倖福魔咒の 提交于 2019-12-23 17:38:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> https://v.youku.com/v_show/id_XNDQ3OTc2MzkyNA==.html 前几期我们介绍了 Global 表和 ER 表,除此之外 DBLE 还提供了 hint 来指定路由的功能。 什么是 Hint 我们先介绍一下 hint,hint 是一种有效注释,将业务应用指定一个分库,实现中间件可以用指定的方式去下发 SQL。基本上是这样的,hint 里面是有一个路由的结果,比如我这里面 ID=1。通过拆分算法求模,我知道 ID=1 会下发给哪个库,但是真正的执行的 SQL 是另外一种 SQL,这里面这个 SQL 也不是很好,但是能表达功能。通过 hint 来计算路由,然后计算好路由以后下发的是另外一条我想下发的语句。 我们举一个例子。 比如说 insert xx select * from xxx 现在 DBLE 是不支持的,但是我们可以通过 hint 这种方式来实现。所以 hint 目的就是指定路由结果,但实际执行的是 SQL 的内容。 Hint 的分类 DBLE 的 hint 一共分这几种(如图),一个是通过 SQL 来计算路由。一个是直接指明了我要下发的节点。第三种和我们之前说的有点不一样,就是在读写分离中,我强制要求我的 select 强制走主节点,也可以通过 hint

DBLE用户故事 | 工商银行MySQL数据库架构解密

百般思念 提交于 2019-12-16 16:10:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原创作者:[爱可生开源社区] 本文摘要 本文根据DTCC数据库大会分享内容整理而成,将介绍工行 IT 架构转型中传统 OLTP 数据库架构面临的挑战和诉求,构建基于 MySQL 分布式企业级解决方案实践历程,包括技术选择、高可用设计、两地三中心容灾、运维管理、资源使用效率等方面的思考和实践经验,同时也介绍了工行转型的成效以及对后续工作的一些思考。 关键词 拥抱开源;MySQL; 高可用; 分布式;数据拆分; DBLE; 管理平台;灾备;容器; 本文目录 一、数据库转型背景 1. 传统IT架构挑战 2. 转型的核心诉求和策略 二、转型的发展之路 1. 转型路线图 1.1 三年转型之路 2. 选型阶段 2.1 方案选型调研 2.2 分布式技术栈 2.3 MySQL高可用方案 3. 实施推广阶段 3.1 基础研究和应用试点 3.2 分布式中间件应用 3.3 运维架构流程完善 3.4 运维管理能力沉淀 3.5 统一运维平台建立 3.6 故障自动切换上线 4. 实践中的改善优化 4.1 高可用方案改进 4.2 异地灾备和存储优化 4.3 MySQL 容器化探索 三、转型成效 1. 转型实施成果 2. 典型案例1:个人账户平台 3. 典型案例2:信息辅助服务 四、后期工作思路 一、数据库转型背景 1. 传统IT架构的挑战

微课程 | 第八课《Global 表简介》

匆匆过客 提交于 2019-12-13 18:33:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> https://v.youku.com/v_show/id_XNDQ2ODE3NTAxMg==.html 上一期我们主要介绍了一些不同拆分规则的表怎样使用,接下来我们介绍一下 Global 表。 什么是 Global 表? 我们有一个定义:对于数据量不大的字典表(比如超市商品)。对于零售系统来说,比如超市商品 SKU 可能有几十万规模的数据量,并且 SKU 不会出现大量增删改,也不会出现并发增删改。对于这样的数据特性来说,非常适合做 Global 全局表。 全局表就是在多个分片上都有一份同样的副本。 我们在这里举了一个这样的例子。sales 表是详细销售情况表,按照时间日期来拆分的。我们可以按照左边的 date 是 20190211,右边的 date 是 20190212,按照 date 字段拆分的,而商品表可以完全一模一样复制一份到每个库。因为商品表不经常做增删改,也没有很大的并发压力,是非常适合做全局表。 这样一个设计有什么好处呢,就是当我在做 JOIN 的时候,我可以只按照 sales 表的分布区路由数据,而不用关心商品表的分布。这样直接路由下发是正确的,我们来看在 DBLE 当中 Global 表是怎么配置的。 Global 表配置操作 https://v.youku.com/v_show/id

微课程 | 第七课《不同拆分规则的表》

雨燕双飞 提交于 2019-12-09 17:08:48
https://v.youku.com/v_show/id_XNDQ2MzQ0NTA5Mg==.html 上一期我们介绍了复杂查询功能,这期我们继续讲解不同拆分规则的表。 现在我有四个节点,四个节点是按照求模拆分的,tb_mod 上有这样 5 条数据。这边 6 7 打个括号,意思是如果有 6 7 的话将会是这样一个数据分布。然后通过 jump hash 算法拆分后是这样的,1 2 3 分布在 dn2 上,4 6 分布在 dn1 上。这时我要做一个 tb_mod 和 jump_hash 的 JOIN,如果直接把 JOIN 下发是不对的。看图可以知道,这样只有 dn2 的 1 和 dn1 的 4 能关联上,2 3 都会被都丢掉,所以我们来看一下跨库 JOIN。 跨库 JOIN https://v.youku.com/v_show/id_XNDQ2MzQ0NzM3Mg==.html 这里面我会有三个例子 INNER JOIN,LEFT JOIN 和 RIGHT JOIN。因为 jump_hash 里面的 id 和 code 都是一样的,所以我这里面写的是 id。 我们来执行一下,看到 1 2 3 4 数据都已经出来了。LEFT JOIN 结果也对的,大家对 LEFT JOIN 也比较熟悉,左边在的数据右边没有也会查出来,RIGHT JOIN 也是一样的。我们来看看是怎么做的

微课程 | 第四课《目录结构演示》

*爱你&永不变心* 提交于 2019-12-06 02:46:04
https://v.youku.com/v_show/id_XNDQ1MjQ3NjE2OA==.html 上一期我们介绍了 DBLE 的普通安装方式,这一期我们来了解一下安装好的目录结构。 https://v.youku.com/v_show/id_XNDQ1MjQ5MzQyOA==.html DBLE 安装目录介绍 首先是一个算法的目录,存放自定义算法。然后是 bin 目录,存放启动脚本和初始化集群状态的脚本,然后还有小工具命令。conf 目录是最重要的,存放配置文件,我们后面详细说它。pid 是守护进程文件,如果进程不在了,pid 就消失了。所以如果监控的话,可以通过这种方式来去看 dble 状态是否正常。然后 lib 目录是我们的 jar 格式的包存放目录,包括一些依赖包以及最重要的 dble 的 jar 文件。然后是日志目录,日志目录里面可以看到已经有写了些日志,包括一些归档的按照日期分类的日志,当前的 dble 日志,还有一个 GC 日志,GC 日志只有发生 GC 才会去写。如果我们有 GC 方面的问题,可以以此诊断,还有一个分布式事务的日志。还有一个 version.txt 文件,这里面有一个彩蛋!这个彩蛋可以在 Linux 环境下展示一个二维码。这个二维码是我们的社区微信公众号的二维码,还显示了当前 dble 的版本信息。最后是 viewConf 文件,在使用

微课程 | 第三课《普通安装方式》

瘦欲@ 提交于 2019-12-05 14:44:11
https://v.youku.com/v_show/id_XNDQ0NzY3MTQ1Ng== 上一期我们介绍了通过 Docker 来安装 DBLE 的安装方式。如果是普通的安装方式我们要怎么做呢? 我这里同样有一个安装视频演示,理论上应该搭建两个 MySQL 的真实环境来做,但是 MySQL 今天不是我们的重点,所以 MySQL 还是用容器方式做的。我们的 DBLE 是使用单独的一个压缩包安装的,DBLE 手册中有一个 quick start ,可以抽空去看。 接下来安装演示。 https://v.youku.com/v_show/id_XNDQ0NzY3NTgzNg== MySQL 的安装 首先下载好 github 上发布的安装包,解压后当前目录下生成一个叫 dble 的目录。因为没有安装启用 MySQL 服务,所以先要用 Docker 来启动一下 MySQL 的服务(非常方便)。接下来指定 MySQL 服务所在容器的名字,指定登录的密码和映射端口。使用 Docker 里面 MySQL 端口是 3306,端口映射宿主机是 33061。大家可以理解为MySQL 数据库的端口是 33061,第一个搭建完毕。第二个只需要改一下容器名称和端口,避免冲突。这样两个 MySQL 数据库可以使用了。 然后用 docker ps 查看两个 MySQL 正在运行。这样就完成了 MySQL

开源分布式中间件DBLE容器化快速安装部署

只谈情不闲聊 提交于 2019-12-05 12:58:28
原创:爱可生开源社区 DBLE是基于开源项目MyCat发展的企业级开源分布式中间件,适用于高并发及TB级海量数据处理场景;江湖人送外号 “MyCat Plus”;其简单稳定,持续维护,良好的社区环境和广大的群众基础使DBLE得到了社区的大力支持。 开源分布式中间件DBLE: DBLE 最新版本 2.19.01.0 下载地址: https://github.com/actiontech/dble/releases 附件包含中文PDF文档,对应online文档地址: https://actiontech.github.io/dble-docs-cn/ 社区技术交流群,迅速获取官方支持 : QQ群:669663113 3月1日,DBLE 最新版本 2019 农历年首发对新版本的新增特性进行简单说明,本期对新增特性之一的docker镜像如何用于快速开始进行举例说明。 快速开始(docker-compose) 1. 关于本节 如何快速使用DBLE的docker-compose文件来启动一个DBLE的quick start 一个按照自定义的配置和SQL脚本来启动DBLE quick start的用例 2. 安装依赖 安装docker 安装docker-compose 安装MySQL连接工具,用于进行连接测试观察结果 3.安装过程 从DBLE项目中下载最新的docker-compose

微课程 | 第二课《Docker 安装方式介绍》

不问归期 提交于 2019-12-05 07:09:40
微课程 | 第二课《Docker 安装方式介绍》视频 https://v.youku.com/v_show/id_XNDQ0NDUzNjkxNg==.html?spm=a2hzp.8244740.0.0 上一期我们介绍了 DBLE 的基本概况,下面进入我们的正题,正题基本分为这四个部分。 本次课程目录结构 1. 安装演示 会介绍我们两种快速开始的方式。让大家在不太熟悉,不知道是什么结构,甚至不了级上期结构图的情况下,快速开始。 2. 基本功能 详细介绍一下我们 DBLE 中间件的基本功能。比如说我们最常见的数据库的增删改查,包括其他的一些我现在做数据拆分,拆分是怎么做的,介绍一下这些。 3. 进阶功能 包括全局序列,管理应用端的一些功能。 4. 分析功能 分析功能对运维比较友好。想知道我 SQL 怎么样写,怎么样去通过查询计划去审核我的 SQL 写的是否合理,包括我怎么去看一条慢 SQL,在整个运行中瓶颈体现在哪里,包括我的慢日志是怎样收集和使用慢日志,这样的一个状况。 快速安装 从这开始就是 Docker 快速开始,我们去启动部署一个这样的结构,我们先把应用层抛开。应用层在这里可能就是一个 MySQL client 客户端。一个 DBLE 两个 MySQL 。搭一个这样的环境大概需要多久?答案:两行命令。 前提:已经安装了 Docker 和 Docker-compose。

社区投稿 | DBLE 自定义拆分算法

痞子三分冷 提交于 2019-12-04 15:59:21
作者简介 钟悦,就职于某大型国有银行,多年从事MySQL和分布式中间件的方案设计与实施工作;资深MySQL数据库专家,架构师;DBLE开源项目积极贡献者。 文章概要 DBLE默认支持数十种数据拆分算法,基本能满足大部分的社区用户的使用需求;为了满足更广的业务场景,DBLE还支持更加灵活的自定义拆分算法; 本文对面向有类似需求的DBLE开发者,提供了一个如何开发和部署自定义的拆分规则的一个指引 。 目录 1. 工作原理 1.1 函数的加载 1.2 路由计算 1.3 参数查询 2. 开发和部署 2.1 开发 2.2 部署 3. 接口规范 3.1 配置项setters 3.2 selfCheck() 3.3 init() 3.4 calculate()和calculateRange() 3.5 getAllProperties() 4. 内置路由函数的缩写与类名对照表 1. 工作原理 1.1 函数的加载 路由函数的加载发生在DBLE启动或重载时。 DBLE读取rule.xml时,根据用户配置的标签的class属性 DBLE通过Java的反射机制,从$DBLE_HOME/lib的jar包中,找到对应的jar(里的class文件),加载同名的类并创建对象 DBLE会逐个扫描中的标签,并根据name属性来调用路由函数的对应setter,以此完成赋值过程——例如,如果用户配置了2

DBLE 新版本 2.18.12.0 Release

余生长醉 提交于 2019-12-04 15:59:07
1月7日,企业级开源分布式中间件DBLE 新版本 2.18.12.0 发布,本次新版 对一些可透传的复杂查询做了优化处理 ,不再拆分并下发而是直接透传; 升级了 druid 的依赖; 解决了一些由于解析器不支持的 SQL 支持度 问题; 修复了大量社区和专业测试团队提交的 issue ,多到需要翻页。 dble 新版本 2.18.12.0 发布, 下载地址: https://github.com/actiontech/dble/releases 附件包含中文PDF文档,对应online文档地址: https://actiontech.github.io/dble-docs-cn/ Features Support MySQL Protocol::AuthSwitchRequest #819 Optimize Query Plan: Some queries can be sent to one datanode in fact, no need to rewrite and push down. #752 Support DDL: create table tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) } #757 Upgrade Druid from 1.0.31 to 1.1.10 #749 The log of