背景信息 #
SphereEx-DBPlusEngine-Proxy 提供了丰富的系统配置属性,用户可通过 global.yaml 进行配置。
参数解释 #
| 名称 | 数据类型 | 说明 | 默认值 | 动态生效 |
|---|---|---|---|---|
| agent-plugins-enabled | boolean | 是否启用 agent 插件。 | TRUE | 否 |
| kernel-executor-size | int | 用于设置任务处理线程池的大小。每个 ShardingSphereDataSource 使用一个独立的线程池,同一个 JVM 的不同数据源不共享线程池。 | infinite | 否 |
| max-connections-size-per-query | int | 一次查询请求在每个数据库实例中所能使用的最大连接数。 | 1 | 是 |
| check-table-metadata-enabled | boolean | 在程序启动和更新时,是否检查分片元数据的结构一致性。 | false | 是 |
| load-table-metadata-batch-size (?) | int | 在程序启动或刷新元数据时,单个批次加载表元数据的数量。 | 1000 | 是 |
| proxy-frontend-flush-threshold | int | 在 ShardingSphere-Proxy 中设置传输数据条数的 IO 刷新阈值。 | 128 | 是 |
| proxy-backend-query-fetch-size | int | Proxy 后端与数据库交互的每次获取数据行数(使用游标的情况下)。数值增大可能会增加 ShardingSphere Proxy 的内存使用。默认值为 -1,代表设置为 JDBC 驱动的最小值。 | -1 | 是 |
| proxy-frontend-executor-size | int | Proxy 前端 Netty 线程池线程数量,默认值 0 代表使用 Netty 默认值。 | 0 | 否 |
| proxy-frontend-max-connections | int | 允许连接 Proxy 的最大客户端数量,默认值 0 代表不限制。 | 0 | 是 |
| proxy-default-port | String | Proxy 默认端口。 | 3307 | 否 |
| proxy-netty-backlog | int | Proxy 默认 netty back-log 参数。 | 1024 | 否 |
| proxy-frontend-database-protocol-type | String | Proxy 前端协议类型,支持 MySQL, PostgreSQL, openGauss | "" | 否 |
| proxy-instance-type | String | Proxy 实例类型,可选项:Proxy、SphereEx:Proxy,Proxy 表示云上部署类型,SphereEx:Proxy 表示本地部署类型 | Proxy | 否 |
| sql-show | boolean | 是否在系统日志中打印 SQL。 打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含逻辑 SQL 和真实 SQL。 如果开启配置,日志将使用 Topic ShardingSphere-SQL,系统日志级别是 INFO。 | false | 是 |
| sql-simple | boolean | 是否在系统日志中打印简单风格的 SQL。 | false | 是 |
| slow-query-log | boolean | 是否开启慢查询(需搭配 agent 使用) | false | 是 |
| long-query-time | int | 慢查询阈值,单位 ms(需搭配 agent 使用) | 10 | 是 |
| general-query-log | boolean | 是否开启全量日志(需搭配 agent 使用) | false | 是 |
| system-log-level | String | 系统日志等级 DEBUG、INFO、WARN、ERROR | INFO | 是 |
| system-log-pattern | String | 系统日志格式 日志格式可参考 Logback Layouts | [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n|是 | |
| storage-node-heartbeat-interval-milliseconds | int | 用于配置存储节点状态收集间隔,单位毫秒。如果配置等于 0,则关闭存储节点状态收集功能。 | 0 | 是 |
| meta-data-consistency-enabled | boolean | 用于控制是否开启 proxy的 DDL 和 RDL 一致性更新 | false | 是 |
| proxy-meta-data-collector-enabled | boolean | 用于开启定时任务线程的元数据信息收集 | TRUE | 否 |
| driver-by-pass-mode-enabled (?) | boolean | 是否开启 Driver 接入端旁路模式,旁路模式下直接使用原生数据库连接执行,能够 100% 兼容业务 SQL。旁路模式适用于项目初期接入 Driver,配合 Agent 可以收集全量 SQL 进行兼容性评估,也可以在项目上线后,用于紧急情况下的流量回切,保证业务稳定。旁路模式开启会校验所有非系统库下的配置是否满足要求,目前支持 3 种场景:1. 不配置 SingleRule 外的任何规则,并且逻辑库中仅有 1 个数据源;2. 除 SingleRule 外,配置了 EncryptRule 并且所有加密表都配置了和逻辑列同名的明文列,并且逻辑库中仅有 1 个数据源;3. 除 SingleRule 外,配置了 DualWriteRule 且仅包含一组逻辑数据源,该场景下旁路模式会切换到 primaryDataSourceName 主数据执行; | false | 是 |
| use-original-sql-when-execute-failed (?) | boolean | 是否开启 SQL 兼容模式,开启 SQL 兼容模式可以支持加密、单表、双写场景下部分 SQL 兼容,将异常的 SQL 回退到原始 SQL 执行。可以在生产环境开启 SQL 兼容模式,避免业务测试不充分导致的生产报错,SQL 兼容模型适用范围请参考各自功能的描述文档。 | false | 是 |
| sharding-in-predicate-rewrite-min-size (?) | int | 分片功能 WHERE 过滤条件中,分片键 IN 改写的最小参数个数,默认值为 500,当分片键 IN 的参数个数等于或者超过 500,则会根据路由结果对 IN 进行改写。 | 500 | 是 |
属性配置可以通过 DistSQL 在线修改。 其中支持动态修改的属性立即生效,不支持动态修改的属性在重启后生效。
配置示例 #
完整配置示例请参考:
#props:
# system-log-level: INFO
# max-connections-size-per-query: 1
# kernel-executor-size: 16 # Infinite by default.
# proxy-frontend-flush-threshold: 128 # The default value is 128.
# sql-show: false
# check-table-metadata-enabled: false
# # Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.
# # The default value is -1, which means set the minimum value for different JDBC drivers.
# proxy-backend-query-fetch-size: -1
# proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.
# proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.
# proxy-default-port: 3307 # Proxy default port.
# proxy-netty-backlog: 1024 # Proxy netty backlog.
# cdc-server-port: 33071 # CDC server port
# proxy-frontend-ssl-enabled: false
# proxy-frontend-ssl-cipher: ''
# proxy-frontend-ssl-version: TLSv1.2,TLSv1.3
# proxy-frontend-ssl-cert-file: ''
# proxy-frontend-ssl-key-file: ''
# cdc-decrypt-enabled: false
# system-log-pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n"