DBLE是基于开源项目MyCat发展的企业级开源分布式中间件,适用于高并发及TB级海量数据处理场景;江湖人送外号 “MyCat Plus”;其简单稳定,持续维护,良好的社区环境和广大的群众基础使DBLE得到了社区的大力支持。

DBLE项目介绍

DBLE 官方项目:

https://github.com/actiontech/dble

如对源码有兴趣或者需要定制的功能的可以通过源码编译安装

DBLE 下载地址:

https://github.com/actiontech/dble/releases

DBLE 官方社区交流群:669663113

DBLE的主要配置文件

前两篇文章"DBLE Rule.xml 配置解析"、"DBLE Schema.xml 配置解析" 分别介绍DBLE中Rule.xml和Schema.xml的配置,今天继续介绍DBLE中Server.xml文件的配置,希望通过本篇的介绍,能对Server.xml文件的整体结构和内容有较为清晰的认识,方便大家能快速地入门。

DBLE的配置文件都在conf目录里面,常用的几个配置文件如下:

DBLE是一个JAVA分库分表中间件,既然是JAVA应用肯定会有JVM相关的配置,在DBLE中我们选择wrapper来作为管理DBLE进程的工具,配置文件在conf/wrapper.conf中,关于JVM的详细介绍在wrapp.conf。

Server.xml配置解析

Server.xml是DBLE的重要配置文件之一, 整体配置可以分为三段,段,段和段,分别定义了DBLE软件的相关配置,用户配置和针对用户的权限控制功能。

关于配置文件,如果在DBLE运行途中修改了配置,要想配置动态生效,只需要使用reload @@config命令,但是需要提醒的是reload @@config对Server.mxl中的段中的内容无法生效,即如果修改了server.xml的system的配置,需要重新启动DBLE使其生效 ,更多关于DBLE管理命令请参考DBLE管理端命令。

同样以思维导图的方式归纳如下,其中个别参数配置只是粗略地将最重要的参数罗列出来,详细的参数还请参考官方文档。

system配置

DBLE通过Server.xml配置文件来定义相关管理行为,如监听端口,sql统计和控制连接行为等功能,DBLE除了支持分库分表功能外,还实现了类似MySQL的慢查询日志功能,并且支持使用pt-query-digest这样的工具进行慢查询SQL分析,极大地方便了DBA的SQL性能分析与问题SQL定位,以下简单列出了一些最重要的也是最基础的功能配置。

用户配置

用户配置在段进行配置,因为在Schema.xml中允许多个schema的存在,因此业务用户也是允许多个用户同时存在,并且还可以给这些用户进行更小粒度的权限划分。

以实际场景来举例,比如当前配置了两个逻辑库adv和motor,分别是汽车和广告业务,这两个库直接没有任何的关联,因此需要分别配置两个用户来使用这两个schema,一个是adv_user,另一个是motor_user,这两个用户登录上去DBLE能看到只有自己的schema,其他schema不可见,两个用户的配置如下:

adv_useradvfalsemotor_usermotorfalse

但是你可能会想万一这两个库之中的表有关联查询呢?对应场景是:我们需要有个用户叫adv_motor_user,它对motor和adv库都需要有权限访问,别担心,DBLE提供了对单个用户可以访问多个schema的配置方式,我们可以在schemas中指定多个schema,之间用逗号分隔,配置生效后使用这个用户就能登录看到两个schema。

adv_motor_usermotor,advfalse

你可能还会想,这样的权限粒度依然不够细,我们需要更细粒度的权限控制,比如需要adv_user的权限仅限于增删改查权限,即需要将权限细分到dml语句, DBLE仍然提供这样的配置,我们可以继续增加privileges的配置,如下图示:

adv_useradvfalse

privileges的check参数作用于是否对用户权限进行检查,默认是不检查,dml的权限是分别是INSERT UPDATE SELECT DELETE四种权限,用4个数字0或1的组合来表示是否开启, 1表示开启,0表示关闭。

在上图中, adv_user对adv库中所有表的默认权限是'1110', 即只有insert, update和select权限, 即如果没有像tb01那样详细地列出来的情况,所有表的权限继承权限1110,上面例子中,ta01作为特殊指定的逻辑表的权限,adv_user对该表的权限是1111。

我们可以看到DBLE可以将权限划分到DML,并且是可以精确到某一逻辑表级别,对于只需要DML权限的场景是足够了,但是这种权限控制还是很粗略,比如如果想让adv_user除了有dml权限之外,还需要有drop table权限,这时候在用DBLE的privileges权限控制就显得无能为力了,因此可行的建议是:

  1. 控制连接后端MySQL的用户的权限,将DBLE侧的权限完全放开, 换句话说只严格限制schema.xml的writehost中配置的连接用户的权限。
  2. 使用后面要讲的黑名单提供的权限控制。

黑白名单配置

针对上的权限粒度略显粗略的限制(事实上大多数场景下DML的权限也已经足够了),DBLE提供黑白名单的功能,白名单就是只允许白名单的连接,而黑名单则是详细的针对已经通过白名单的连接的权限控制,黑名单更类似于SQL审计, 黑名单配置以firewall分隔开来, 典型配置如下:

falsefalsefalse...... 

对于黑白名单,需要注意:

  • DBLE针对来源IP和用户名进行限制,放行白名单连接,对于不在白名单列之中的连接,统统拒绝而无法登陆。 白名单中的来源ip,只能指定固定IP, 暂不支持MySQL "%''类似的ip通配符。

想象一种场景,需要像MySQL一样指定一个ip范围能允许连接DBLE,这时只能一行一行增加允许ip了,此处略显笨拙。

  • 如果配置了黑名单,则再根据黑名单中的权限property 来进一步限制白名单中的用户权限,例如是否允许查询,是否允许INSERT,是否允许UPDATE。可以看出DBLE中黑名单更像是对用户的权限审计,DBLE在黑名单中将上面只能粗糙地限制到DML权限的用户配置做了较多较细的扩展,这样权限粒度更小,从实际场景来说,这更符合生产需要,由此我们可以针对性地去掉一些危险的SQL。

总结

本文简单介绍了Server.xml中的三个重要的配置段落,分别是DBLE的系统配置,用户配置以及黑白名单功能,针对用户配置则介绍了实际应用场景下的配置以及对应的DML权限配置,并详细介绍了DBLE黑白名单配置实践。

往期精选

| 社区投稿

社区投稿|DBLE和Mycat跨分片查询结果不一致案例分析

开源分布式中间件 DBLE rule.xml 配置解析

| 使用指南

开源分布式中间件 DBLE 快速入门指南

| 社区活动

重磅预告|如何获取全国 25场 MySQL 主题大会免费入场券

java 解析xml报文解析_开源分布式中间件 DBLE Server.xml 配置解析相关推荐

  1. 开源分布式中间件 DBLE Schema.xml 配置解析

    文章来源:爱可生开源社区 作者:张沈波 1.DBLE项目介绍 DBLE 是企业级开源分布式中间件,江湖人送外号 "MyCat Plus":以其简单稳定,持续维护,良好的社区环境和广 ...

  2. 2018 开源分布式中间件 DBLE 年报

    2017年10月24日,爱可生正式开源了我们自主研发的分布式中间件-DBLE,经过一年各行业用户业务应用沉淀,我们持续进行产品打磨与更新迭代,在2018年的最后一天,我们使DBLE拥有了更清晰的定位. ...

  3. 开源分布式中间件 DBLE 快速入门指南

    2019独角兽企业重金招聘Python工程师标准>>> 环境准备 DBLE项目资料 DBLE官方网站:https://opensource.actionsky.com 可以详细了解D ...

  4. vba xml 怎么设置父节点_熊二做了一个xml报文处理的开源库easyxml

    ❝ 自信.冷静.专注.-- TM 熊的自我勉励 ❞ 1. 前言 熊二从去年开始,因项目需求接触到xml报文的处理,也是我第一次学习用C/C++的方式处理基于DOM模型的xml报文.因为本人比较懒hhh ...

  5. mysql遍历 xml文件路径_解决Mapper接口和mapper.xml的文件位置问题

    今天遇到一个问题是mybatis中接口和对应的mapper文件位置不同,而引起的操作也会不同,在网上找了好久最终找到了方法,这里就简单的解析一下: 我们知道在典型的maven工程中,目录结构有:src ...

  6. java 数学公式解析框架有哪些_开源工具 | 推荐几个Gitee火热Java项目

    openEA开源周刊 openEA开源社区的官方运营载体 这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧! 摘要:OkHttps 是近期开源的对 OkHttp3 轻 ...

  7. 腾讯QQ团队开源分布式后台毫秒服务引擎全解析:引擎架构、RPC、灰度……

    腾讯QQ团队将于12月4日开源一个服务开发运营框架,叫做毫秒服务引擎(Mass Service Engine in Cluster,MSEC),它集RPC.名字发现服务.负载均衡.业务监控.灰度发布. ...

  8. Spark生态系统解析及基于Redis的开源分布式服务Codis

    摘要:在第九期"七牛开发者最佳实践日"上,陈超就Spark整个生态圈进行了讲解,而刘奇则分享豌豆荚在Redis上的摸索和实践. 1月24日,一场基于Spark和Redis组成的分布 ...

  9. java调用银海社保接口_[开源] C# 封装 银海医保的接口

    C#Model封装 银海医保的接口 介绍 银海医保的接口我就不说了,很多家医院在用,但是网上资料不多,接口通过COM组件调用.官方示例有VB,delphi,PB. 我们的HIS是B/S 程序,不能直接 ...

  10. java 串口判断报文完整_如何判断串口接收完成一帧数据

    1 使用定时器判断 这种方式建立在两帧数据不可能连续发送的基础上,也是modbus判断帧结束的方式,在接收到第一个字节的时候打开定时器,如果继续接收到数据则更新定时器,在被设定时间内没有接收到数据则定 ...

最新文章

  1. AgilePoint商业流程管理平台
  2. USACO - 3.1.6 - Stamps
  3. 原来女孩子做电子工程师也很厉害。。
  4. kafka基础之核心概念
  5. linux 扩展swap虚拟内存
  6. C++ float、double判断是否等于0
  7. 利用caffe的Python接口生成prototxt文件
  8. linux打开计算器命令,linux命令行计算器
  9. 解决可视化界面的时候灰屏【已解决】
  10. 高斯核与高斯核的卷积的结果还是一个高斯核的推导
  11. C语言-排序中的快速排序(简称快排)
  12. jupyter notebook 更改工作环境和浏览器
  13. 网站CNZZ数据统计的实现方式
  14. Win11此应用无法在你的电脑上运行怎么解决
  15. Python 下载哔哩哔哩视频
  16. Unity EditorWindow Rename
  17. 环洋市场调研-2021年全球肽化妆品行业调研及趋势分析报告
  18. CVE和NVD的关系
  19. 按F12,你真的会准确定位前后端问题吗?
  20. SpeedTree - 在SpeedTree中导入自定义模型

热门文章

  1. 100%会问的float?
  2. 如何在WP模拟器中启动、暂停、重启应用
  3. CA证书服务器(6) 利用CA证书配置安全Web站点
  4. 《领域驱动设计:软件核心复杂性应对之道(修订版)》—第2章 2.3节一个团队,一种语言...
  5. 【leetcode】Trips and Users
  6. 为Android模拟器配置代理
  7. 现有php环境下安装memcached并测试(centos6.4系统64位)
  8. 原声socket 向服务端发长连接
  9. 分享一个多功能SVN备份脚本
  10. TensorFlow错误ValueError: No gradients provided for any variable