集群元数据 #
元数据持久化仓库 #
背景信息 #
DBPlusEngine 为不同的运行模式提供了不同的元数据持久化方式,用户在配置运行模式的同时可以选择合适的方式来存储元数据。
ZooKeeper 持久化 #
类型:ZooKeeper
适用模式:Cluster
可配置属性:
名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
retryIntervalMilliseconds | int | 重试间隔毫秒数 | 500 |
maxRetries | int | 客户端连接最大重试次数 | 3 |
timeToLiveSeconds | int | 临时数据失效的秒数 | 60 |
operationTimeoutMilliseconds | int | 客户端操作超时的毫秒数 | 500 |
digest | String | 登录认证密码 |
Etcd 持久化 #
类型:Etcd
适用模式:Cluster
可配置属性:
名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
timeToLiveSeconds | long | 临时数据失效的秒数 | 30 |
connectionTimeout | long | 连接超时秒数 | 30 |
Mate 持久化 #
类型 : SphereEx:MATE
适用模式 : Cluster
可配置属性 :
暂无
Nacos 持久化 #
类型 : Nacos
适用模式 : Cluster
可配置属性 :
名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
clusterIp | String | 集群中的唯一标识符 | Host IP |
retryIntervalMilliseconds | long | 重试间隔毫秒 | 500 |
maxRetries | int | 客户端检查数据可用性的最大重试次数 | 3 |
timeToLiveSeconds | int | 临时节点存活秒数 | 30 |
Maven 依赖配置:
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-plugin-mode-cluster-repository-nacos</artifactId>
<version>${RELEASE.VERSION}</version>
</dependency>
操作步骤 #
- 在 global.yaml 中配置 Mode 运行模式
- 配置元数据持久化仓库类型
配置示例 #
- 集群模式
mode:
type: Cluster
repository:
type: SphereEx:MATE
props:
namespace: governance
server-lists: localhost:21506
集群元数据存储(ZooKeeper ) #
在定义的命名空间下,rules
、props
和 metadata
节点以 YAML 格式存储配置,可通过修改节点来实现对于配置的动态管理。nodes
存储数据库访问对象运行节点,用于区分不同数据库访问实例。
namespace
├──rules # 全局规则配置
├──props # 属性配置
├──metadata # Metadata 配置
├ ├──${databaseName} # 逻辑数据库名称
├ ├ ├──schemas # Schema 列表
├ ├ ├ ├──${schemaName} # 逻辑 Schema 名称
├ ├ ├ ├ ├──tables # 表结构配置
├ ├ ├ ├ ├ ├──${tableName}
├ ├ ├ ├ ├ ├──...
├ ├ ├ ├ ├──views # 视图结构配置
├ ├ ├ ├ ├ ├──${viewName}
├ ├ ├ ├ ├ ├──...
├ ├ ├ ├──...
├ ├ ├──versions # 元数据版本列表
├ ├ ├ ├──${versionNumber} # 元数据版本号
├ ├ ├ ├ ├──data_sources # 数据源配置
├ ├ ├ ├ ├──rules # 规则配置
├ ├ ├ ├──...
├ ├ ├──active_version # 激活的元数据版本号
├ ├──...
├──nodes
├ ├──compute_nodes
├ ├ ├──online
├ ├ ├ ├──proxy
├ ├ ├ ├ ├──UUID # Proxy 实例唯一标识
├ ├ ├ ├ ├──....
├ ├ ├ ├──jdbc
├ ├ ├ ├ ├──UUID # JDBC 实例唯一标识
├ ├ ├ ├ ├──....
├ ├ ├──status
├ ├ ├ ├──UUID
├ ├ ├ ├──....
├ ├ ├──worker_id
├ ├ ├ ├──UUID
├ ├ ├ ├──....
├ ├ ├──process_trigger
├ ├ ├ ├──process_list_id:UUID
├ ├ ├ ├──....
├ ├ ├──labels
├ ├ ├ ├──UUID
├ ├ ├ ├──....
├ ├ ├──xa_recovery_id
├ ├ ├ ├──UUID
├ ├ ├ ├ ├──├──UUID
├ ├──storage_nodes
├ ├ ├──${databaseName.groupName.ds}
├ ├ ├──${databaseName.groupName.ds}
├──sys_data
├ ├──shardingsphere
├ ├ ├──schemas
├ ├ ├ ├──shardingsphere
├ ├ ├ ├ ├──tables # 系统表
├ ├ ├ ├ ├ ├──sharding_table_statistics # 分片统计表数据
├ ├ ├ ├ ├ ├ ├──8a2dcb0d97c3d86ef77b3d4651a1d7d0 # md5
├ ├ ├ ├ ├ ├──cluster_information # 集群信息表
/rules
全局规则配置,可包括访问 DBPlusEngine-Proxy 用户名和密码的权限配置。
全局规则配置,可包含事务配置、SQL 解析配置等。
transaction:
defaultType: XA
providerType: Atomikos
sqlParser:
sqlStatementCache:
initialCapacity: 2000
maximumSize: 65535
parseTreeCache:
initialCapacity: 128
maximumSize: 1024
/props
属性配置
kernel-executor-size: 20
sql-show: true
/metadata/${schemaName}/dataSources
多个数据库连接池的集合,不同数据库连接池属性自适配(例如:DBCP,C3P0,Druid, HikariCP)。
ds_0:
initializationFailTimeout: 1validationTimeout: 5000maxLifetime: 1800000leakDetectionThreshold: 0minimumIdle: 1password: root
idleTimeout: 60000jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_0?serverTimezone=UTC&useSSL=falsedataSourceClassName: com.zaxxer.hikari.HikariDataSource
maximumPoolSize: 50connectionTimeout: 30000username: root
poolName: HikariPool-1
ds_1:
initializationFailTimeout: 1validationTimeout: 5000maxLifetime: 1800000leakDetectionThreshold: 0minimumIdle: 1password: root
idleTimeout: 60000jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_1?serverTimezone=UTC&useSSL=falsedataSourceClassName: com.zaxxer.hikari.HikariDataSource
maximumPoolSize: 50connectionTimeout: 30000username: root
poolName: HikariPool-2
/metadata/${schemaName}/rules
规则配置,可包括数据分片、读写分离、数据加密、影子库压测等配置。
- !SHARDING
xxx
- !READWRITE_SPLITTING
xxx
- !ENCRYPT
xxx
/metadata/${schemaName}/tables
表结构配置,每个表使用单独节点存储,暂不支持动态修改。
name: t_order # 表名
columns: # 列id: # 列名caseSensitive: falsedataType: 0generated: falsename: id
primaryKey: trues
order_id:
caseSensitive: falsedataType: 0generated: falsename: order_id
primaryKey: false
indexs: # 索引t_user_order_id_index: # 索引名name: t_user_order_id_index
/nodes/compute_nodes
数据库访问对象运行实例信息,子节点是当前运行实例的标识。 运行实例标识由运行服务器的 IP 地址和 PORT 构成。 运行实例标识均为临时节点,当实例上线时注册,下线时自动清理。 注册中心监控这些节点的变化来治理运行中实例对数据库的访问等。
/nodes/storage_nodes
可以治理读写分离从库,可动态添加删除以及禁用。