数据库发现 #
语法 | 描述 | 类型 |
---|---|---|
CREATE DB_DISCOVERY RULE ruleDefinition [, ruleDefinition] … | 创建数据库发现规则 | RDL |
ALTER DB_DISCOVERY RULE ruleDefinition [, ruleDefinition] … | 修改数据库发现规则 | RDL |
DROP DB_DISCOVERY RULE ruleName [, ruleName] … | 删除数据库发现规则 | RDL |
DROP DB_DISCOVERY TYPE discoveryTypeName [, discoveryTypeName] … | 删除数据库发现类型 | RDL |
DROP DB_DISCOVERY HEARTBEAT discoveryHeartbeatName [, discoveryHeartbeatName] … | 删除数据库发现监听心跳算法 | RDL |
SHOW DB_DISCOVERY RULES [FROM databaseName] | 查看数据库发现规则 | RQL |
SHOW DB_DISCOVERY TYPES [FROM databaseName] | 查看数据库发现类型 | RQL |
SHOW DB_DISCOVERY HEARTBEATS [FROM databaseName] | 查看数据库发现监听心跳算法 | RQL |
COUNT DB_DISCOVERY RULE | 统计数据库发现规则的数量,在后续版本中将废弃此语法 | RQL |
1. 创建数据库发现规则 #
CREATE DB_DISCOVERY RULE ruleDefinition [, ruleDefinition] ...
ruleDefinition:
ruleName (storageUnits, typeDefinition, heartbeatDefinition)
storageUnits:
STORAGE_UNITS(storageUnitName [, storageUnitName] ...)
typeDefinition:
TYPE(NAME=typeName [, PROPERTIES([properties] )] )
heartbeatDefinition
HEARTBEAT (PROPERTIES (properties))
properties:
property [, property] ...
property:
key=value
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
discoveryTypeName | IDENTIFIER | 数据库发现类型名 |
ruleName | IDENTIFIER | 规则名称 |
discoveryHeartbeatName | IDENTIFIER | 监听心跳名称 |
typeName | STRING | 数据库发现类型,如:MySQL.MGR |
storageUnitName | IDENTIFIER | 资源名称 |
discoveryType
指定数据库发现服务类型,DBPlusEngine内置支持 MySQL.NORMAL_REPLICATION、MySQL.MGR、openGauss.NORMAL_REPLICATION、SphereEx:GaussDB_for_MySQL.NORMAL_REPLICATION、SphereEx:PostgreSQL.NORMAL_REPLICATION 具体配置请参考数据库发现内置算法;- 重复的
ruleName
将无法被创建; - 正在被使用的
discoveryType
和discoveryHeartbeat
无法被删除; - 带有
-
的命名在改动时需要使用" "
; - 移除
discoveryRule
时不会移除被该discoveryRule
使用的discoveryType
和discoveryHeartbeat
。
示例
创建 discoveryRule
时同时创建 discoveryType
和 discoveryHeartbeat
CREATE DB_DISCOVERY RULE db_discovery_group_0 (
STORAGE_UNITS(ds_0, ds_1, ds_2),
TYPE(NAME='MySQL.MGR',PROPERTIES('group-name'='92504d5b-6dec')),
HEARTBEAT(PROPERTIES('keep-alive-cron'='0/5 * * * * ?'))
);
2. 修改数据库发现规则 #
ALTER DB_DISCOVERY RULE ruleDefinition [, ruleDefinition] ...
ruleDefinition:
ruleName (storageUnits, typeDefinition, heartbeatDefinition)
storageUnits:
STORAGE_UNITS(storageUnitName [, storageUnitName] ...)
typeDefinition:
TYPE(NAME=typeName [, PROPERTIES([properties] )] )
heartbeatDefinition
HEARTBEAT (PROPERTIES (properties))
properties:
property [, property] ...
property:
key=value
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
discoveryTypeName | IDENTIFIER | 数据库发现类型名 |
ruleName | IDENTIFIER | 规则名称 |
discoveryHeartbeatName | IDENTIFIER | 监听心跳名称 |
typeName | STRING | 数据库发现类型,如:MySQL.MGR |
storageUnitName | IDENTIFIER | 资源名称 |
discoveryType
指定数据库发现服务类型,ShardingSphere
内置支持MySQL.MGR
;- 重复的
ruleName
将无法被创建; - 带有
-
的命名在改动时需要使用" "
;
示例
修改 discoveryRule 可以同时修改 discoveryType 和 discoveryHeartbeat
ALTER DB_DISCOVERY RULE db_discovery_group_0 (
STORAGE_UNITS(ds_0, ds_1, ds_2),
TYPE(NAME='MySQL.MGR',PROPERTIES('group-name'='246e9612-aaf1')),
HEARTBEAT(PROPERTIES('keep-alive-cron'='0/5 * * * * ?'))
);
3. 删除数据库发现规则 #
DROP DB_DISCOVERY RULE ruleName [, ruleName] ...
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
ruleName | IDENTIFIER | 规则名称 |
- 重复的
ruleName
将无法被创建; - 移除
discoveryRule
时不会移除被该discoveryRule
使用的discoveryType
和discoveryHeartbeat
。
示例
DROP DB_DISCOVERY RULE db_discovery_group_0;
4. 删除数据库发现类型 #
DROP DB_DISCOVERY TYPE discoveryTypeName [, discoveryTypeName] ...
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
discoveryTypeName | IDENTIFIER | 数据库发现类型名 |
typeName | STRING | 数据库发现类型,如:MySQL.MGR |
- 移除
discoveryRule
时不会移除被该discoveryRule
使用的discoveryType
和discoveryHeartbeat
。
示例
DROP DB_DISCOVERY TYPE db_discovery_group_0_mgr;
5. 删除数据库发现监听心跳 #
DROP DB_DISCOVERY HEARTBEAT discoveryHeartbeatName [, discoveryHeartbeatName] ...
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
discoveryHeartbeatName | IDENTIFIER | 监听心跳名称 |
示例
DROP DB_DISCOVERY HEARTBEAT db_discovery_group_0_heartbeat;
6. 查看数据库发现规则 #
SHOW DB_DISCOVERY RULES [FROM databaseName]
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
databaseName | IDENTIFIER | 逻辑库名称 |
示例
查看当前逻辑库下的数据库发现规则
mysql> SHOW DB_DISCOVERY RULES;
+----------------------+-------------------+--------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
| group_name | data_source_names | primary_data_source_name | discovery_type | discovery_heartbeat |
+----------------------+-------------------+--------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
| db_discovery_group_0 | ds_0,ds_1,ds_2 | ds_0 | {name=db_discovery_group_0_mgr, type=MySQL.MGR, props={group-name=92504d5b-6dec}} | {name=db_discovery_group_0_heartbeat, props={keep-alive-cron=0/5 * * * * ?}} |
+----------------------+-------------------+--------------------------+-----------------------------------------------------------------------------------+-----------------------------------------------------------------------------+
1 row in set (0.20 sec)
输出说明
列 | 说明 |
---|---|
group_name | 规则名称 |
data_source_names | 数据源名称列表 |
primary_data_source_name | 主数据源名称 |
discovery_type | 数据库发现服务类型 |
discovery_heartbeat | 数据库发现服务心跳 |
7. 查看数据库发现类型 #
SHOW DB_DISCOVERY TYPES [FROM databaseName]
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
databaseName | IDENTIFIER | 逻辑库名称 |
示例
查看当前逻辑库下的数据库发现类型
mysql> SHOW DB_DISCOVERY TYPES;
+--------------------------+------------+----------------------------+
| name | type | props |
+--------------------------+------------+----------------------------+
| db_discovery_group_0_mgr | MySQL.MGR | {group-name=92504d5b-6dec} |
+--------------------------+------------+----------------------------+
1 row in set (0.01 sec)
输出说明
列 | 说明 |
---|---|
name | 类型名称 |
type | 类型种类 |
props | 类型参数 |
8. 查看数据库发现监听心跳算法 #
SHOW DB_DISCOVERY HEARTBEATS [FROM databaseName]
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
databaseName | IDENTIFIER | 逻辑库名称 |
示例
查看当前逻辑库下的数据库心跳
mysql> SHOW DB_DISCOVERY HEARTBEATS;
+--------------------------------+---------------------------------+
| name | props |
+--------------------------------+---------------------------------+
| db_discovery_group_0_heartbeat | {keep-alive-cron=0/5 * * * * ?} |
+---------------------------------+---------------------------------+
1 row in set (0.01 sec)
输出说明
列 | 说明 |
---|---|
name | 心跳名称 |
props | 心跳参数 |