1.2 bootstrap.cnf
本配置文件为dble实例启动时候加载的配置文件。默认使用wrapper.cnf启动的外置参数文件的格式,即使不使用wrapper启动时,也会加载此文件。
1.2.1 jvm启动参数
本文件第一部分为JVM启动参数,可以根据需要修改。
-agentlib:jdwp=transport=dt_socket,server=y,address=8088,suspend=n
-server
-XX:+AggressiveOpts
-Dfile.encoding=UTF-8
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1984
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.host=127.0.0.1
-Xmx4G
-Xms1G
-XX:MaxDirectMemorySize=2G
大部分以上的配置都没有特殊的意义,仅仅是一般的JVM配置,关于JVM调优的部分需要以现实情况进行操作,在此仅介绍以个特殊情况
MaxDirectMemorySize上限值为81917M,约等于79G。需要根据机器的情况进行提前适配,不然会导致服务无法正常启动 具体的细节为需要大于bufferPoolPageNumber*bufferPoolPageSize,这两个选项在第二部分中配置
bufferPoolPageNumber 的默认值= (MaxDirectMemorySize * 0.8 /bufferPoolPageSize), 向下取整 ,上限值为32767
bufferPoolPageSize 的默认值= 2M
以下为建议值:
dble总内存=0.6 可用物理内存(刨除操作系统,驱动等的占用)
Xmx = 0.4 dble总内存
MaxDirectMemorySize = 0.6 * dble总内存
另外,在启动参数中的bufferPoolPageNumber 和bufferPoolPageSize 受MaxDirectMemorySize影响。
1.2.2 dble系统参数
本文件第二部分为dble系统参数,配置格式遵照启动参数的格式:-Dkey=value,
注意如果是通过JSW启动的dble服务,需要复合JSW对配置文件的要求,也就是不能有空格,具体参见 wrapper.app.parameter_file
具体系统参数含义参见以下表格。
模块 | 配置名称 |
配置内容 |
默认值/单位 |
详细作用原理或应用 |
配置范围 |
系统服务基本参数 | homePath |
基本目录 慢查询日志(slowlogs)、视图记录日志(viewConf)、xa的tm日志(xalogs)、load data临时文件(temp)等存放路径的父目录 |
无默认值,不配置会报错 |
其他一些类似于事务或者视图存储的的根路径 |
有效路径, |
instanceName |
实例名称 |
无默认值,不配置会报错 |
集群配置时的唯一标识,xa事务时的实例标识 |
集群内唯一值 |
|
instanceId |
实例id |
无默认值 |
集群配置时的唯一标识,全局序列时的唯一标识 |
仅当sequenceHandlerType=2 或者 3时候有意义. 当sequenceHandlerType=2,合法值范围为0~1023 当sequenceHandlerType=3,合法值范围为0~,511 |
|
serverId |
服务器名称 |
默认值为服务器IP |
dble所在机器的名称 |
用于告警时候报告服务器名称 |
|
bindIp |
服务IP |
默认 "0.0.0.0" |
在服务初始化的时候作为侦听的IP |
有效IP地址, |
|
serverPort |
服务端口 |
默认8066 |
在服务初始化的时候作为服务侦听的端口 |
机器空闲端口 |
|
managerPort |
控制端口 |
默认9066 |
在服务初始化的时候作为控制侦听的 |
机器空闲端口 |
|
maxCon |
控制最大连接数 |
默认0 |
默认不做限制。若maxCon大于0,建立的连接数大于maxCon之后,建立连接会失败.注意当各个用户的maxcon总和值大于此值时,以当前值为准。 全局maxCon不作用于manager用户 |
正整数 |
|
NIOFrontRW |
NIO前端处理器的数量,兼容旧参数processors,同时配置NIOFrontRW和processors,以NIOFrontRW为准 |
默认java虚拟机核数 |
进行前端网络IO吞吐的线程数 |
正整数 |
|
NIOBackendRW |
NIO后端处理器的数量,兼容旧参数backendProcessors,同时配置NIOBackendRW和backendProcessors,以NIOBackendRW为准 |
默认java虚拟机核数 |
进行后端网络IO吞吐的线程数 |
正整数 |
|
frontWorker |
前端业务处理线程池数量,兼容旧参数processorExecutor,同时配置frontWorker和processorExecutor,以frontWorker为准 |
默认 |
进行前端具体业务处理的线程池大小,负责解析路由下发 |
正整数 |
|
managerFrontWorker |
前侧管理端线程池数量 |
默认 |
负责前侧管理端执行&处理命令的线程池大小 |
正整数 |
|
backendWorker |
后端业务处理线程池数量,兼容旧参数backendProcessorExecutor,同时配置backendWorker和backendProcessorExecutor,以backendWorker为准 |
默认 |
进行后端具体业务处理的线程池大小,负责回收结果集并合并 |
正整数 |
|
complexQueryWorker |
复杂查询后端业务线程池数量,兼容旧参数complexExecutor,同时配置complexQueryWorker和complexExecutor,以complexQueryWorker为准 |
默认 |
负责复杂查询或者子命令结果集的回收 |
正整数 |
|
writeToBackendWorker |
广播下发SQL时候批量处理的线程池,兼容旧参数writeToBackendExecutor,同时配置writeToBackendWorker和writeToBackendExecutor,以writeToBackendWorker为准 |
默认 |
负责广播下发SQL时候批量处理 |
正整数 |
|
fakeMySQLVersion |
Dble模拟Mysql版本号 |
默认NULL |
模拟成正常的MySql版本, 用于与客户端协议交互 |
MYSQL版本号 |
|
serverBacklog | 前端tcp连接 backlog | 默认2048 | 前端tcp连接 backlog | 正整数 |
|
usePerformanceMode |
是否启用性能模式 |
默认0/单位无 | 开启之后Dble会大量占用CPU资源,并提供更高的性能体现,慎用 |
1-是0-否 |
|
useOuterHa |
是否启用外部高可用联动 |
默认为true,若此时不设置外部高可用,将不做切换 |
如关闭此功能并且dble部署方式为单机,将使用默认的切换方式,详情请见切换相关章节 |
true/false |
|
groupConcatMaxLen |
GROUP CONCAT()函数允许的最大结果长度 |
默认为1024 |
GROUP CONCAT()函数允许的最大结果长度,以字节为单位 |
正整数 |
|
连接缺省值 |
charset |
字符集 |
utf8mb4 |
服务启动后的默认字符集于所有字符集相关的部分,包括前端连接和后端连接 |
有效字符集 |
maxPacketSize |
包大小限制 |
默认 4×1024×1024 |
限制请求的包大小,启动时候dble会拉取并尝试同步(此值+1024)到每个dbInstance,如果同步失败,就取配置值与各个dbInstance中最小的那个值-1024.留出1024的冗余用于对SQL改写或者上下文同步的支持 |
正整数 |
|
txIsolation |
隔离级别 |
默认 3 |
执行具体SQL的时候会比较前后端连接, 启动时候dble会拉取并尝试同步此值到每个dbInstance,如果同步失败或者session级别重新设置该值,session在SQL下发之前,会执行session级别的隔离级别set |
1-READ_UNCOMMITTED |
|
autocommit |
是否自动提交 |
默认 1,自动提交 |
启动时候dble会拉取并尝试同步此值到每个dbInstance 如果同步失败或者session级别重新设置该值,执行具体SQL的时候会比较,如果不一致将会执行session级别的set |
0/1 |
|
功能性配置 | useCompression |
是否启用数据压缩 |
默认 0否 |
使用mysql压缩协议 |
1 - 是 0 - 否 |
capClientFoundRows |
是否开启Client_Found_Rows权能标识 |
默认 false,关闭 |
dble开启Client_Found_Rows权能标识 |
true - 开启 false - 关闭 |
|
usingAIO |
是否启用AIO |
默认0 |
在初始化服务的时候将会作为判断启用AIO或是NIO的依据 |
1 - 是 0 - 否 |
|
线程使用率统计 |
useThreadUsageStat |
开启线程使用率统计 |
默认0/单位无 |
开启之后能在管理端通过管理命令show @@thread_used查看各个部分的线程使用情况 |
1-是0-否 |
useCostTimeStat |
是否启用查询耗时统计 |
默认0/单位无 |
开启之后以一定的比例统计查询过程中的各个步骤的耗时情况,可以使用BTraceCostTime.java进行观测,也可在管理端使用show @@cost_time观察 |
1-是0-否 |
|
maxCostStatSize |
默认100 |
show @@cost_time结果最近保留的行数 |
|||
costSamplePercent |
查询采样百分比 |
默认1/单位% |
在耗时采样统计中实际采样百分比为costSamplePercent |
||
一致性检查 | checkTableConsistency |
表格一致性检查 |
默认0 |
如果值为1,那么在服务初始化的时候会启动一个定时任务,在 定时任务会检查DB是不是存在,表格是不是存在,表结构是否一致 |
1-是,0-否 |
checkTableConsistencyPeriod |
表格一致性检查周期 |
默认30×60×1000 |
表格一致性检查周期 |
正整数 |
|
processor内部前后端连接检查 |
sqlExecuteTimeout |
后端连接执行超时时间 |
默认 300 |
如果超过这个时间没有完毕,就直接关闭连接 |
正整数 |
idleTimeout |
前端连接无响应超时时间 |
默认 10 × 60 × 1000 |
在processor定时连接检查时,发现前端连接上一次的读写距今超过阀值,会直接关闭连接 |
正整数 |
|
processorCheckPeriod |
processor定时任务检查周期 |
1000 |
根据此配置定时的检查在processor中的前后端连接的状态 |
正整数 |
|
后端连接socket 配置 | backSocketSoRcvbuf |
后端套接字接收缓冲区大小 |
1024×1024×4 |
在创建后端管道的时候作为buffer大小使用 |
正整数 |
backSocketSoSndbuf |
后端套接字发送缓冲区大小 |
1024×1024 |
在创建后端管道的时候作为buffer大小使用 |
正整数 |
|
backSocketNoDelay |
后端Nagle算法是否禁用 |
默认1/单位无 |
在创建后端管道的时候禁用延迟加载,会影响网络包的情况 详见相关资料 |
1-是, 0-否 |
|
前端连接socket 配置 | frontSocketSoRcvbuf |
前端套接字接受缓冲区大小 |
1024 × 1024 |
在读取网络传输信息的时候作为每次缓冲的大小使用 |
正整数 |
frontSocketSoSndbuf |
前端套接字发送缓冲区大小 |
1024×1024×4 |
在创建前端管道的时候作为buffer大小使用 |
正整数 |
|
frontSocketNoDelay |
前端Nagle算法是否禁用 |
默认1 |
在创建前端管道的时候禁用延迟加载 相关资料 |
1-是,0-否 |
|
Session预留内存配置 | orderMemSize |
session中的复杂查询order预留内存 |
默认4,单位M |
在session初始化的时候创建内存分配对象,在复杂查询order by的时候使用到 |
正整数 |
otherMemSize |
session中的复杂查询其他预留内存 |
默认4,单位M |
在session初始化的时候创建内存分配对象,在复杂查询subQuery以及distinctd的时候使用 |
正整数 |
|
joinMemSize |
session中的复杂查询join预留内存 |
默认4,单位M |
在session初始化的时候创建内存分配对象,在复杂查询join使用到 |
正整数 |
|
堆外内存管理 | bufferPoolChunkSize |
内存池中分配的最小粒度 | 默认4096 |
内存池中分配的最小粒度,需要的大小除以此粒度,向上取整 |
|
bufferPoolPageNumber |
预分配内存池页数量 |
默认 0.8 × MaxDirectMemorySize / bufferPoolPageSize(default 2M), 向下取整 |
在初始化的时候通过和bufferPoolPageSize的相乘确定缓冲池最后的大小,内存配置建议见启动参数 |
||
bufferPoolPageSize |
预分配内存池页大小 |
默认1024 * 1024 * 2, |
在初始化的时候通过和bufferPoolPageNumbe的相乘确定缓冲池最后的大小, 注意:虚拟机参数MaxDirectMemorySize(见启动参数)需要大于bufferPoolPageNumber * bufferPoolPageSize,否则会触发OOM |
||
mappedFileSize |
文件映射区单个文件最大体积 |
默认1024×1024×64 |
在初始化的时候此参数确定文件映射区最大容量,参见内存管理章节 |
||
maxResultSet | 大结果集阈值 | 默认512×1024 ,单位字节 |
当查询的结果集超过这个阀值时,查询的SQL和查询结果集的大小才会被记录到结果集统计里面 | 正整数 |
|
enableSessionActiveRatioStat | 统计前端连接繁忙率开关 | 默认为1,开启 | 统计前端连接繁忙率开关;当开启性能模式(-DusePerformanceMode=1)时,此配置不生效 | 0或者1 |
|
enableConnectionAssociateThread | 记录当前时间,前端/后端连接分别使用线程情况的开关 | 默认为1,开启 | 记录当前时间,前端/后端连接分别使用线程情况的开关;当开启性能模式(-DusePerformanceMode=1)时,此配置不生效 | 0或者1 |
|
普通事务日志相关 | recordTxn |
事务log记录 |
默认0 |
在初始化服务的时候会注册一个类,其作用就是将事务的log写到一个指定的文件中 |
1-是,0-否 |
transactionLogBaseDir |
事务log目录 |
默认当前路径/txlogs |
当开启日志log记录时,记录文件会被存放在对应目录下 |
绝对路径 |
|
transactionLogBaseName |
事务log文件名称 |
默认server-tx |
事务记录存储文件的文件名 |
符合运行系统 |
|
transactionRotateSize | 事务日志单个文件大小。 | 默认16 ,单位M |
正整数 |
||
XA 事务 | xaRecoveryLogBaseDir |
xa的tm日志路径 |
dble目录/xalogs/ |
此日志涉及到XA事务状态的记录,并且在Dble意外重启之后需要从里面获取重启之前的xa事务状态,切勿自行修改 | 绝对路径 |
xaRecoveryLogBaseName | xa的tm日志名称 | xalog | 符合运行系统 |
||
xaSessionCheckPeriod |
XA定时任务执行周期 |
默认1000, 单位ms |
在server开始的时候会注册一个定时任务以此参数为执行周期 (注:定时任务必定会被注册) 如果有尝试多次没有成功提交的session在之后的定时任务会被重复提交 |
正整数 |
|
xaLogCleanPeriod |
定时XAlog清除周期 |
默认1000, 单位ms |
在server开始的时候会根据这个周期注册一个定时任务 (注:定时任务必定会被注册) 定时清XA log,主要是将已经回滚和提交成功的部分从记录中删除 |
正整数 |
|
xaRetryCount |
后台重试XA次数 |
默认0 |
后台定时任务重试XA次数,0为无限重试,达到设定次数后,停止重试 |
正整数 |
|
xaIdCheckPeriod |
检测疑似残留XA任务的周期 |
默认300,单位s |
后台定时检测疑似残留Xid任务; 如果设置小于等于0,则表示不开启此检测定时任务 |
正整数 |
|
视图相关参数 | viewPersistenceConfBaseDir |
视图记录本地文件路径 |
dble目录/viewConf |
用于存放视图本地记录文件的文件路径,集群配置时无意义 |
绝对路径 |
viewPersistenceConfBaseName |
视图记录本地文件名 |
viewJson |
视图记录的文件文件名,集群配置时无意义 |
符合运行系统 |
|
队列大小参数 | joinQueueSize | join时,左右结点的暂存数据行数的队列大小 | 1024 | 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 | 正整数 |
mergeQueueSize | merge时,左右结点的暂存数据行数的队列大小 | 1024 | 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 | 正整数 | |
orderByQueueSize | 排序时,时,左右结点的暂存数据行数的队列大小 | 1024 | 当行数大于此值而又没有及时被消费者消费掉,将会阻塞,目的是防止接收数据量太大,堆积在内存中 | 正整数 | |
join相关的策略 | useJoinStrategy | 是否使用nest loop 优化 | 默认不使用 | 开启之后会尝试判断join两边的where来重新调整查询SQL下发的顺序 | true 开启 false 不开启 |
joinStrategyType | nest loop 优化策略 | 默认值为-1,根据不同数值使用不同的nestloop策略 | 值为-1时,如果useJoinStrategy=true,那么进入useJoinStrategy的逻辑,否则不进行nestloop处理,值为0时, 不进行nestloop处理(无视useJoinStrategy是否开启),值为1时 进入useJoinStrategy的逻辑处理(无视useJoinStrategy是否开启),值为2时, 进入alwaysTryNestLoop的逻辑处理(无视useJoinStrategy是否开启) | 允许范围在-1到2之间 | |
nestLoopConnSize | 临时表阈值 | 默认4 | 若临时表行数大于这两个值乘积,则报告错误 |
正整数 |
|
nestLoopRowsSize | 临时表阈值 | 默认2000 | |||
inSubQueryTransformToJoin | in子查询转成join进行查询 | 默认false(默认不使用) | in子查询在dble内部可以尝试转成join处理,也可以选择不开启。可以通过查询计划比较两种方式的执行(执行过程有所区别,性能也会因为sql的不同而有不同的表现),开启与否不影响最终结果 | true 开启 false 不开启 | |
慢查询日志相关配置 | enableSlowLog |
慢查询日志开关 |
默认为0,关闭 |
慢查询日志开关 |
0或者1 |
slowLogBaseDir |
慢查询日志存储文件夹 |
dble根目录/slowlogs |
慢查询日志存储文件夹 |
文件夹路径 |
|
slowLogBaseName |
慢查询日志存储文件名前缀 |
slow-query |
慢查询日志存储文件名前缀(后缀名是.log) |
合法文件名 |
|
flushSlowLogPeriod |
日志刷盘周期,单位秒 |
1 |
日志刷盘周期,每隔这个周期,会强制将内存数据刷入磁盘 |
正整数 |
|
flushSlowLogSize |
日志刷盘条数阈值 |
1000 |
日志刷盘条数阈值,内存中每次写出这么多条日志,会强制刷盘1次 |
正整数 |
|
sqlSlowTime |
慢日志时间阈值,单位毫秒 |
100 |
慢日志时间阈值,大于此时间的查询会记录下来 |
正整数或者0 |
|
slowQueueOverflowPolicy |
慢日志队列无空间时,后续日志的处理策略 |
2 |
慢日志队列存储的是等待落盘的慢日志,目前队列固定长度为2000,当队列满了,后续慢日志会根据不同的策略进行不同的处理 策略1:保障持续服务业务:当遇到慢查询超过等待写入阈值时,丢弃当前产生的慢SQL,并发出告警; 策略2:尽量保证慢日志不丢失:当遇到慢查询超过等待写入阈值时,触发阻塞队列机制,新的慢SQL等待加入落盘队列,并触发告警;最大阻塞时间为3s,超时会丢弃当前慢日志的记录 |
1或2 |
|
load data 相关配置 | maxCharsPerColumn |
每列所允许最大字符数 |
默认为65535 |
每列所允许最大字符数 |
正整数 |
maxRowSizeToFile |
需要持久化的最大行数,在开启load data批处理模式下是拆分文件的阈值 |
默认为100000 |
当load data的数据行数超过阈值后,会将数据保存在文件中以防OOM。在开启批处理模式后load data的数据行数超过阈值后,会将该文件按照阈值拆分成多个文件进行保存,拆分过程中最后的数据行不到阈值放入在最后一个拆分的文件中,而不是再单独创建新文件存放 |
正整数 |
|
enableBatchLoadData |
是否启用load data的批处理模式 |
默认为0 |
load data会将导入文件按照maxRowSizeToFile的值拆分成多个文件分批导入 |
正整数,0为不开启,1为开启。其他数字无效 |
|
流量控制相关参数 | enableFlowControl |
是否启用流量控制,true/false |
默认为false |
具体流量控制请参见相关功能描述章节 |
true/false |
flowControlHighLevel |
触发流量控制的前端连接水位 |
默认为4194304(4096K) |
当部分前端连接的写出队列的字节数超出水位时触发流量控制,单位为字节数 |
正整数 |
|
flowControlLowLevel |
流量控制取消的前端连接水位 |
默认为262144(256K) |
当流量控制中的前端连接写出队列的字节数小于水位,则取消流量控制,单位为字节数 |
正整数 |
|
游标相关参数 | enableCursor |
是否开启 server-side-cursor. |
默认false |
注意游标功能必须客户端和服务器端同时开启才有效。且目前只支持分库分表场景使用。另外,如果客户端没开,服务器端开启了,运行 prepare statement依旧会损失一小部分性能。具体见 4.4 |
true or false |
maxHeapTableSize |
临时表在内存中存储的最大大小,单位byte |
默认为4096 |
临时表在内存中存储的最大大小,超过这个大小会被落盘 |
整数,大于等于 0 |
|
heapTableBufferChunkSize |
读 buffer 的 cache的大小 |
默认等于bufferPoolChunkSize,单位byte |
读取临时表临时文件时,读 buffer 的大小 |
正整数,必须是bufferPoolChunkSize的整数倍 |
|
general日志相关参数 | enableGeneralLog |
是否开启genegral日志 |
默认为0,关闭 |
开启后会将所有接收的sql记录在general日志文件中 |
0:关闭/1:开启 |
generalLogFile |
general日志文件地址; |
默认为general/general.log |
若配置以'/'开头则作为绝对路径生效,反之,则在homepath后拼接得到最终绝对路径且生效 |
符合运行系统 文件的命名规范 |
|
generalLogFileSize |
general日志文件大小; |
默认16M |
当general.log超过其大小则将会生成yyyy-MM/general-MM-dd-%d.log(默认格式)文件;类似与log4j |
正整数 |
|
generalLogQueueSize |
处理general日志的队列大小 |
默认4096 |
涉及内部实现机制;(类似与log4j的AsyncLogger) |
正整数且必须为2的次方 |
|
sql statistic相关参数 | enableStatistic |
是否开启全量统计 |
默认0 |
是否开启全量统计 |
1:开启, 0:不开启 |
enableStatisticAnalysis |
是否开启sql对user、table、condition聚合统计 |
默认为0,即不开启 |
作为show @@sql.sum.user、show @@sql.sum.table、show @@sql.condition聚合统计的开关 |
1:开启, 0:不开启 |
|
associateTablesByEntryByUserTableSize |
sql_statistic_by_associate_tables_by_entry_by_user表的大小 |
默认1024 |
超过其大小值,则淘汰溢出的历史数据 |
整数且大于1 |
|
frontendByBackendByEntryByUserTableSize |
sql_statistic_by_frontend_by_backend_by_entry_by_user表的大小 |
默认1024 |
超过其大小值,则淘汰溢出的历史数据 |
整数且大于1 |
|
tableByUserByEntryTableSize |
sql_statistic_by_table_by_user_by_entry表的大小 |
默认1024 |
超过其大小值,则淘汰溢出的历史数据 |
整数且大于1 |
|
statisticQueueSize |
处理sql statistic的队列大小 |
默认4096 |
涉及内部实现机制;(类似与log4j的AsyncLogger) |
正整数且必须为2的次方 |
|
samplingRate |
sql抽样统计的采样率 |
默认为100,即开启全样统计 |
samplingRate是个百分数。假如有100条事务进入dble,采样率设置为4,此时从100条事务中随机采样4条,且单个事务中的所有语句都会记录。 |
[0,100]之间的正整数 |
|
sqlLogTableSize |
sql log 表格大小 |
默认1024 |
超过其大小值,则淘汰最旧的一条事务(在开启事务的情况下,一个事务中可能包含多个sql) |
正整数 |
|
读写分离相关配置 | rwStickyTime |
读写分离场景下,主(写)从(读)实例的粘滞时间段 |
默认1000(ms), 若设置为0,则表示不开启主(写)从(读)实例的粘滞 |
执行当前读SQL的时间,距离上一次写SQL执行的时间段,没有超过rwStickyTime时间段时,则当前读SQL将会下发至后端主(写)实例. |
正整数 |
district |
dble配置所属区域,读写分离本地读场景下使用 |
默认为null |
读写分离本地读场景下读流量转发依据,该参数会和db.xml中dbInstance下的dbDistrict参数匹配 |
有效字符集 |
|
dataCenter |
dble配置所属数据中心,读写分离本地读场景下使用 |
默认为null |
读写分离本地读场景下读流量转发依据,该参数会和db.xml中dbInstance下的dbDataCenter参数匹配 |
有效字符集 |
|
堆外内存泄露监控相关 | enableMemoryBufferMonitor |
是否开启堆外内存泄露监控 |
0 |
是否开启堆外内存泄露监控 |
0表示关闭,1 表示开启 |
enableMemoryBufferMonitorRecordPool |
是否记录连接池的常驻内存 |
1 |
是否记录连接池的常驻内存,一般不用修改。该类内存通常被连接池一直持有且不释放,属于正常现象也不属于泄露。如果对观测产生了困扰可关闭 |
0表示关闭,1 表示开启 |
|
审计日志相关参数 | enableSqlDumpLog |
是否开启审计日志 |
默认为0,关闭 |
开启后会记录读写分离(或者分析用户),执行sql下发后端实例的系列信息 |
0:关闭/1:开启 |
sqlDumpLogBasePath |
审计日志的base路径 |
默认为sqldump |
审计日志的base路径 |
合法路径 |
|
sqlDumpLogFileName |
审计日志文件名 |
默认为sqldump.log |
日志文件名,生成日志的相对路径:sqldump/sqldump.log |
合法文件名 |
|
sqlDumpLogCompressFilePattern |
压缩日志文件命名格式 |
默认为${date:yyyy-MM}/sqldump-%d{MM-dd}-%i.log.gz |
如:sqldump/2022-10/sqldump-10-11-1.log.gz(精度为:天) |
合法文件名格式 |
|
sqlDumpLogOnStartupRotate |
重启触发日志翻转 |
默认为1 |
每次重启,是否触发翻转;1-是,0-否 |
1-是,0-否 |
|
sqlDumpLogSizeBasedRotate |
文件大小上限触发日志翻转 |
默认为50MB |
当sqldump.log文件大小达到50MB,触发日志翻转;单位可以为:KB、MB、GB |
合法文件大小 |
|
sqlDumpLogTimeBasedRotate |
间隔天数,触发日志翻转 |
默认为1 |
当设置为1时,则每天会进行日志反转 |
正整数 |
|
sqlDumpLogDeleteFileAge |
对过期时间段内的压缩文件进行删除 |
默认为90d |
对过期90天内的压缩文件进行删除,单位可以为:d(天)、h(时)、m(分)、s(秒);(注意,精度单位需要与sqlDumpLogCompressFilePattern保持一致,否者可能不生效;原因:基于log4j2的实现,存在这个现象 |
合法时间段 |
|
sqlDumpLogCompressFilePath |
过期的文件压缩匹配 |
默认为 */sqldump-*.log.gz |
匹配 sqlDumpLogCompressFilePath 路径下 且满足sqlDumpLogDeleteFileAge 的文件进行删除 |
合法路径 |
|
tcp相关参数 | tcpKeepIdle |
启用tcp-keepalive连接检测的连接空闲时间 |
默认为30s,最大值跟使用的操作系统相关 |
dble连接如果没有数据发送,多久后会发送Keepalive探测分组,生效条件需要指定版本的jdk,具体可查看2.38章节内容 |
正整数 |
tcpKeepInterval |
启用tcp-keepalive连接检测的时间间隔 |
默认为10s,最大值跟使用的操作系统相关 |
dble连接开启tcp-keepalive探活机制后,前后两次探测之间的时间间隔,生效条件需要指定版本的jdk,具体可查看2.38章节内容 |
正整数 |
|
tcpKeepCount |
启用tcp-keepalive检测启用后的最大重试次数 |
默认3,最大值跟使用的操作系统相关 |
开启tcp-keepalive探活机制后,关闭一个非正常连接之前的最大重试次数,生效条件需要指定版本的jdk,具体可查看2.38章节内容 |
正整数 |
|
1.2.3 bootstrap.dynamic.cnf
有些参数是可以通过管理命令热生效的,这部分参数会写到bootstrap.dynamic.cnf中,当dble重启时候,会用内部的值替换bootstrap.cnf中对应的值,这些参数是:
enableAlert
enableSlowLog
flushSlowLogPeriod
flushSlowLogSize
sqlSlowTime
enableFlowControl
flowControlLowLevel
flowControlHighLevel
enableGeneralLog
generalLogFile
enableStatistic
associateTablesByEntryByUserTableSize
frontendByBackendByEntryByUserTableSize
tableByUserByEntryTableSize
enableBatchLoadData
maxRowSizeToFile
enableMemoryBufferMonitor
xaIdCheckPeriod
enableSqlDumpLog
1.2.4 配置实例
#encoding=UTF-8
-agentlib:jdwp=transport=dt_socket,server=y,address=8088,suspend=n
-server
-XX:+AggressiveOpts
-Dfile.encoding=UTF-8
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1984
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.host=127.0.0.1
-Xmx4G
-Xms1G
-XX:MaxDirectMemorySize=2G
# base config
-DhomePath=.
-DinstanceName=1
# valid for sequenceHandlerType=2 or 3
-DinstanceId=1
-DserverId=xxx1
#-DbindIp=0.0.0.0
#-DserverPort=8066
#-DmanagerPort=9066
#-DmaxCon=1024
#-DNIOFrontRW=4
#-DNIOBackendRW=12
#-DfrontWorker=4
#-DmanagerFrontWorker=2
#-DbackendWorker=12
#-DcomplexQueryWorker=8
#-DwriteToBackendWorker=4
-DfakeMySQLVersion=5.7.11
# serverBacklog size,default 2048
-DserverBacklog=2048
#-DusePerformanceMode=0
# if need out HA
-DuseOuterHa=true
# connection
#-Dcharset=utf8mb4
-DmaxPacketSize=167772160
-DtxIsolation=2
#-Dautocommit=1
#parameter for mysql
#-DgroupConcatMaxLen=1024
# option
#-DuseCompression=1
-DusingAIO=0
-DuseThreadUsageStat=1
# query time cost statistics
#-DuseCostTimeStat=0
#-DmaxCostStatSize=100
#-DcostSamplePercent=1
# consistency
# check the consistency of table structure between nodes,default not
-DcheckTableConsistency=0
# check period, he default period is 60000 milliseconds
-DcheckTableConsistencyPeriod=60000
# processor check conn
-DprocessorCheckPeriod=1000
-DsqlExecuteTimeout=3000
-DidleTimeout=1800000
#-DbackSocket unit:bytes
#-DbackSocketSoRcvbuf=4194304
#-DbackSocketSoSndbuf=1048576
#-DbackSocketNoDelay=1
# frontSocket
#-DfrontSocketSoRcvbuf=1048576
#-DfrontSocketSoSndbuf=4194304
#-DfrontSocketNoDelay=1
# query memory used for per session,unit is M
-DotherMemSize=4
-DorderMemSize=4
-DjoinMemSize=4
# off Heap unit:bytes
-DbufferPoolChunkSize=32767
-DbufferPoolPageNumber=512
-DbufferPoolPageSize=2097152
#-DmappedFileSize=2097152
# transaction log
# 1 enable record the transaction log, 0 disable ,the unit of transactionRotateSize is M
-DrecordTxn=0
#-DtransactionLogBaseDir=/txlogs
#-DtransactionLogBaseName=server-tx
#-DtransactionRotateSize=16
# 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
-DxaSessionCheckPeriod=1000
# use XA transaction ,the finished XA log will removed. the default period is 1000 milliseconds
-DxaLogCleanPeriod=1000
# XA Recovery Log path
# -DxaRecoveryLogBaseDir=/xalogs/
# XA Recovery Log name
#-DxaRecoveryLogBaseName=xalog
# XA Retry count, retry times in backend, 0 means always retry until success
#-DxaRetryCount=0
#-DviewPersistenceConfBaseDir=/viewPath
#-viewPersistenceConfBaseName=viewJson
# for join tmp results
#-DmergeQueueSize=1024
#-DorderByQueueSize=1024
#-DjoinQueueSize=1024
# true is use JoinStrategy, default false
#-DuseJoinStrategy=true
#-DjoinStrategyType=-1
-DnestLoopConnSize=4
-DnestLoopRowsSize=2000
# if enable the slow query log
-DenableSlowLog=1
# the slow query log location
#-DslowLogBaseDir=./slowlogs
#-DslowLogBaseName=slow-query
# the max period for flushing the slow query log from memory to disk after last time , unit is second
-DflushSlowLogPeriod=1
# the max records for flushing the slow query log from memory to disk after last time
-DflushSlowLogSize=1000
# the threshold for judging if the query is slow , unit is millisecond
-DsqlSlowTime=100
# used for load data,maxCharsPerColumn means max chars length for per column when load data
#-DmaxCharsPerColumn=65535
# used for load data, because dble need save to disk if loading file contains large size
#-DmaxRowSizeToFile=100000
if enable the batch load data
#-DenableBatchLoadData=1
#enableFlowControl=false
#-DflowControlHighLevel=4194304
#-DflowControlLowLevel=262144
# if enable the general log
#-DenableGeneralLog=1
# general log file path
#-DgeneralLogFile=general/general.log
# maximum value of file, unit is mb
#-DgeneralLogFileSize=16
# the queue size must not be less than 1 and must be a power of 2
#-DgeneralLogQueueSize=4096
# if enable statistic sql
#-DenableStatistic=1
#-DenableStatisticAnalysis=0
#-DassociateTablesByEntryByUserTableSize=1024
#-DfrontendByBackendByEntryByUserTableSize=1024
#-DtableByUserByEntryTableSize=1024
# processing queue size must not be less than 1 and must be a power of 2
#-DstatisticQueueSize=4096
# samplingRate
#-DsamplingRate=100
# size of sql log table
#-DsqlLogTableSize=1024
#-DmaxResultSet=524288
#-DinSubQueryTransformToJoin=false
#For rwSplitUser, Implement stickiness for read and write instances, the default value is 1000ms
#-DrwStickyTime=1000
# if enable frontend connection activity ratio statistics
#-DenableSessionActiveRatioStat=1
# if enable frontend connection and backend connection are associated with threads
#-DenableConnectionAssociateThread=1
#-Ddistrict=
#-DdataCenter=
#-DxaIdCheckPeriod=300
# whether enable the memory buffer monitor
#-DenableMemoryBufferMonitor=0
#-DenableMemoryBufferMonitorRecordPool=1
#-DenableSqlDumpLog=0
#-DsqlDumpLogBasePath=sqldump
#-DsqlDumpLogFileName=sqldump.log
#-DsqlDumpLogCompressFilePattern=${date:yyyy-MM}/sqldump-%d{MM-dd}-%i.log.gz
#-DsqlDumpLogOnStartupRotate=1
#-DsqlDumpLogSizeBasedRotate=50MB
#-DsqlDumpLogTimeBasedRotate=1
#-DsqlDumpLogDeleteFileAge=90d
#-DsqlDumpLogCompressFilePath=*/sqldump-*.log.gz
#-DtcpKeepIdle=30
#-DtcpKeepInterval=10
#-DtcpKeepCount=3