Logo
集群元数据

集群元数据 #

元数据持久化仓库 #

背景信息 #

DBPlusEngine 为不同的运行模式提供了不同的元数据持久化方式,用户在配置运行模式的同时可以选择合适的方式来存储元数据。

ZooKeeper 持久化 #

类型:ZooKeeper

适用模式:Cluster

可配置属性:

名称数据类型说明默认值
retryIntervalMillisecondsint重试间隔毫秒数500
maxRetriesint客户端连接最大重试次数3
timeToLiveSecondsint临时数据失效的秒数60
operationTimeoutMillisecondsint客户端操作超时的毫秒数500
digestString登录认证密码

Etcd 持久化 #

类型:Etcd

适用模式:Cluster

可配置属性:

名称数据类型说明默认值
timeToLiveSecondslong临时数据失效的秒数30
connectionTimeoutlong连接超时秒数30

Mate 持久化 #

类型 : SphereEx:MATE

适用模式 : Cluster

可配置属性 :

暂无

Nacos 持久化 #

类型 : Nacos

适用模式 : Cluster

可配置属性 :

名称数据类型说明默认值
clusterIpString集群中的唯一标识符Host IP
retryIntervalMillisecondslong重试间隔毫秒500
maxRetriesint客户端检查数据可用性的最大重试次数3
timeToLiveSecondsint临时节点存活秒数30

Maven 依赖配置:

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-plugin-mode-cluster-repository-nacos</artifactId>
    <version>${RELEASE.VERSION}</version>
</dependency>

操作步骤 #

  1. 在 global.yaml 中配置 Mode 运行模式
  2. 配置元数据持久化仓库类型

配置示例 #

  • 集群模式
mode:
  type: Cluster
  repository:
    type: SphereEx:MATE
    props:
      namespace: governance
      server-lists: localhost:21506

集群元数据存储(ZooKeeper ) #

在定义的命名空间下,rulespropsmetadata 节点以 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

可以治理读写分离从库,可动态添加删除以及禁用。