Logo
数据库发现

数据库发现 #

语法描述类型
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 

参数说明

名称数据类型说明
discoveryTypeNameIDENTIFIER数据库发现类型名
ruleNameIDENTIFIER规则名称
discoveryHeartbeatNameIDENTIFIER监听心跳名称
typeNameSTRING数据库发现类型,如:MySQL.MGR
storageUnitNameIDENTIFIER资源名称
  • discoveryType 指定数据库发现服务类型,DBPlusEngine内置支持 MySQL.NORMAL_REPLICATION、MySQL.MGR、openGauss.NORMAL_REPLICATION、SphereEx:GaussDB_for_MySQL.NORMAL_REPLICATION、SphereEx:PostgreSQL.NORMAL_REPLICATION 具体配置请参考数据库发现内置算法;
  • 重复的 ruleName 将无法被创建;
  • 正在被使用的 discoveryTypediscoveryHeartbeat 无法被删除;
  • 带有 - 的命名在改动时需要使用 " "
  • 移除 discoveryRule 时不会移除被该 discoveryRule 使用的 discoveryTypediscoveryHeartbeat

示例

创建 discoveryRule 时同时创建 discoveryTypediscoveryHeartbeat

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 

参数说明

名称数据类型说明
discoveryTypeNameIDENTIFIER数据库发现类型名
ruleNameIDENTIFIER规则名称
discoveryHeartbeatNameIDENTIFIER监听心跳名称
typeNameSTRING数据库发现类型,如:MySQL.MGR
storageUnitNameIDENTIFIER资源名称
  • 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] ...

参数说明

名称数据类型说明
ruleNameIDENTIFIER规则名称
  • 重复的 ruleName 将无法被创建;
  • 移除 discoveryRule 时不会移除被该 discoveryRule 使用的 discoveryTypediscoveryHeartbeat

示例

DROP DB_DISCOVERY RULE db_discovery_group_0;

4. 删除数据库发现类型 #

DROP DB_DISCOVERY TYPE discoveryTypeName [, discoveryTypeName] ...

参数说明

名称数据类型说明
discoveryTypeNameIDENTIFIER数据库发现类型名
typeNameSTRING数据库发现类型,如:MySQL.MGR
  • 移除 discoveryRule 时不会移除被该 discoveryRule 使用的 discoveryTypediscoveryHeartbeat

示例

DROP DB_DISCOVERY TYPE db_discovery_group_0_mgr;

5. 删除数据库发现监听心跳 #

DROP DB_DISCOVERY HEARTBEAT discoveryHeartbeatName [, discoveryHeartbeatName] ...

参数说明

名称数据类型说明
discoveryHeartbeatNameIDENTIFIER监听心跳名称

示例

DROP DB_DISCOVERY HEARTBEAT db_discovery_group_0_heartbeat;

6. 查看数据库发现规则 #

SHOW DB_DISCOVERY RULES [FROM databaseName]

参数说明

名称数据类型说明
databaseNameIDENTIFIER逻辑库名称

示例

查看当前逻辑库下的数据库发现规则

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]

参数说明

名称数据类型说明
databaseNameIDENTIFIER逻辑库名称

示例

查看当前逻辑库下的数据库发现类型

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]

参数说明

名称数据类型说明
databaseNameIDENTIFIER逻辑库名称

示例

查看当前逻辑库下的数据库心跳

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心跳参数