1.10 版本变更
3.23.08.0 变更内容
1 配置调整
1.1 bootstrap.cnf
1.1.1 sql统计相关的变动
变更项 |
变更内容 |
变更版本 |
向后兼容性 |
变更说明 |
移除 |
useSqlStat |
3.23.08 |
不兼容 |
原useSqlStat=0,现在由samplingRate=0代替;原useSqlStat=1,现在由samplingRate=100代替; |
移除 |
bufferUsagePercent |
3.23.08 |
不兼容 |
原来默认达到内存的80%,则将产生sql统计数据进行清理,达到释放部分内存的目的(原配合useSqlStat=1使用) |
移除 |
clearBigSQLResultSetMapMs |
3.23.08 |
不兼容 |
原作为定时检测sql统计数据占用内存情况的周期(原配合useSqlStat=1、bufferUsagePercent使用) |
移除 |
sqlRecordCount |
3.23.08 |
不兼容 |
原作为慢查询show @@sql.slow记录阈值(原配合useSqlStat=1使用) |
变更 |
samplingRate |
3.23.08 |
兼容 |
修改默认值;原先为0,现在为100; 表示开启采样率为100%的sql统计,对应管理端sql_log表 |
新增 |
enableStatisticAnalysis |
3.23.08 |
兼容 |
作为show @@sql.sum.user、show @@sql.sum.table、show @@sql.condition聚合统计的开关,默认不开启 |
2 管理端命令调整
2.1 sql统计相关show命令
涉及变动的命令:show @@sql、show @@sql.high、show @@sql.slow、 show@@sql.large、show @@sql.resultSet、show @@sql.sum.user、show @@sql.sum.table、show @@sql.condition;
移除的命令有:reload @@sqlslow=?、reload @@user_stat;
调整之前:
- 以上8个show命令均由
useSqlStat
开关参数控制。(与samplingRate
参数、管理端sql_log表无关) - show @@sql、show @@sql.high、show @@sql.slow、show @@sql.large、show @@sql.resultSet 区分用户存储,比如show @@sql,每个用户存储最新的1024条sql;show @@sql.high, 每个用户存储近期执行1024条高频的sql。(原保存5N1024条sql统计的数据量,其中N表示用户个数)
- show @@sql、show @@sql.high、show @@sql.slow、show @@sql.large、show @@sql.resultSet 通过在后面追加true的方式清理数据;比如: show @@sql true; 或者使用reload @@user_stat命令统一清理这5个命令的全部数据
- show @@sql.slow 由reload @@sqlslow=? 设置符合慢日志的阈值
- 以上8个show命令均由
调整之后:
- show @@sql、show @@sql.high、show @@sql.slow、show @@sql.large、show @@sql.resultSet;
- 这5个命令查询出来的数据来源于管理端sql_log表;sql_log表由
samplingRate
开关参数和sqlLogTableSize
表大小限制参数控制,因此show @@sql.xx相关命令从此版本开始由这两个参数控制。 sqlLogTableSize
参数默认控制管理端sql_log表中只保存最新的1024个事务数据;由于show @@sql.xx相关命令的数据都基于sql_log,因此对比之前版本,show @@sql.xx相关命令的数据不再区分用户存储。(现在仅保存1024个事务数据量)- 不支持show @@sql.xx true; 统一清理数据的方式为:
truncate sql_log
- show @@sql.slow与慢日志 统一配置和开关;调整为由
sqlSlowTime
参数控制和reload @@slow_query.time=?;
- 这5个命令查询出来的数据来源于管理端sql_log表;sql_log表由
- show @@sql.sum.user、show @@sql.sum.table、show @@sql.condition;
- 由
enableStatisticAnalysis
开关参数控制,默认关闭, 此外可使用动态开关命令enable/disable @@statisticAnalysis; 这3个show命令维护各自数据(表示有3份数据,与sql_log无关)。
- 由
- show @@sql、show @@sql.high、show @@sql.slow、show @@sql.large、show @@sql.resultSet;
3 sql_log表结构调整
增加字段result_size:表示结果集的字节大小
3.23.04.0 变更内容
1 配置调整
dble在3.23.04.0版本对读写分离模式的fakeMySQLVersion(in bootstrap.cnf)设置规则进行了调整。
以往规则和分布式一致:填写的版本号不能高于后端Mysql节点的最低版本号, 否则启动失败。
调整后(和分布式的规则区分开):填写的版本号和后端MySQL节点的版本号需要在范围上保持一致,否则启动失败。
MySQL官方认为5.7.20<=版本<8.0.0和版本>=8.0.3是一致的,除此之外其它的版本则认为是同一种情况。例如以下的配置情况:
1.fakeMySQLVersion:5.7.20 mysql-version:5.7.25
2.fakeMySQLVersion:8.0.3 mysql-version:8.0.23
3.fakeMySQLVersion:5.7.15 mysql-version:8.0.1
3.22.11.0 变更内容
1 配置文件调整
1.1 db.xml
变更项 |
变更内容 |
变更版本 |
向后兼容性 |
变更说明 |
修改 |
delayThreshold |
3.22.11 |
兼容 |
修改参数单位。原先为秒,现在为毫秒 |
3.22.01.0 变更内容
1 管理端命令调整
管理端的线程池名称做了调整,BusinessExecutor调整为frontWorker,backendBusinessExecutor调整为backendWorker,complexQueryExecutor调整为complexQueryWorker,
writeToBackendExecutor调整为writeToBackendWorker
管理端的线程名称BusinessExecutor0替换为0-frontWorker,backendBusinessExecutor0替换为0-backendWorker,
writeToBackendExecutor0替换为0-writeToBackendWorker,$_NIO_REACTOR_FRONT-0替换为0-NIOFrontRW,$_NIO_REACTOR_BACKEND-0替换为0-NIOBackendRW
调整以下管理端命令:
- show @@threadpool;
- show @@threadpool.task;
- show @@thread_used;
2 dble_db_instance表结构调整
- 增加字段database_type:表示dbInstance的数据库类型
3.21.06.0 变更内容
1 dble的配置文件版本变更
1.1 bootstrap.cnf
变更项 |
变更内容 |
变更版本 |
向后兼容性 |
新增 |
inSubQueryTransformToJoin,in子查询转成join进行查询 |
3.21.06 |
不兼容 |
新增 |
enableCursor,默认为 false |
3.21.06 |
不兼容 |
inSubQueryTransformToJoin
原来:如果sql中存在in子查询并且满足可以转join的条件,在dble中会默认将in子查询转成join处理
更改后:在默认情况下,不会将in子查询转成join处理,而是正常按照子查询处理。如果需要将in子查询转成join处理,请在bootstrap.cnf增加该参数(-DinSubQueryTransformToJoin=true)
具体说明请参考:in子查询是否转join的说明
enableCursor:
原来:老版本是只需要 client 显式开启即可使用游标。
现在: 新版本游标功能变成需要client 和 server 同时显式开启才能使用,server 默认不开启。
升级模式:通常不需要这个功能,如果确实需要可以开启。需注意开启会导致所有的prepared statement牺牲一部分性能,用于查询列的数量,详情见 【4.4 prepared statement】.
1.2 sharding.xml
变更项 |
变更内容 |
变更版本 |
向后兼容性 |
修改 |
jumpStringHash中的hashSlice默认值。 |
3.21.06 |
不兼容 |
原来:如果不设置hashSlice, 之前版本默认值是(0:-1),不是一个很好的默认值,会丢失一个字符的计算。具体见文档【1.5】中关于 stringhash 的介绍
现在: 3.21.06改为了默认值(0:0)
升级模式:需检查jumpStringHash 的 hashSlice是否有配置,如果原本没有配置需要配置为(0:-1)。
2 集群中存储格式调整
dble在3.21.06.0版本对集群的存储格式进行了调整
原有: 配置中心(zk)存储value的格式不尽相同,且不具备向后兼容性
更改后: 配置中心(zk)存储value的格式均改成了json 格式。并且在在外层包裹了一个统一的格式。 具体格式如下:
{
"instanceName": "1", //bootstrap.cnf 里面的instanceName
"apiVersion": 1, //为了兼容性增加的版本字段
"createdAt": 1628669627058, //创建这个节点的时间戳(毫秒)
"data": { … } //具体数据以 json 格式存储在这里
}
升级方式: 由于两者的元数据互不兼容,升级前需停止旧版本 dble,然后删除配置中心中当前集群的所有元数据,即删除目录"/{rootPath}/{clusterId}
",再启动新版本。如需缩短不可用的时间,新版本可以使用不同的clusterId,即启动一个和旧版本隔离的全新集群。
注意:
rootPath和clusterId 的对应值见 cluster.cnf
如果不删除,升级会导致dble 无法启动,并报错 "you may use old incompatible metadata."
降级方式:同升级。
3 日志类管理端命令删除
删除以下管理端命令:
- log @@[file=logname limit=numberOfRow key=keyword regex=regex]
- show @@syslog limit=?
- file @@list
- file @@show filename
- file @@upload filename content
4 dble_thread_pool表结构调整
- 原有字段size修改为pool_size:表示当前实际线程池的大小
- 增加字段core_pool_size:表示设置的核心线程池大小
3.21.02.0 变更内容
1 集群中sequence结构调整
dble在3.21.02.0版本对序列的存储结构进行了调整
原有: 配置中心(zk)存储sequence的结构为key-value形式。key:文件名;value:文件原始内容
更改后: 配置中心(zk)存储sequence的结构为key-value形式。key:文件名;value:文件内容的json形式
升级方式:升级前需删除配置中心的sequence配置(rootPath/clusterId/conf/sequences),存储结构详情见: ZK整体目录结构
2 dble的配置文件验证方式调整
在3.21.02.0版本对dble的xml配置文件验证方式调整
原有:使用dtd文件验证xml的格式,dble中使用DocumentBuilder的方式解析xml文件
更改后:使用xsd文件验证xml的格式,dble中使用jaxb2.0方式解析xml文件
升级方式:升级前需删除原有xml配置文件中的标签:db.xml中的
<!DOCTYPE dble:db SYSTEM "db.dtd">、sharding.xml中的<!DOCTYPE dble:sharding SYSTEM "sharding.dtd">、user.xml中的<!DOCTYPE dble:user SYSTEM "user.dtd">
3 dble的配置文件版本变更
3.1 bootstrap.cnf
变更项 |
变更内容 |
变更版本 |
向后兼容性 |
升级方式 |
变更 |
homePath必须显示声明 |
3.21.02 |
兼容 |
升级前需要将原来在bootstrap.cnf中未声明的homePath,加上-DhomePath=.(路径为当前目录,已声明的无需更改) |
3.20.07.0 变更内容
1 配置文件版本变更
dble 在3.20.07.0 版本做了配置的重构。历史变更请参考2.20.04.0的变更
可以通过升级工具dble_update_config将配置从2.20.04.0 升级到3.20.07.0,如果是更早版本,建议先升级到2.20.04.0
升级工具用法:
dble_update_config [-i=read_dir] [-o=write_dir] [-p=rootPath]
read_dir/write_dir: 如果不指定,缺省值为当前目录,建议指定或者提前备份配置
rootPath:如果集群模式是zk, 那么缺省值为 /dble
, 如果集群模式是ucore, 缺省值为universe/dble
工具将会读取文件:
myid.properties
wrapper.conf
server.xml
schema.xml
rule.xml
log4j2.xml
cacheservice.properties(option)
sequence_distributed_conf.properties for type3 (option)
sequence_time_conf.properties for type2 (option)
然后写出文件:
cluster.cnf
bootstrap.cnf
user.xml
db.xml
sharding.xml
log4j2.xml
cacheservice.properties(option)
重构后的配置概览图: