zoukankan      html  css  js  c++  java
  • dble server.xml 配置

    1.3 server.xml 配置

    整体XML结构

    • system (目前reload不会做变更)
      • properties
    • user (可多值,reload可变更)
    • firewall (reload可变更)
      • whitehost
      • blacklist
      • host

    配置选项

    注意:"实例/全局属性" 指的是如果集群配置多个中间件,是否要求配置在全局级别保持一致,或者实例间可以不同

    version

    在2.18.12.0之后的版本中server.xml在文件头中添加了version属性,以供运维人员区分配置创建或修改的版本(xml配置version对照表)
    verison字段不匹配时,启动和dryrun会给出NOTICE的提示,但不会影响功能

    property

    模块

    配置名称


    配置内容


    默认值/单位


    详细作用原理或应用


    配置范围


    范围

    版本变更
    后端连接socket 配置

    backSocketSoRcvbuf  


    后端套接字接收缓冲区大小


    1024×1024×4
    ,单位字节


    在创建后端管道的时候作为buffer大小使用


    正整数

    实例


    -


    backSocketSoSndbuf  


    后端套接字发送缓冲区大小


    1024×1024
    ,单位字节



    在创建后端管道的时候作为buffer大小使用


    正整数

    实例


    -


    backSocketNoDelay


    后端Nagle算法是否禁用


    默认1/单位无


    在创建后端管道的时候禁用延迟加载,会影响网络包的情况 详见相关资料


    1-是,
    0-否

    实例


    -

    前端连接socket 配置

    frontSocketSoRcvbuf  


    前端套接字接受缓冲区大小


    10241X1024
    ,单位字节


    在读取网络传输信息的时候作为每次缓冲的大小使用


    正整数

    实例


    -


    frontSocketSoSndbuf  


    前端套接字发送缓冲区大小


    1024×1024×4
    ,单位字节


    在创建前端管道的时候作为buffer大小使用


    正整数

    实例


    -


    frontSocketNoDelay  


    前端Nagle算法是否禁用


    默认1


    在创建前端管道的时候禁用延迟加载 相关资料


    1-是,0-否

    实例


    -

    Session预留内存配置

    orderMemSize


    session中的复杂查询order预留内存


    默认4,单位M


    在session初始化的时候创建内存分配对象,在复杂查询order by的时候使用到


    正整数

    实例


    2.18.02.0引入


    otherMemSize


    session中的复杂查询其他预留内存


    默认4,单位M


    在session初始化的时候创建内存分配对象,在复杂查询subQuery以及distinctd的时候使用


    正整数

    实例


    2.18.02.0引入


    joinMemSize


    session中的复杂查询join预留内存


    默认4,单位M


    在session初始化的时候创建内存分配对象,在复杂查询join使用到


    正整数

    实例


    2.18.02.0引入

    堆外内存管理

    bufferPoolChunkSize

    内存池中分配的最小粒度

    默认4096
    ,单位字节


    内存池中分配的最小粒度,需要的大小除以此粒度,向上取整



    实例


    -


    bufferPoolPageNumber


    预分配内存池页数量


    默认 0.8 × MaxDirectMemorySize / bufferPoolPageSize(default 2M)


    在初始化的时候通过和bufferPoolPageSize的相乘确定缓冲池最后的大小,内存配置建议见1.4_wrapper.conf



    实例


    -


    bufferPoolPageSize


    预分配内存池页大小


    默认512×1024×4
    ,单位字节


    在初始化的时候通过和bufferPoolPageNumbe的相乘确定缓冲池最后的大小,


    注意:虚拟机参数MaxDirectMemorySize(见1.4_wrapper.conf)需要大于bufferPoolPageNumber * bufferPoolPageSize,否则会触发OOM



    实例


    -


    mappedFileSize


    文件映射区单个文件最大体积


    默认1024×1024×64
    ,单位字节


    在初始化的时候此参数确定文件映射区最大容量,参见内存管理章节





    实例


    2.17.04.0引入


    useOffHeapForMerge


    暂时废弃,待重审


    处理跨分配结果合并是不是采用Direct Memory


    默认1


    在初始化服务的时候会根据此配置初始化一个内存管理对象,并检查剩余内存的大小


    并在执行中影响内存请求时请求到的内存的管理方式,在合并多节点返回数据使用



    实例


    2.17.11.0废弃

    memoryPageSize


    暂时废弃,待重审


    每页内存的大小


    默认1m
    (写法带单位)


    影响在程序中申请内存的最小单位,在多节点结果合并使用



    实例


    2.17.11.0废弃

    spillsFileBufferSize


    暂时废弃,待重审


    写磁盘缓存大小


    默认 2K
    (写法带单位)


    在合并结果集内存不够用的时候通过写磁盘来进行缓冲,


    这个时候spillsFileBufferSize就是写磁盘流buffer的大小



    实例


    2.17.11.0废弃

    dataNodeSortedTempDir


    暂时废弃,待重审

    写磁盘目录 默认相对路径/sortDirs 在合并结果集内存不够用的时候写磁盘

    实例


    2.17.11.0废弃

    统计管理


    bufferUsagePercent


    是否清理大结果集阈值


    默认80, 单位百分号


    定时任务resultSetMapClear使用,周期clearBigSqLResultSetMapMs,定时清理统计的结果集,当定时任务执行时发现结果集统计超过阀值,触发清理结果集的行为


    0-100


    实例


    -


    useSqlStat


    是否启用SQL统计


    默认1/单位无



    启用之后会对于下发的查询进行SQL的统计,分别按照用户、表格、查询条件进行存放在内存中

    并且开启之后会随之开启recycleSqlStat定时任务以固定5秒一次的周期回收SQL统计的结果


    1-是0-否


    实例


    -


    clearBigSqLResultSetMapMs


    定期大结果清理时间


    默认600×1000
    ,单位毫秒



    定时任务resultSetMapClear的执行周期,定时清理记录的查询结果集



    正整数


    实例


    -

    sqlRecordCount 慢查询记录阈值 默认10
    ,单位条
    在定时任务recycleSqlStat中会进行sql记录的清理,当发现记录的慢查询SQL数量超过阀值时,会仅保留阀值数量个元素

    正整数


    实例


    -

    maxResultSet 大结果集阈值 默认512×1024 
    ,单位字节
    当查询的结果集超过这个阀值时,查询的SQL和查询结果集的大小才会被记录到结果集统计里面

    正整数


    实例


    -


    useCostTimeStat


    是否启用查询耗时统计


    默认0/单位无


    开启之后以一定的比例统计查询过程中的各个步骤的耗时情况,可以使用BTraceCostTime.jav进行观测,也可在管理端使用show @@cost_time观察


    1-是0-否


    实例


    2.18.02.0引入


    maxCostStatSize



    默认100


    show @@cost_time结果最近保留的行数



    实例


    2.18.02.0引入


    costSamplePercent


    查询采样百分比


    默认1/单位%




    在耗时采样统计中实际采样百分比为costSamplePercent



    实例


    2.18.02.0引入


    useThreadUsageStat


    开启线程使用率统计


    默认0/单位无




    开启之后能在管理端通过管理命令show @@thread_used查看各个部分的线程使用情况


    1-是0-否


    实例


    2.18.02.0引入

    系统服务基本参数

    bindIp


    服务IP


    默认 "0.0.0.0"


    在服务初始化的时候作为侦听的IP


    有效IP地址,
    推荐默认


    实例


    -


    serverPort


    服务端口


    默认8066


    在服务初始化的时候作为服务侦听的端口


    机器空闲端口


    实例


    -


    managerPort


    控制端口


    默认9066


    在服务初始化的时候作为控制侦听的


    机器空闲端口


    实例


    -


    maxCon


    控制最大连接数


    默认0


    默认不做限制。若maxCon大于0,建立的连接数大于maxCon之后,建立连接会失败.注意当各个用户的maxcon总和值大于此值时,以当前值为准。 全局maxCon不作用于manager用户


    正整数


    实例


    2.18.09.0引入


    processors


    NIO前端处理器的数量


    默认java虚拟机核数
    ,单位个


    进行前端网络IO吞吐的线程数


    正整数


    实例


    -


    backendProcessors


    NIO后端处理器的数量


    默认java虚拟机核数
    ,单位个


    进行后端网络IO吞吐的线程数


    正整数


    实例


    2.18.02.0引入


    fakeMySQLVersion


    dble模拟mysql版本号


    默认NULL


    模拟成正常的MySql版本在进行前端协议交互的时候能够使用到


    MYSQL版本号


    最好全局,实例也可


    -


    processorExecutor


    前端业务处理线程池数量


    默认
    (单核为2,否则等于宿主机核数)


    进行前端具体业务处理的线程池大小,负责解析路由下发


    正整数


    实例


    -


    backendProcessorExecutor


    后端业务处理线程池数量


    默认
    (单核为2,否则等于宿主机核数)


    进行后端具体业务处理的线程池大小,负责回收结果集并合并


    正整数


    实例


    2.18.02.0引入


    complexExecutor


    复杂查询后端业务线程池数量


    默认
    (单核为2,否则等于宿主机核数,宿主机核数大于8时,数量为8


    负责复杂查询或者子命令结果集的回收


    正整数


    实例


    2.18.02.0引入


    sequnceHandlerType


    全局序列处理器的方式


    默认2
    ,单位无


    在初始化的时候根据这个配置选择不同的序列生成器进行加载


    0,通过静态配置文件sequence_conf.properties来设置全局sequence的取值范围


    1,MySQL offset-step序列方式, sequence信息存储在数据库中 


    2,时间戳方式(类Snowflake), 依赖sequence_time_conf.properties


    3,分布式time序列(类Snowflake)


    4,分布式offset-step序列


    1,2,3,4


    全局


    -


    serverNodeId


    服务编号


    默认1


    在分布式事务的时候构造 XATXID,同组中必须不同


    其形式为$ServerName$.serverNodeId.xid


    正整数


    实例


    -

    serverBacklog 前端tcp连接 backlog 默认2048 前端tcp连接 backlog

    正整数


    实例


    2.17.04.0引入

    showBinlogStatusTimeout 拉取一致性binlog线的超时时间 默认60000
    ,单位毫秒
    拉取一致性binlog线的超时时间

    正整数


    全局


    2.17.08.0引入


    usePerformanceMode


    是否启用性能模式


    默认0/单位无


    开启之后Dble会大量占用CPU资源,并提供更高的性能体现,慎用


    1-是0-否


    实例


    2.18.02.0引入

    lowerCaseTableNames 大小写敏感 true 不敏感
    ,其他值敏感
    在代码里面所有涉及表明判断的时候使用到,如果开启true 
    大小写不敏感在代码判定的时候都会转化成小写进行判定

    正整数


    全局


    2.17.04.0引入
    2.17.11.0废弃
    中间件自行获取

    useHandshakeV10 使用V10 1代表使用
    ,否则不使用
    握手协议时使用

    正整数


    全局


    2.17.09.0废弃

    功能性配置

    useCompression


    是否启用数据压缩


    默认 0否


    使用mysql压缩协议


    1 - 是 0 - 否


    全局


    -


    usingAIO


    是否启用AIO


    默认0


    在初始化服务的时候将会作为判断启用AIO或是NIO的依据


    1 - 是 0 - 否


    实例


    -


    useZKSwitch


    是否启用useZKSwitch转换


    默认 true


    是否使用ZK记录节点切换的结果,当且仅当myid.properties中的ZK配置有效时才启用,会将本地文件状态下的dnindex.properties信息保存到ZK的对应路径中使用


    true 是 false否


    全局


    -


    连接缺省值


    charset


    字符集


    utf8mb4


    应用于所有字符集相关的部分,包括前端连接和后端连接


    有效字符集


    全局


    -


    maxPacketSize


    包大小限制


    默认 4×1024×1024


    前后端管道建立的时候用作参数使用


    正整数


    全局


    -


    txIsolation


    隔离级别


    默认 3


    执行具体SQL的时候会比较前后端连接,


    如果不一致将会执行session级别的事务set


    1-READ_UNCOMMITTED
    2-READ_COMMITTED
    3-REPEATABLE_READ
    4-SERIALIZABLE


    全局


    -


    autocommit


    是否自动提交


    默认 1,自动提交


    执行具体SQL的时候会比较前端配置


    如果不一致将会执行session级别的事务set


    0/1


    全局


    2.19.11.0引入

    一致性检查

    checkTableConsistency


    表格一致性检查


    默认0


    如果值为1,那么在服务初始化的时候会启动一个定时任务,在


    定时任务会检查DB是不是存在,表格是不是存在,表结构是否一致


    1-是,0-否


    实例


    -


    checkTableConsistencyPeriod


    表格一致性检查周期


    默认30×60×1000
    ,单位毫秒


    表格一致性检查周期


    正整数


    实例


    -

    心跳任务周期

    dataNodeIdleCheckPeriod


    后端空闲连接心跳周期


    默认5×60×1000
    ,单位毫秒


    后端空闲连接心跳检查,超时关闭,调整容量


    正整数


    实例


    -


    dataNodeHeartbeatPeriod


    数据节点心跳任务周期


    10X1000
    ,单位毫秒



    根据这个周期在服务初始化的时候注册心跳任务


    正整数


    实例


    -

    processor内部前后端连接检查
     

    sqlExecuteTimeout


    后端连接执行超时时间


    默认 300
    ,单位秒


    如果超过这个时间没有完毕,就直接关闭连接


    正整数


    实例


    -


    idleTimeout


    (前端)连接无响应超时时间


     默认 30×60 × 1000
    ,单位毫秒


    在processor定时连接检查时,发现前端连接上一次的读写距今超过阀值,会直接关闭连接


    正整数


    实例


    -


    processorCheckPeriod


    processor定时任务检查周期


    1000
    ,单位毫秒


    根据此配置定时的检查在processor中的前后端连接的状态


    正整数


    实例


    -

    普通事务日志相关

    recordTxn


    事务log记录


    默认0


    在初始化服务的时候会注册一个类,其作用就是将事务的log写到一个指定的文件中


    1-是,0-否


    实例


    2.17.04.0引入


    transactionLogBaseDir


    事务log目录


    默认当前路径/txlogs


    当开启日志log记录时,记录文件会被存放在对应目录下


    绝对路径


    实例


    -


    transactionLogBaseName


    事务log文件名称


    默认server-tx


    事务记录存储文件的文件名


    符合运行系统
    文件的命名规范


    实例


    -

    transactionRatateSize 事务日志单个文件大小 默认16
    ,单位M
     

    正整数


    实例


    -

    视图相关参数

    viewPersistenceConfBaseDir


    视图记录本地文件路径


    dble目录/viewConf


    用于存放视图本地记录文件的文件路径


    绝对路径


    集群配置时无意义


    2.17.11.0引入


    viewPersistenceConfBaseName


    视图记录本地文件名


    viewJson


    视图记录的文件文件名


    符合运行系统
    文件的命名规范


    集群配置时无意义


    2.17.11.0引入

    XA 事务

    xaRecoveryLogBaseDir


    xa的tm日志路径


    dble目录/tmlogs/ 

    此日志涉及到XA事务状态的记录,并且在Dble意外重启之后需要从里面获取重启之前的xa事务状态,切勿自行修改

    绝对路径


    实例


    -

    xaRecoveryLogBaseName xa的tm日志名称 tmlog  

    符合运行系统
    文件的命名规范


    实例


    -


    xaSessionCheckPeriod


    XA定时任务执行周期


    默认1000, 单位ms


    在server开始的时候会注册一个定时任务以此参数为执行周期


    (注:定时任务必定会被注册)


    如果有尝试多次没有成功提交的session在之后的定时任务会被重复提交


    正整数


    实例


    2.17.04.0引入


    xaLogCleanPeriod


    定时XAlog清除周期


    默认1000, 单位ms


    在server开始的时候会根据这个周期注册一个定时任务


    (注:定时任务必定会被注册)


    定时清XA log,主要是将已经回滚和提交成功的部分从记录中删除


    正整数


    实例


    2.17.04.0引入


    xaRetryCount


    后台重试XA次数


    默认0


    后台定时任务重试XA次数,0为无限重试,达到设定次数后,停止重试


    正整数


    实例


    2.19.03.0引入

    cluster相关参数 clusterHeartbeatPass          

    -

    clusterHeartbeatUser          

    -

    队列大小参数 joinQueueSize join时,左右结点的暂存数据行数的队列大小 1024 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 正整数 实例

    2.17.04.0引入

    mergeQueueSize merge时,左右结点的暂存数据行数的队列大小 1024 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 正整数 实例

    2.17.04.0引入

    orderByQueueSize 排序时,时,左右结点的暂存数据行数的队列大小 1024 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 正整数 实例

    2.17.04.0引入

    使用Nest Loop优化 useJoinStrategy 是否使用nest loop 优化 默认不使用 开启之后会尝试判断join两边的where来重新调整查询SQL下发的顺序 true 开启
    false 不开启
    实例

    2.17.04.0引入

    nestLoopConnSize 临时表阈值 默认4
    若临时表行数大于这两个值乘积,则报告错误

    正整数

    实例  

    2.17.04.0引入

    nestLoopRowsSize 临时表阈值 默认2000
    慢查询日志相关配置

    enableSlowLog


    慢查询日志开关


    默认为0,关闭


    慢查询日志开关


    0或者1

    实例


    2.18.09.0 引入


    slowLogBaseDir


    慢查询日志存储文件夹


    dble根目录/slowlogs



    慢查询日志存储文件夹


    文件夹路径

    实例


    2.18.09.0 引入


    slowLogBaseName


    慢查询日志存储文件名前缀


    slow-query



    慢查询日志存储文件名前缀(后缀名是.log)


    合法文件名

    实例


    2.18.09.0 引入


    flushSlowLogPeriod


    日志刷盘周期,单位秒


    1



    日志刷盘周期,每隔这个周期,会强制将内存数据刷入磁盘


    正整数

    实例


    2.18.09.0 引入


    flushSlowLogSize


    日志刷盘条数阈值


    1000



    日志刷盘条数阈值,内存中每次写出这么多条日志,会强制刷盘1次


    正整数

    实例


    2.18.09.0 引入


    sqlSlowTime


    慢日志时间阈值,单位毫秒


    100



    慢日志时间阈值,大于此时间的查询会记录下来


    正整数

    实例


    2.18.09.0 引入

    load data 相关配置

    maxCharsPerColumn


    每列所允许最大字符数


    默认为65535


    每行所允许最大字符数


    正整数

    实例


    2.19.03.0 引入


    maxRowSizeToFile


    需要持久化的最大行数


    默认为10000


    当load data的数据行数超过阈值后,会将数据保存在文件中以防OOM


    正整数

    实例


    2.19.03.0 引入

    高可用联动相关配置

    useOuterHa


    是否启用外部高可用联动


    默认为false



    true/false

    实例


    2.19.09.0 引入

    废弃配置

    processorBufferPoolType


    缓冲池类型


    默认 0


    在服务初始化的时候根据这个值确定缓冲池的类型


    0,直接缓冲块


    1,6个队列缓冲


    (实际1未完成,删除)

       

    2.17.04.0废弃


    useStreamOutput


    启用结果集流输出,不经过合并模块


    默认 0


    有bug,无应用场景,废弃

       

    2.17.04.0废弃


    systemReserveMemorySize


    暂时废弃,待重审


    系统预留内存


    384M


    在启用useOffHeapForMerge配置的时候如果系统剩余的内存小于这个配置


    ,服务将不会启动(仅在配置useOffHeapForMerge的时候有效)

       

    2.17.04.0废弃


    sqlInterceptor


    SQL拦截器


    默认 DefaultSqlInterceptor


    拦截SQL,进行统计等处理,默认实现极影响性能,废弃

                       

    2.17.04.0废弃


    catletClassCheckSeconds


    类加载重载检查时间


    60


    Catlet 类加载器(废弃)

       

    2.17.04.0废弃


    sqlInterceptorFile


    SQL解析器sqllogs


    默认 ./logs/sql.txt


    在每个SQL解析的之前都会通过写文件进行记录(废弃)

       

    2.17.04.0废弃


    defaultSqlParser


    默认SQL解析器


    默认druidparser


    解析器不支持其他,废弃

       

    2.17.04.0废弃


    handleDistributedTransactions


    分布式事务开关


    -


    0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志

       

    2.17.04.0废弃

    用户配置

    user(管理用户配置)

    配置名称

    配置内容

    是否能配多个元素

    可选项/默认值

    详细作用原理或应用

    全局/实例属性

    name

    用户名

    符合mysql用户名规范的字符串

    用户唯一标识,用于登录校验

    实例

    manager

    是否为manager用户

    true-是 false-否 默认否

    是否是manager用户,若一个用户是manager用户,则只能登录管理端口,并且只能执行管理端命令,依旧受到白名单制约

    实例

    password

    密码

    用户密码校验

    实例

    benchmark

    负载限制,2.18.09.0废弃,使用maxCon代替

     

    用户的连接数限制,会在用户验证登录的时候进行校验

    实例

    maxCon

    负载限制,默认不做限制

    用户的连接数限制,会在用户验证登录的时候进行校验,默认0,表示不做限制。 特别的,当系统级别的maxCon已经到达上限之后,本用户的maxCon会失效,不能新建连接

    实例

    usingDecrypt

    是否启用加密

    默认 0否

    启用加密password项配置通过执行脚本encrypt.sh 0:{user}:{password}的结果进行配置
    举例:
    encrypt.sh 0:xxx:123456
    fP/nl3XPXrSfWjpQzit5lIOrRU1QRXuLTYtATUG0fGW2k5kdXUhKL5zf02hE6nGjdnSWrufVkJPUZpbQ2qX9uQ==
    配置项:
    password fP/nl3XPXrSfWjpQzit5lIOrRU1QRXuLTYtATUG0fGW2k5kdXUhKL5zf02hE6nGjdnSWrufVkJPUZpbQ2qX9uQ==
    user xxx
    登录项:
    -u root -p123456

    实例

    user(业务用户配置)

    配置名称

    配置内容

    是否能配多个元素

    可选项/默认值

    详细作用原理或应用

    全局/实例属性

    name

    用户名

    符合mysql用户名规范的字符串

    用户唯一标识,用于登录校验

    实例

    password

    密码

    用户密码校验

    实例

    benchmark

    负载限制,2.18.09.0废弃,使用maxCon代替

     

    用户的连接数限制,会在用户验证登录的时候进行校验

    实例

    maxCon

    负载限制,默认不做限制

    用户的连接数限制,会在用户验证登录的时候进行校验,默认0,表示不做限制。 特别的,当系统级别的maxCon已经到达上限之后,本用户的maxCon会失效,不能新建连接

    实例

    readOnly

    用户只读标志

    在执行SQL的时候进行判断,如果是readonly不执行查询以外的SQL

    实例

    schemas

    用户对应使用的schema.xml中的方案

    用户有权限的schemas 列表,通过,进行分割(db1,db2,db3)

    实例

    usingDecrypt

    是否启用加密

    默认 0否

    启用加密password项配置通过执行脚本encrypt.sh 0:{user}:{password}的结果进行配置
    举例:
    encrypt.sh 0:xxx:123456
    fP/nl3XPXrSfWjpQzit5lIOrRU1QRXuLTYtATUG0fGW2k5kdXUhKL5zf02hE6nGjdnSWrufVkJPUZpbQ2qX9uQ==
    配置项:
    password fP/nl3XPXrSfWjpQzit5lIOrRU1QRXuLTYtATUG0fGW2k5kdXUhKL5zf02hE6nGjdnSWrufVkJPUZpbQ2qX9uQ==
    user xxx
    登录项:
    -u root -p123456

    实例

    privileges

    权限

    详情见user.privileges

    实例

    user.privileges(用户权限)


    配置名称


    配置内容

    多节点

    可选项/默认值


    详细作用原理或应用


    全局/实例


    check


    是否需要检查


    默认否 true-是 false-否


    如果在进行DML解析并进行用户权限检查的时候,配置为是会严格检查权限情况,配置为否则不会检查

    实例

    schema


    用户的schema节点权限情况



    配置为空的情况下默认拥有所有有效schema的权限

    实例

    user.privileges.schema


    配置名称


    配置内容

    多节点

    可选项/默认值


    详细作用原理或应用


    全局/实例


    name


    schema名称



    用以标识对应schema

    实例

    dml


    dml权限


    0000


    权限判断,每一位分别表示INSERT UPDATE SELECT DELETE四种权限


    1- 拥有权限 0-没有权限 例如拥有所有权限为1111

    实例

    table




    如果没有配置,则table继承schema的权限

    实例

    user.privileges.schema.table


    配置名称


    配置内容

    多节点

    可选项/默认值


    详细作用原理或应用


    全局/实例


    name


    表格名称



    在权限判断的时候作为key值

    实例

    dml


    dml权限


    0000


    权限判断,每一位分别表示INSERT UPDATE SELECT DELETE四种权限


    1- 拥有权限 0-没有权限 例如拥有所有权限为1111

    实例

    firewall配置

    配置名称是否可以配置多个配置内容默认值配置范围/可选项详细作用原理或应用范围
    whitehost 白名单   白名单的总结点 实例
    blacklist 黑名单   黑名单的总结点 实例

    firewall.whitehost(host白名单配置)

    配置名称节点是否可配多个属性元素元素是否可配多个配置内容默认值配置范围/可选项详细作用原理或应用实例/全局属性
    Host host 白名单某个具体的IP host

    有效IP地址

    如需配置localhost可使用IP

    host = "0:0:0:0:0:0:0:1"

    ip值是多个平行配置的唯一标识,ip重复配置会导致部分配置丢失。如单个IP想配置多个用户请在user属性里用逗号隔开。

    白名单功能类似mysql的权限控制,指定某些IP只能有某些特定的用户登录进行登录。

    如启用白名单,除白名单标注的IP用户之外,其他dble用户均无法登录

    实例
    user 对应IP host可以允许连接的用户

     有效dble用户名,使用','进行分割

    例如user="user1,user2,user3"

    firewall.blacklist(黑名单配置)

    配置类型配置名称属性元素是否可以配置多个配置内容默认值配置范围/可选项详细作用原理或应用实例/全局属性
    blacklist元素属性 blacklist check 是否进行黑名单校验 false true/false

    如果开启黑名单校验,黑名单中规定的行为SQL都被禁止

    影响范围全局,所有用户都无法豁免

    实例
      blacklist下挂property property name 详细的黑名单校验规则   如果开启黑名单校验具体的校验规则将有 所有property来确定 实例

    firewall.blacklist.property(黑名单配置)

    配置名称
    配置内容
    默认值
    可选项
    详细作用原理或应用
    备注
    selectHavingAlwayTrueCheck

    是否允许复杂select having

    条件结果恒为真

    true true - 允许
    false -禁止       

    1、having部分的结果为真

    2、SQL语句需要以注释结尾(不能有换行之类的)

    3、条件部分不是简单SQL(单个条件、含有简单数值对等或大小比较、直接是真假值的表达式等)

    符合以上三个条件的查询在校验的时候会被阻止,

    举例:select * from test having id = id and hujh = hujh   /*lxxddfsgdfsfdqwesfct*/;

    暂不具有实际意义
    selectWhereAlwayTrueCheck

    是否允许复杂select where

    条件结果恒为真

    true

    true - 允许

    false -禁止

    1、where部分的结果为真

    2、SQL语句需要以注释结尾(不能有换行之类的)

    3、条件部分不是简单SQL(单个条件、含有简单数值对等或大小比较、直接是真假值的表达式等)

    符合以上三个条件的查询在校验的时候会被阻止,

    举例:select * from test where id = id and hujh = hujh   /*lxxddfsgdfsfdqwesfct*/;

    暂不具有实际意义
    doPrivilegedAllow
    druid内部权限控制使用
    false

    true - 允许

    false -禁止

    druid内部函数调用flag,在dble中没有作用 暂不具有实际意义
    wrapAllow

    是否允许调用

    isWrapFor和unwrap方法

    true

    true - 允许

    false -禁止

    druid内部函数调用flag,在dble中没有作用 暂不具有实际意义
    metadataAllow
    是否允许调用getmetadata方法 true

    true - 允许

    false -禁止

    druid内部函数调用flag,在dble中没有作用 暂不具有实际意义
    completeInsertValuesCheck
    在dble依赖的1.0.31版本中没有效果 false

    true - 允许

    false -禁止

    druid内部函数调用flag,在dble中没有作用 暂不具有实际意义
    mergeAllow

    是否允许merge语句

    (在mysql中不支持)

    true

    true - 允许

    false -禁止

    会校验是否是merge语句 在Dble中没有效果
    conditionLikeTrueAllow
    是否允许like之后包含永真条件
    true

    true - 允许

    false -禁止

    会根据SQL里面的内容进行判断,如果发现有like '%'就会抛出异常 可用
    conditionDoubleConstAllow
    是否允许连续两个常量判断 false

    true - 允许

    false -禁止

    会根据SQL里面的内容进行判断,如果发现有两个常量判断抛出异常

    select * from suntest asdf where 1 = 1 and 2 = 1;

    可用
    conditionAndAlwayFalseAllow

    是否允许and连接的语句存在

    恒为false的条件

    false

    true - 允许

    false -禁止

    会根据where之后and跟随的条件进行判断,如果发现恒为假的情况会抛出异常

    举例:select * from suntest where id = 567 and 1 != 1;

    可用
    conditionAndAlwayTrueAllow

    是否允许and连接的语句存在

    恒为true的条件

    false

    true - 允许

    false -禁止

    会根据where之后and跟随的条件进行判断,如果发现恒为真的情况会抛出异常

    举例:select * from suntest where id = 567 and 1 = 1;

    可用
    selectAllColumnAllow
    是否允许查询所有列 true

    true - 允许

    false -禁止

    会根据查询sql进行判断,如果发现直接查询*会有这个异常,

    但是如果带有别名(x.*)则不在此列

    存在问题
    multiStatementAllow
    是否允许一次提交多条sql false

    true - 允许

    false -禁止

    会检查sql的数量,如果超过一则抛出异常 Dble不支持
    constArithmeticAllow
    是否允许常量运算 true

    true - 允许

    false -禁止

    在SQL中如果发现包含有常量运算会抛出异常

    select * from suntest asdf where id = 2 -1;

    可用
    alterTableAllow
    是否允许alter table 语句 true

    true - 允许

    false -禁止

    在执行alter table之前会纯粹根据SQL进行语句的校验

    ,发现SQL是alter table语句会抛出异常返回错误信息

    可用
    commitAllow
    是否允许commit语句 true

    true - 允许

    false -禁止

    在执行commit之前会纯粹根据SQL进行语句的校验,

    发现commit语句会抛出异常返回错误信息

    可用
    createTableAllow
    是否允许create table 语句 ture

    true - 允许

    false -禁止

    在执行create table之前会纯粹根据SQL进行语句的校验,

    发现SQL是create table语句会抛出异常返回错误信息

    可用
    deleteAllow
    是否允许delete语句 true

    true - 允许

    false -禁止

    在执行delete之前会纯粹根据SQL进行语句的校验,发现delete语句会抛出异常

    返回错误信息

    可用
    dropTableAllow
    是否允许drop table 语句 ture

    true - 允许

    false -禁止

    在执行drop table之前会纯粹根据SQL进行语句的校验

    ,发现SQL是drop table语句会抛出异常返回错误信息

    可用
    insertAllow
    是否允许insert true

    true - 允许

    false -禁止

    在执行insert之前会纯粹根据SQL进行语句的校验,发现insert语句会抛出异常

    返回错误信息

    可用
    intersectAllow
    是否支持intersect
    true

    true - 允许

    false -禁止

    在执行intersect之前会纯粹根据SQL进行语句的校验

    ,发现intersect语句会抛出异常返回错误信息

    可用
    lockTableAllow
    是否允许lock tables语句 true

    true - 允许

    false -禁止

    在执行lock tables之前会纯粹根据SQL进行语句的校验

    ,发现lock语句会抛出异常返回错误信息

    可用
    minusAllow
    是否支持minus语句 true

    true - 允许

    false -禁止

    在执行minus之前会纯粹根据SQL进行语句的校验

    ,发现minus语句会抛出异常返回错误信息

    可用
    callAllow
     是否允许call语句  true

     true - 允许

    false -禁止

    在执行query之前会纯粹根据SQL进行语句的校验,

    发现SQL是CALL语句会抛出异常返回错误信息

    可用
    selectIntoOutfileAllow
    是否允许SELECT ... INTO OUTFILE
    false

     true - 允许

    false -禁止

    在执行query之前会纯粹根据SQL进行语句的校验,发现SQL是

    SELECT ... INTO OUTFILE句会抛出异常返回错误信息

    Dble本身不支持
    selectIntoAllow
    是否允许select into 语句 true

     true - 允许

    false -禁止

    在执行query之前会纯粹根据SQL进行语句的校验,

    发现SQL是select into语句会抛出异常返回错误信息

    Dble本身不支持
    selelctAllow
    是否允许select语句 true

     true - 允许

    false -禁止

    在执行query之前会纯粹根据SQL进行语句的校验,

    发现SQL是select语句会抛出异常返回错误信息

    可用
    renameTableAllow
    是否允许rename table 语句 true

    true - 允许

    false -禁止

    在执行rename table之前会纯粹根据SQL进行语句的校验

    ,发现SQL是rename table语句会抛出异常返回错误信息

    可用
    replaceAllow
    是否允许replace语句 true

    true - 允许

    false -禁止

    在执行replace之前会纯粹根据SQL进行语句的校验,

    发现replace语句会抛出异常返回错误信息

    可用
    rollbackAllow
    是否允许rollback true

    true - 允许

    false -禁止

    在执行rollback之前会纯粹根据SQL进行语句的校验,

    发现rollback语句会抛出异常返回错误信息

    可用

    Dble慎用

    setAllow
    是否允许set语句 true

    true - 允许

    false -禁止

    在执行set之前会纯粹根据SQL进行语句的校验,

    发现set语句会抛出异常返回错误信息

    可用
    describeAllow
    是否支持describe语句 true

    true - 允许

    false -禁止

    在执行SQL之前会纯粹根据SQL进行语句的校验,

    发现describe语句会抛出异常返回错误信息

    可用
    limitZeroAllow
    是否允许出现limit 0的情况 false

    true - 允许

    false -禁止

    在执行SQL之前会纯粹根据SQL进行语句的校验,

    发现limit 0语句会抛出异常返回错误信息

    可用
    showAllow
    是否允许show语句 true

    true - 允许

    false -禁止

    在执行SQL之前会纯粹根据SQL进行语句的校验,

    发现show语句会抛出异常返回错误信息

    可用
    hintAllow
    是否允许sql 包含hint true

    true - 允许

    false -禁止

    在执行sql之前会纯粹根据SQL进行语句的校验

    ,发现SQL是包含hint语句会抛出异常返回错误信息

    可用
    commentAllow
    是否允许在SQL中存在注释 true

    true - 允许

    false -禁止

    在执行SQL之前会纯粹根据SQL进行语句的校验,发现注释语句会抛出异常

    返回错误信息

    可用
    mustParameterized
    是否必须参数化 false

    true - 是

    false -否

    在执行SQL之前会纯粹根据SQL进行语句的校验,

    发现类似 name = 'sdfasdf' ,id = 1语句会抛出异常返回错误信息

    可用
    conditionOpXorAllow
    是否允许SQL中使用关系符XOR false

    true - 允许

    false -禁止

    在执行SQL之前会纯粹根据SQL进行语句的校验,

    发现类似运算符语句会抛出异常返回错误信息

    可用
    conditionOpBitwseAllow

    查询条件中是否允许有"&"、

    "~"、"|"、"^"运算符。

    true

    true - 允许

    false -禁止

    在执行SQL之前会纯粹根据SQL进行语句的校验,

    发现类似运算符语句会抛出异常返回错误信息

    可用
    startTransactionAllow
    是否允许START TRANSACTION true

    true - 允许

    false -禁止

    在执行START TRANSACTION之前会纯粹根据SQL进行语句的校验,

    发现START TRANSACTION语句会抛出异常返回错误信息

    注:现阶段如果开启黑名单检查begin无法通过校验,

    这个是由于在druid中不支持的缘故

    可用
    truncateAllow
    是否允许truncate语句 true

    true - 允许

    false -禁止

    在执行truncate之前会纯粹根据SQL进行语句的校验,

    发现truncate语句会抛出异常

    返回错误信息

    可用
    updateAllow
    是否允许update语句 true

    true - 允许

    false -禁止

    在执行update之前会纯粹根据SQL进行语句的校验,发现update语句会抛出异常

    返回错误信息

    可用
    useAllow
    是否允许use语句 true

    true - 允许

    false -禁止

    在执行use之前会纯粹根据SQL进行语句的校验,发现use语句会抛出异常

    返回错误信息

    可用
    blockAllow
    是否允许语句块
    true

    true - 允许

    false -禁止

    在解析SQL阶段会判断SQL是否属于SQL语句块,如果是的话就会抛出错误

    举例:BEGIN  select * from suntest;END;//

    可用
    deleteWhereNoneCheck
    是否允许delete语句没有where条件 false

    true - 启用

    false -不启用

    如果发现delete语句没有限定条件会抛出异常

    举例:delete from suntest;

    可用
    updateWhereNoneCheck
    是否允许update语句没有where条件 false

    true - 启用

    false -不启用

    如果发现update语句没有限定条件会抛出异常

    举例:update suntest set name = '33';

    可用
    deleteWhereAlwayTrueCheck
    是否允许delete语句存在恒真条件 true

    true - 启用

    false -不启用

    如果解析发现delete语句存在恒真条件,并且满足sql以注释结尾

    ,并且where条件不是简单条件的,会抛出异常

    举例:delete from suntest where id = id and name  = name /*sdfaasdf*/;

    暂不具有实际意义
    updateWhereAlayTrueCheck
    是否允许delete语句存在恒真条件 true

    true - 启用

    false -不启用

    如果解析发现delete语句存在恒真条件,并且满足sql以注释结尾

    ,并且where条件不是简单条件的,会抛出异常

    举例:update suntest set name = '33' where id = id,name = name /*sdfsdf*/;

    暂不具有实际意义
    selectIntersectCheck
    是否进行intersect check true

    true - 进行

    false -不进行

    如果进行校验,则不允许except语句,

    当且仅当left sql的from不是空并且right from为空的时候不能通过校验

    举例:select * from sbtest1 where name = 'ff' INTERSECT  select * from dual;

    暂不具有实际意义
    selectExceptCheck
    是否进行except  check true

    true - 进行

    false -不进行

    如果进行校验,则不允许except语句,

    当且仅当left sql的from不是空并且right from为空的时候不能通过校验

    举例:select * from sbtest1 where name = 'ff' except  select * from dual;

    暂不具有实际意义
    selectMinusCheck
    是否进行MINUS check true

    true - 进行

    false -不进行

    如果进行校验,则不允许MINUS语句,

    当且仅当left sql的from不是空并且right from为空的时候不能通过校验

    举例:select * from sbtest1 where namec = 'fff' minus select * from dual;

    暂不具有实际意义
    selectUnionCheck
    是否进行union check true

    true - 进行

    false -不进行

    如果进行校验,则不允许unoin语句

    举例:select * from sbtest1 unoin select * from suntest;

    可用
    caseConditionConstAllow
    是否允许复杂查询中外部是一个常量 false

    true - 允许

    false -禁止

    是否允许复杂查询中外部是一个常量,

    如果子查询外部对应的是常量那么就在SQL检查的时候抛出异常

    举例:delete from suntest where id = 123 and 'name' = (select case 'fname' whe

    dsome' else 'good' end from xtest ) /*sdfaasdf*/;

    暂不具有实际意义
    strictSyntaxCheck
    是否启用严格语法检查 true

    true - 是

    false - 否

    是否进行严格的语法检测,Druid SQL Parser在某些场景不

    能覆盖所有的SQL语法,属于调试级别的参数,在正常的使用中不建议更改

    暂不具有实际意义
    schemaCheck
    检测是否使用了禁用的schema true

    true - 启用

    false -禁止

    这个需要配合drui的配置模式使用,在dble此功能无法被使用 暂不具有实际意义
    tableCheck
    检测是否使用了禁用的table true

    true - 启用

    false -禁止

    这个需要配合drui的配置模式使用,在dble此功能无法被使用 暂不具有实际意义
    functionCheck
    检测是否使用了禁用的function true

    true - 启用

    false -禁止

    这个需要配合drui的配置模式使用,在dble此功能无法被使用 暂不具有实际意义
    objectCheck
    检测是否使用了禁用的object true

    true - 启用

    false -禁止

    这个需要配合drui的配置模式使用,在dble此功能无法被使用 暂不具有实际意义
    variantCheck
    检测是否使用了禁用的变量 true

    true - 启用

    false -禁止

    这个需要配合drui的配置模式使用,在dble此功能无法被使用 暂不具有实际意义

    alarm(ucore告警grpc接口)

    此项不再需要单独配置,所需要的配置项从myid.properties 中读取,下面表格并非配置内容,而是内存里存储的值

    名称内容默认值详细作用原理或应用实例/全局属性
    url grpc告警的url myid.properties 里的ipAddress 在发送grpc的时候作为IP地址使用 实例
    port 告警端口 myid.properties 里的port grpc发送的目的端口 实例
    level 告警等级 warn 如果配置error只会发送error等级的告警,如果配置warn会发送warn以及error的告警信息 实例
    serverId 服务器ID $ushard-id(ip1,ip2) ,其中$ushard-id 是myid.properties 里的myid 接口参数 实例
    componentId 组件ID $ushard-id 即myid.properties 里myid 接口参数 实例
    componentType 组件类型 ushard 接口参数 实例

    配置实例

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
       - you may not use this file except in compliance with the License. - You 
       may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
       - - Unless required by applicable law or agreed to in writing, software - 
       distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
       WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
       License for the specific language governing permissions and - limitations 
       under the License. -->
    <!DOCTYPE dble:server SYSTEM "server.dtd">
    <dble:server xmlns:dble="http://dble.cloud/" version="9.9.9.9">
        <system>
            <!-- base config -->
            <!--<property name="bindIp">0.0.0.0</property>-->
            <!-- property name="serverPort">8066</property> -->
            <!--<property name="managerPort">9066</property> -->
            <!-- <property name="processors">1</property>-->
            <!--<property name="processorExecutor">32</property> -->
            <!--<property name="fakeMySQLVersion">5.6.20</property>-->
            <property name="sequnceHandlerType">2</property>
            <!-- serverBacklog size,default 2048-->
            <property name="serverBacklog">2048</property>
            <!--<property name="serverNodeId">1</property>-->
            <!--<property name="showBinlogStatusTimeout">60000</property>-->
    
            <!--option-->
            <!--<property name="useCompression">1</property>-->
            <!--<property name="usingAIO">0</property>-->
            <!--<property name="useZKSwitch">true</property>-->
    
            <!--connection -->
            <!--<property name="charset">utf-8</property>-->
            <!--<property name="maxPacketSize">4194304</property>-->
            <!--<property name="txIsolation">3</property>-->
    
            <!--consistency-->
            <!-- check the consistency of table structure between nodes,default not -->
            <property name="checkTableConsistency">0</property>
            <!-- check periodt, he default period is 60000 milliseconds -->
            <property name="checkTableConsistencyPeriod">60000</property>
    
            <!-- heartbeat check period -->
            <property name="dataNodeIdleCheckPeriod">300000</property>
            <property name="dataNodeHeartbeatPeriod">10000</property>
    
            <!-- processor check conn-->
            <property name="processorCheckPeriod">1000</property><!-- unit millisecond -->
            <property name="sqlExecuteTimeout">300</property><!-- unit second -->
            <property name="idleTimeout">1800000</property><!-- unit millisecond -->
    
            <!-- transaction log -->
            <!-- 1 enable record the transaction log, 0 disable -->
            <property name="recordTxn">0</property>
            <!--<property name="transactionLogBaseDir">/txlogs</property>-->
            <!--<property name="transactionLogBaseName">server-tx</property>-->
            <!--<property name="transactionRatateSize">16</property>&lt;!&ndash; unit M &ndash;&gt;-->
    
            <!-- XA transaction -->
            <!-- use XA transaction ,if the mysql service crash,the unfinished XA commit/rollback will retry for several times
           it is the check period for ,default is 1000 milliseconds-->
            <property name="xaSessionCheckPeriod">1000</property>
            <!-- use XA transaction ,the finished XA log will removed. the default period is 1000 milliseconds-->
            <property name="xaLogCleanPeriod">1000</property>
            <!-- XA Recovery Log path -->
            <!--<property name="XARecoveryLogBaseDir">/tmlogs/</property>-->
            <!-- XA Recovery Log name -->
            <!--<property name="XARecoveryLogBaseName">tmlog</property>-->
    
            <!-- true is use JoinStrategy, default false-->
            <property name="useJoinStrategy">true</property>
            <property name="nestLoopConnSize">4</property>
            <property name="nestLoopRowsSize">2000</property>
    
            <!-- off Heap unit:bytes-->
            <property name="bufferPoolChunkSize ">4096</property>
            <property name="bufferPoolPageNumber ">512</property>
            <property name="bufferPoolPageSize ">2097152</property>
    
            <!-- sql statistics-->
            <!-- 1 means use SQL statistics, 0 means not -->
            <property name="useSqlStat">0</property>
            <!--<property name="bufferUsagePercent">80</property>-->
            <!--<property name="clearBigSqLResultSetMapMs">600000</property>-->
            <!--<property name="sqlRecordCount">10</property>-->
            <!--<property name="maxResultSet">524288</property>-->
    
            <!-- backSocket unit:bytes-->
            <!--<property name="backSocketSoRcvbuf ">4194304</property>-->
            <!--<property name="backSocketSoSndbuf">1048576</property>-->
            <!--<property name="backSocketNoDelay ">1</property>-->
    
            <!-- frontSocket-->
            <!--<property name="frontSocketSoRcvbuf ">1048576</property>-->
            <!--<property name="frontSocketSoSndbuf">4194304</property>-->
            <!--<property name="frontSocketNoDelay ">1</property>-->
    
    
        </system>
    
        <!-- firewall config -->
        <!--
        <firewall>
        <whitehost>
              <host host="127.0.0.1" user="root"/>
              <host host="0:0:0:0:0:0:0:1" user="root"/>
           </whitehost>
           <blacklist check="true">
           <property name="selelctAllow">false</property>
           </blacklist>
        </firewall>
        -->
        <user name="man1">
            <property name="password">654321</property>
            <property name="manager">true</property>
            <!-- manager user can't set schema-->
        </user>
    
        <user name="root">
            <property name="password">123456</property>
            <property name="schemas">TESTDB</property>
    
            <!-- table's DML privileges  INSERT/UPDATE/SELECT/DELETE -->
            <!--
            <privileges check="false">
                <schema name="TESTDB" dml="0110" >
                    <table name="tb01" dml="0000"></table>
                    <table name="tb02" dml="1111"></table>
                </schema>
            </privileges>
             -->
        </user>
    
        <user name="user">
            <property name="password">user</property>
            <property name="schemas">TESTDB</property>
            <property name="readOnly">true</property>
        </user>
    
    </dble:server>
  • 相关阅读:
    liquid state machine
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(20) Recitation 8: Attention
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(18) Sequence to Sequence models: Attention Models
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(19) Lecture 16: Variational Autoencoders
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(17) Recitation 7: Visualization: What does the network learn
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(16) Recitation 6: CTC
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(15) Lecture 15: Representation Learning
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(14) Lecture 14: Connectionist Temporal Classification (CTC)
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(13) Recitation 5: Recurrent Neural Networks (Introduction)
    CMU Deep Learning 2018 by Bhiksha Raj 学习记录(12) Lecture 13: Recurrent Neural Networks 3
  • 原文地址:https://www.cnblogs.com/l10n/p/12666362.html
Copyright © 2011-2022 走看看