This is an automated email from the ASF dual-hosted git repository.
soulasuna pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 682e26a8034 Refactor ha document (#19049)
682e26a8034 is described below
commit 682e26a80340abcfe218f986d2f1c1ad46860545
Author: zhaojinchao <[email protected]>
AuthorDate: Tue Jul 12 12:11:00 2022 +0800
Refactor ha document (#19049)
---
.../shardingsphere-jdbc/java-api/rules/ha.cn.md | 73 ++++++++++-
.../shardingsphere-jdbc/java-api/rules/ha.en.md | 122 ++++++++++++++-----
.../spring-boot-starter/rules/ha.cn.md | 61 +++++++++-
.../spring-boot-starter/rules/ha.en.md | 66 +++++++++-
.../spring-namespace/rules/ha.cn.md | 95 ++++++++++++++-
.../spring-namespace/rules/ha.en.md | 135 +++++++++++++++++----
.../shardingsphere-jdbc/yaml-config/rules/ha.cn.md | 79 +++++++++++-
.../shardingsphere-jdbc/yaml-config/rules/ha.en.md | 78 ++++++++++++
8 files changed, 641 insertions(+), 68 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.cn.md
index de60cc2b1a6..94952c3cfac 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.cn.md
@@ -3,10 +3,15 @@ title = "高可用"
weight = 4
+++
-## 配置入口
+## 背景信息
-类名称:org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration
+通过 `Java API` 方式构建高可用规则配置。
+
+## 参数解释
+### 配置入口
+
+类名称:org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration
可配置属性:
| *名称* | *数据类型*
| *说明* |
@@ -15,7 +20,7 @@ weight = 4
| discoveryHeartbeats (+) | Map\<String,
DatabaseDiscoveryHeartBeatConfiguration\> | 监听心跳配置 |
| discoveryTypes (+) | Map\<String,
ShardingSphereAlgorithmConfiguration\> | 数据库发现类型配置 |
-## 数据源配置
+### 数据源配置
类名称:org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration
@@ -28,7 +33,7 @@ weight = 4
| discoveryHeartbeatName (+) | String | 监听心跳名称
| - |
| discoveryTypeName (+) | String | 数据库发现类型名称
| - |
-## 监听心跳配置
+### 监听心跳配置
类名称:org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryHeartBeatConfiguration
@@ -38,7 +43,7 @@ weight = 4
| --------- | ---------- |
-------------------------------------------------------------------- | ------- |
| props (+) | Properties | 监听心跳属性配置,keep-alive-cron 属性配置 cron 表达式,如:'0/5 * * *
* ?' | - |
-## 数据库发现类型配置
+### 数据库发现类型配置
类名称:org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration
@@ -46,3 +51,61 @@ weight = 4
| --------- | ---------- | ------------------------------------------- |
------- |
| type (+) | String | 数据库发现类型,如:MySQL.MGR | - |
| props (?) | Properties | 数据库发现类型配置,如 MGR 的 group-name 属性配置 | - |
+
+## 操作步骤
+
+1. 引入 Maven 依赖
+
+```xml
+<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core</artifactId>
+ <version>${latest.release.version}</version>
+</dependency>
+```
+> 注意:请将 `${latest.release.version}` 更改为实际的版本号。
+>
+## 配置示例
+
+```java
+
+// 构建数据源 ds_0,ds_1,ds_2
+Map<String, DataSource> dataSourceMap = new HashMap<>(3, 1);
+dataSourceMap.put("ds_0", createDataSource1("primary_demo_ds"));
+dataSourceMap.put("ds_1", createDataSource2("primary_demo_ds"));
+dataSourceMap.put("ds_2", createDataSource3("primary_demo_ds"));
+
+DataSource dataSource =
ShardingSphereDataSourceFactory.createDataSource("database_discovery_db",
dataSourceMap, Arrays.asList(createDatabaseDiscoveryConfiguration(),
createReadwriteSplittingConfiguration()), null);
+
+private static DatabaseDiscoveryRuleConfiguration
createDatabaseDiscoveryConfiguration() {
+ DatabaseDiscoveryDataSourceRuleConfiguration dataSourceRuleConfiguration =
new DatabaseDiscoveryDataSourceRuleConfiguration("readwrite_ds",
Arrays.asList("ds_0, ds_1, ds_2"), "mgr-heartbeat", "mgr");
+ return new
DatabaseDiscoveryRuleConfiguration(Collections.singleton(dataSourceRuleConfiguration),
createDiscoveryHeartbeats(), createDiscoveryTypes());
+}
+
+private static ReadwriteSplittingRuleConfiguration
createReadwriteSplittingConfiguration() {
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration1 =
new ReadwriteSplittingDataSourceRuleConfiguration("replica_ds", new
DynamicReadwriteSplittingStrategyConfiguration("readwrite_ds", true), "");
+ return new
ReadwriteSplittingRuleConfiguration(Arrays.asList(dataSourceConfiguration1),
Collections.emptyMap());
+}
+
+private static Map<String, ShardingSphereAlgorithmConfiguration>
createDiscoveryTypes() {
+ Map<String, ShardingSphereAlgorithmConfiguration> discoveryTypes = new
HashMap<>(1, 1);
+ Properties props = new Properties();
+ props.put("group-name", "558edd3c-02ec-11ea-9bb3-080027e39bd2");
+ discoveryTypes.put("mgr", new ShardingSphereAlgorithmConfiguration("MGR",
props));
+ return discoveryTypes;
+}
+
+private static Map<String, DatabaseDiscoveryHeartBeatConfiguration>
createDiscoveryHeartbeats() {
+ Map<String, DatabaseDiscoveryHeartBeatConfiguration>
discoveryHeartBeatConfiguration = new HashMap<>(1, 1);
+ Properties props = new Properties();
+ props.put("keep-alive-cron", "0/5 * * * * ?");
+ discoveryHeartBeatConfiguration.put("mgr-heartbeat", new
DatabaseDiscoveryHeartBeatConfiguration(props));
+ return discoveryHeartBeatConfiguration;
+}
+```
+## 相关参考
+
+- [高可用核心特性](/cn/features/ha/)
+- [YAML配置:高可用配置](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/ha/)
+- [Spring Boot
Starter:高可用配置](/cn/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha/)
+- [Spring
命名空间:高可用配置](/cn/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha/)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.en.md
index 94f39965185..e47b84f12ce 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/ha.en.md
@@ -3,48 +3,112 @@ title = "HA"
weight = 4
+++
-## Root Configuration
+## Background
-Class
name:org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration
+Build high availability rule configuration through `Java API`.
-Attributes:
+## Parameters
-| *Name* | *DataType*
| *Description* |
-| ------------------------- |
------------------------------------------------------------- |
------------------------------------- |
-| dataSources (+) |
Collection\<DatabaseDiscoveryDataSourceRuleConfiguration\> | Data source
configuration |
-| discoveryHeartbeats (+) | Map\<String,
DatabaseDiscoveryHeartBeatConfiguration\> | Detect heartbeat
configuration |
-| discoveryTypes (+) | Map\<String,
ShardingSphereAlgorithmConfiguration\> | Database discovery type
configuration |
+### Root Configuration
-## Data Source Configuration
+Class name:
org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration
+Attributes:
-Class
name:org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration
+| *Name* | *Data Type*
| *Description* |
+| ------------------------- |
----------------------------------------------------------- | --------------- |
+| dataSources (+) |
Collection\<DatabaseDiscoveryDataSourceRuleConfiguration\> | Data source
configuration |
+| discoveryHeartbeats (+) | Map\<String,
DatabaseDiscoveryHeartBeatConfiguration\> | Detect heartbeat configuration
|
+| discoveryTypes (+) | Map\<String,
ShardingSphereAlgorithmConfiguration\> | Database discovery type
configuration |
-Attributes:
+### Data Source Configuration
-| *Name* | *DataType* | *Description*
| *Default
Value* |
-| -------------------------- | -------------------- |
----------------------------------------------------------------------------------------
| -------------- |
-| groupName (+) | String | Database discovery group
name | -
|
-| dataSourceNames (+) | Collection\<String\> | Data source names,
multiple data source names separated with comma. Such as: ds_0, ds_1 | -
|
-| discoveryHeartbeatName (+) | String | Detect heartbeat name
| -
|
-| discoveryTypeName (+) | String | Database discovery type
name | -
|
+Class name:
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration
-## Detect Heartbeat Configuration
+Attributes:
-Class
name:org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryHeartBeatConfiguration
+| *Name* | *Data Type* | *Description*
| *Default Value* |
+| -------------------------- | -------------------- |
----------------------------------------- | ------- |
+| groupName (+) | String | Database discovery group
name | - |
+| dataSourceNames (+) | Collection\<String\> | Data source names,
multiple data source names separated with comma. Such as: ds_0, ds_1 | -
|
+| discoveryHeartbeatName (+) | String | Detect heartbeat name
| - |
+| discoveryTypeName (+) | String | Database discovery type
name | - |
-Attributes:
+### Detect Heartbeat Configuration
+
+Class name:
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryHeartBeatConfiguration
+
+Attributes:
-| *Name* | *DataType* | *Description*
| *Default Value* |
-| -------------------------- | ---------------------- |
------------------------------------------------------------------------------------------------------------------
| --------------- |
-| props (+) | Properties | Detect heartbeat
attribute configuration, keep-alive-cron configuration, cron expression. Such
as: '0/5 * * * * ?' | - |
+| *Name* | *Data Type* | *Description*
| *Default Value* |
+| --------- | ---------- |
-------------------------------------------------------------------- | ------- |
+| props (+) | Properties | Detect heartbeat attribute configuration,
keep-alive-cron configuration, cron expression. Such as: ‘0/5 * * * * ?’ | -
|
-## Database Discovery Type Configuration
+### Database Discovery Type Configuration
-Class
name:org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration
+Class name:
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration
Attributes:
-| *Name* | *DataType* | *Description*
| *Default Value* |
-| -------------------------- | ---------------------- |
-------------------------------------------------------------------------------
| --------------- |
-| type (+) | String | Database discovery
type, such as: MySQL.MGR | - |
-| props (?) | Properties | Required parameters
for high-availability types, such as MGR's group-name | - |
+| *Name* | *Data Type* | *Description*
| *Default Value* |
+| --------- | ---------- | ------------------------------------------- |
------- |
+| type (+) | String | Database discovery type, such as: MySQL.MGR
| - |
+| props (?) | Properties | Required parameters for high-availability types,
such as MGR’s group-name | - |
+
+## Procedure
+
+1. Import Maven dependency.
+
+```xml
+<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core</artifactId>
+ <version>${latest.release.version}</version>
+</dependency>
+```
+
+> Notice: Please change `${latest.release.version}` to the actual version.
+
+## Sample
+
+```java
+
+// Build data source ds_0, ds_1, ds_2
+Map<String, DataSource> dataSourceMap = new HashMap<>(3, 1);
+dataSourceMap.put("ds_0", createDataSource1("primary_demo_ds"));
+dataSourceMap.put("ds_1", createDataSource2("primary_demo_ds"));
+dataSourceMap.put("ds_2", createDataSource3("primary_demo_ds"));
+
+DataSource dataSource =
ShardingSphereDataSourceFactory.createDataSource("database_discovery_db",
dataSourceMap, Arrays.asList(createDatabaseDiscoveryConfiguration(),
createReadwriteSplittingConfiguration()), null);
+
+private static DatabaseDiscoveryRuleConfiguration
createDatabaseDiscoveryConfiguration() {
+ DatabaseDiscoveryDataSourceRuleConfiguration dataSourceRuleConfiguration =
new DatabaseDiscoveryDataSourceRuleConfiguration("readwrite_ds",
Arrays.asList("ds_0, ds_1, ds_2"), "mgr-heartbeat", "mgr");
+ return new
DatabaseDiscoveryRuleConfiguration(Collections.singleton(dataSourceRuleConfiguration),
createDiscoveryHeartbeats(), createDiscoveryTypes());
+}
+
+private static ReadwriteSplittingRuleConfiguration
createReadwriteSplittingConfiguration() {
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfiguration1 =
new ReadwriteSplittingDataSourceRuleConfiguration("replica_ds", new
DynamicReadwriteSplittingStrategyConfiguration("readwrite_ds", true), "");
+ return new
ReadwriteSplittingRuleConfiguration(Arrays.asList(dataSourceConfiguration1),
Collections.emptyMap());
+}
+
+private static Map<String, ShardingSphereAlgorithmConfiguration>
createDiscoveryTypes() {
+ Map<String, ShardingSphereAlgorithmConfiguration> discoveryTypes = new
HashMap<>(1, 1);
+ Properties props = new Properties();
+ props.put("group-name", "558edd3c-02ec-11ea-9bb3-080027e39bd2");
+ discoveryTypes.put("mgr", new ShardingSphereAlgorithmConfiguration("MGR",
props));
+ return discoveryTypes;
+}
+
+private static Map<String, DatabaseDiscoveryHeartBeatConfiguration>
createDiscoveryHeartbeats() {
+ Map<String, DatabaseDiscoveryHeartBeatConfiguration>
discoveryHeartBeatConfiguration = new HashMap<>(1, 1);
+ Properties props = new Properties();
+ props.put("keep-alive-cron", "0/5 * * * * ?");
+ discoveryHeartBeatConfiguration.put("mgr-heartbeat", new
DatabaseDiscoveryHeartBeatConfiguration(props));
+ return discoveryHeartBeatConfiguration;
+}
+```
+## Related References
+
+- [Feature Description of HA](/en/features/ha/)
+- [YAML Configuration:
HA](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/ha/)
+- [Spring Boot Starter:
HA](/en/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha/)
+- [Spring Namespace:
HA](/en/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha/)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.cn.md
index 144af5e3554..9052e33d9d3 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.cn.md
@@ -3,17 +3,72 @@ title = "高可用"
weight = 3
+++
-## 配置项说明
+## 背景信息
+
+`Spring Boot Starter` 配置方式适用于使用 SpringBoot 的业务场景,能够最大程度地利用 SpringBoot 配置初始化及
Bean 管理的能力,自动完成 `ShardingSphereDataSource` 对象的创建。
+
+## 参数解释
```properties
spring.shardingsphere.datasource.names= # 省略数据源配置,请参考使用手册
+spring.shardingsphere.rules.readwrite-splitting.data-sources.<readwrite-splitting-data-source-name>.dynamic-strategy.auto-aware-data-source-name=
# 数据库发现的逻辑数据源名称
+
spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.data-source-names=
# 数据源名称,多个数据源用逗号分隔 如:ds_0, ds_1
spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.discovery-heartbeat-name=
# 检测心跳名称
spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.discovery-type-name=
# 数据库发现类型名称
-
spring.shardingsphere.rules.database-discovery.discovery-heartbeats.<discovery-heartbeat-name>.props.keep-alive-cron=
# cron 表达式,如:'0/5 * * * * ?'
-
spring.shardingsphere.rules.database-discovery.discovery-types.<discovery-type-name>.type=
# 数据库发现类型,如:MySQL.MGR
spring.shardingsphere.rules.database-discovery.discovery-types.<discovery-type-name>.props.group-name=
# 数据库发现类型必要参数,如 MGR 的 group-name
```
+
+## 操作步骤
+
+1. 引入 MAVEN 依赖
+
+```xml
+<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
+ <version>${latest.release.version}</version>
+</dependency>
+```
+
+> 注意:请将 `${latest.release.version}` 更改为实际的版本号。
+
+## 配置示例
+```properties
+spring.shardingsphere.datasource.names=ds-0,ds-1,ds-2
+spring.shardingsphere.datasource.ds-0.jdbc-url =
jdbc:mysql://127.0.0.1:13306/primary_demo_ds?serverTimezone=UTC&useSSL=false
+spring.shardingsphere.datasource.ds-0.username=root
+spring.shardingsphere.datasource.ds-0.password=
+spring.shardingsphere.datasource.ds-0.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.ds-0.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.shardingsphere.datasource.ds-1.jdbc-url =
jdbc:mysql://127.0.0.1:13307/primary_demo_ds?serverTimezone=UTC&useSSL=false
+spring.shardingsphere.datasource.ds-1.username=root
+spring.shardingsphere.datasource.ds-1.password=
+spring.shardingsphere.datasource.ds-1.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.ds-1.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.shardingsphere.datasource.ds-2.jdbc-url =
jdbc:mysql://127.0.0.1:13308/primary_demo_ds?serverTimezone=UTC&useSSL=false
+spring.shardingsphere.datasource.ds-2.username=root
+spring.shardingsphere.datasource.ds-2.password=
+spring.shardingsphere.datasource.ds-2.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.ds-2.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.shardingsphere.rules.readwrite-splitting.data-sources.replica_ds.dynamic-strategy.auto-aware-data-source-name=readwrite_ds
+
+spring.shardingsphere.rules.database-discovery.data-sources.readwrite_ds.data-source-names=ds-0,
ds-1, ds-2
+spring.shardingsphere.rules.database-discovery.data-sources.readwrite_ds.discovery-heartbeat-name=mgr-heartbeat
+spring.shardingsphere.rules.database-discovery.data-sources.readwrite_ds.discovery-type-name=mgr
+spring.shardingsphere.rules.database-discovery.discovery-heartbeats.mgr-heartbeat.props.keep-alive-cron=0/5
* * * * ?
+spring.shardingsphere.rules.database-discovery.discovery-types.mgr.type=MGR
+spring.shardingsphere.rules.database-discovery.discovery-types.mgr.props.groupName=b13df29e-90b6-11e8-8d1b-525400fc3996
+```
+## 相关参考
+
+- [高可用核心特性](cn/features/ha/)
+- [JAVA API:高可用配置](/cn/user-manual/shardingsphere-jdbc/java-api/rules/ha/)
+- [YAML配置:高可用配置](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/ha/)
+- [Spring
命名空间:高可用配置](/cn/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha/)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.en.md
index 24e4e35e1df..5a088ebfa8c 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha.en.md
@@ -3,18 +3,72 @@ title = "HA"
weight = 3
+++
-## Configuration Item Explanation
+## Background
+
+The `Spring Boot Starter` configuration method is applicable to business
scenarios using SpringBoot. It can make full use of the SpringBoot
configuration initialization and bean management capabilities, to automatically
complete the creation of `ShardingSphereDataSource` objects.
+
+## Parameters
```properties
-spring.shardingsphere.datasource.names= # Omit the data source configuration,
please refer to the usage
+spring.shardingsphere.datasource.names= # Omit data source configuration,
please refer to the user manual
-spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.data-source-names=
# Data source names, multiple data source names separated with comma. Such as:
ds_0, ds_1
+spring.shardingsphere.rules.readwrite-splitting.data-sources.<readwrite-splitting-data-source-name>.dynamic-strategy.auto-aware-data-source-name=
# Logical data source name discovered by the database
+
+spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.data-source-names=
# Data source name. Multiple data sources are separated by commas, for
example: ds_0, ds_1
spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.discovery-heartbeat-name=
# Detect heartbeat name
spring.shardingsphere.rules.database-discovery.data-sources.<database-discovery-data-source-name>.discovery-type-name=
# Database discovery type name
+spring.shardingsphere.rules.database-discovery.discovery-heartbeats.<discovery-heartbeat-name>.props.keep-alive-cron=
# Cron expression, such as: '0/5 * * * * ?'
+spring.shardingsphere.rules.database-discovery.discovery-types.<discovery-type-name>.type=
# Database discovery type, such as: MySQL.MGR
+spring.shardingsphere.rules.database-discovery.discovery-types.<discovery-type-name>.props.group-name=
# Necessary parameters of database discovery type, such as group-name of MGR
+```
-spring.shardingsphere.rules.database-discovery.discovery-heartbeats.<discovery-heartbeat-name>.props.keep-alive-cron=
# This is cron expression, such as:'0/5 * * * * ?'
+## Procedure
-spring.shardingsphere.rules.database-discovery.discovery-types.<discovery-type-name>.type=
# Database discovery type, such as: MySQL.MGR
-spring.shardingsphere.rules.database-discovery.discovery-types.<discovery-type-name>.props.group-name=
# Required parameters for database discovery types, such as MGR's group-name
+1. Import MAVEN dependency.
+```xml
+<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
+ <version>${latest.release.version}</version>
+</dependency>
```
+
+> Note: please change `${latest.release.version}' to the actual version number.
+
+## Sample
+```properties
+spring.shardingsphere.datasource.names=ds-0,ds-1,ds-2
+spring.shardingsphere.datasource.ds-0.jdbc-url =
jdbc:mysql://127.0.0.1:13306/primary_demo_ds?serverTimezone=UTC&useSSL=false
+spring.shardingsphere.datasource.ds-0.username=root
+spring.shardingsphere.datasource.ds-0.password=
+spring.shardingsphere.datasource.ds-0.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.ds-0.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.shardingsphere.datasource.ds-1.jdbc-url =
jdbc:mysql://127.0.0.1:13307/primary_demo_ds?serverTimezone=UTC&useSSL=false
+spring.shardingsphere.datasource.ds-1.username=root
+spring.shardingsphere.datasource.ds-1.password=
+spring.shardingsphere.datasource.ds-1.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.ds-1.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.shardingsphere.datasource.ds-2.jdbc-url =
jdbc:mysql://127.0.0.1:13308/primary_demo_ds?serverTimezone=UTC&useSSL=false
+spring.shardingsphere.datasource.ds-2.username=root
+spring.shardingsphere.datasource.ds-2.password=
+spring.shardingsphere.datasource.ds-2.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.ds-2.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.shardingsphere.rules.readwrite-splitting.data-sources.replica_ds.dynamic-strategy.auto-aware-data-source-name=readwrite_ds
+
+spring.shardingsphere.rules.database-discovery.data-sources.readwrite_ds.data-source-names=ds-0,
ds-1, ds-2
+spring.shardingsphere.rules.database-discovery.data-sources.readwrite_ds.discovery-heartbeat-name=mgr-heartbeat
+spring.shardingsphere.rules.database-discovery.data-sources.readwrite_ds.discovery-type-name=mgr
+spring.shardingsphere.rules.database-discovery.discovery-heartbeats.mgr-heartbeat.props.keep-alive-cron=0/5
* * * * ?
+spring.shardingsphere.rules.database-discovery.discovery-types.mgr.type=MGR
+spring.shardingsphere.rules.database-discovery.discovery-types.mgr.props.groupName=b13df29e-90b6-11e8-8d1b-525400fc3996
+```
+## Related References
+
+- [Feature Description of HA](en/features/ha/)
+- [JAVA API: HA](/en/user-manual/shardingsphere-jdbc/java-api/rules/ha/)
+- [YAML Configuration:
HA](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/ha/)
+- [Spring Namespace:
HA](/en/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha/)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.cn.md
index fed3394c480..210bc572d03 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.cn.md
@@ -3,9 +3,13 @@ title = "高可用"
weight = 3
+++
-## 配置项说明
+## 背景信息
-命名空间:[http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.2.xsd](http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.2.xsd)
+`Spring 命名空间` 的配置方式,适用于传统的 Spring 项目,通过命名空间 `xml` 配置文件的方式配置高可用规则,由 Spring 完成
`ShardingSphereDataSource` 对象的创建和管理。
+
+## 参数解释
+
+命名空间:[http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.1.xsd](http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.1.xsd)
\<database-discovery:rule />
@@ -38,3 +42,90 @@ weight = 3
| id | 属性 | 数据库发现类型名称 |
| type | 属性 | 数据库发现类型,如:MySQL.MGR |
| props (?) | 标签 | 数据库发现类型配置,如 MGR 的 group-name 属性配置 |
+
+## 操作步骤
+
+### 1. 引入 MAVEN 依赖
+
+```xml
+<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core-spring-namespace</artifactId>
+ <version>${latest.release.version}</version>
+</dependency>
+```
+
+## 配置示例
+
+```xml
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xmlns:cluster="http://shardingsphere.apache.org/schema/shardingsphere/mode-repository/cluster"
+
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource"
+
xmlns:database-discovery="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery"
+
xmlns:readwrite-splitting="http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+
http://www.springframework.org/schema/beans/spring-beans.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/database-discovery
+
http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting
+
http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting/readwrite-splitting.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/mode-repository/cluster
+
http://shardingsphere.apache.org/schema/shardingsphere/mode-repository/cluster/repository.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/datasource
+
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
+ ">
+ <bean id="ds_0" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
+ <property name="driverClassName" value="com.mysql.jdbc.Driver" />
+ <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:33306/primary_demo_ds?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8"
/>
+ <property name="username" value="root" />
+ <property name="password" value="" />
+ </bean>
+ <bean id="ds_1" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
+ <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+ <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:33307/primary_demo_ds?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8"
/>
+ <property name="username" value="root" />
+ <property name="password" value="" />
+ </bean>
+ <bean id="ds_2" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
+ <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+ <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:33308/primary_demo_ds?useSSL=false"/>
+ <property name="username" value="root"/>
+ <property name="password" value=""/>
+ </bean>
+ <cluster:repository id="clusterRepository" type="ZooKeeper"
namespace="governance" server-lists="localhost:2181">
+ <props>
+ <prop key="max-retries">3</prop>
+ <prop key="operation-timeout-milliseconds">3000</prop>
+ </props>
+ </cluster:repository>
+ <readwrite-splitting:rule id="readWriteSplittingRule">
+ <readwrite-splitting:data-source-rule id="replica_ds">
+ <readwrite-splitting:dynamic-strategy id="dynamicStrategy"
auto-aware-data-source-name="readwrite_ds" />
+ </readwrite-splitting:data-source-rule>
+ </readwrite-splitting:rule>
+ <database-discovery:rule id="mgrDatabaseDiscoveryRule">
+ <database-discovery:data-source-rule id="readwrite_ds"
data-source-names="ds_0,ds_1,ds_2" discovery-heartbeat-name="mgr-heartbeat"
discovery-type-name="mgr" />
+ <database-discovery:discovery-heartbeat id="mgr-heartbeat">
+ <props>
+ <prop key="keep-alive-cron" >0/5 * * * * ?</prop>
+ </props>
+ </database-discovery:discovery-heartbeat>
+ </database-discovery:rule>
+ <database-discovery:discovery-type id="mgr" type="MySQL.MGR">
+ <props>
+ <prop key="group-name">558edd3c-02ec-11ea-9bb3-080027e39bd2</prop>
+ </props>
+ </database-discovery:discovery-type>
+ <shardingsphere:data-source id="databaseDiscoveryDataSource"
schema-name="database-discovery-db" data-source-names="ds_0, ds_1, ds_2"
rule-refs="readWriteSplittingRule, mgrDatabaseDiscoveryRule">
+ <shardingsphere:mode repository-ref="clusterRepository" type="Cluster" />
+ </shardingsphere:data-source>
+</beans>
+```
+
+## 相关参考
+
+- [高可用核心特性](cn/features/ha/)
+- [JAVA API:高可用配置](/cn/user-manual/shardingsphere-jdbc/java-api/rules/ha/)
+- [YAML配置:高可用配置](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/ha/)
+- [Spring Boot
Starter:高可用配置](/cn/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha/)
\ No newline at end of file
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.en.md
index 1b4d5564a11..0807b06579c 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha.en.md
@@ -3,38 +3,129 @@ title = "HA"
weight = 3
+++
-## Configuration Item Explanation
+## Background
-Namespace:[http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.2.xsd](http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.2.xsd)
+The Spring namespace configuration method, applicable to traditional Spring
projects, configures highly availability rules by means of namespace XML
configuration files, and Spring completes the creation and management of
ShardingSphereDataSource objects.
+
+## Parameters Explained
+
+Namespace:
[http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.1.xsd](http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery-5.1.1.xsd)
\<database-discovery:rule />
-| *Name* | *Type* | *Description*
|
-| ----------------------- | -------- | -------------------------------------
|
-| id | Attribute | Spring Bean Id
|
-| data-source-rule (+) | tag | Data source rule configuration
|
-| discovery-heartbeat (+) | tag | Detect heartbeat rule configuration
|
+| *Name* | *Type* | *Description* |
+| ----------------------- | ------ | ------------------ |
+| id | Property | Spring Bean Id |
+| data-source-rule (+) | Tag | Configuration of data source rules |
+| discovery-heartbeat (+) | Tag | Configuration of heartbeat rules detection
|
\<database-discovery:data-source-rule />
-| *Name* | *Type* | *Description*
|
-| --------------------------- | ---------- |
---------------------------------------------------------------------------------------
|
-| id | Attribute | Data source rule Id
|
-| data-source-names | Attribute | Data source names, multiple data
source names separated with comma. Such as: ds_0, ds_1 |
-| discovery-heartbeat-name | Attribute | Detect heartbeat name
|
-| discovery-type-name | Attribute | Database discovery type name
|
+| *Name* | *Type* | *Description*
|
+| --------------------------- | ----- |
------------------------------------------ |
+| id | Property | Data source rules name |
+| data-source-names | Property | Data source name,multiple
datasources are divided by comma,such as:ds_0, ds_1 |
+| discovery-heartbeat-name | Property | Detect heartbeat name|
+| discovery-type-name | Property | type name of database discovery |
\<database-discovery:discovery-heartbeat />
-| *Name* | *Type* | *Description*
|
-| --------------------------- | ---------- |
-------------------------------------------------- |
-| id | Attribute | Detect heartbeat Id
|
-| props | tag | Detect heartbeat attribute
configuration, keep-alive-cron configuration, cron expression. Such as: '0/5 *
* * * ?' |
+| *Name* | *Type* | *Description*
|
+| --------------------------- | ----- |
------------------------------------------ |
+| id | Property | heartbeat listen name
|
+| props | 标签 | property configuration of heartbeat
listen,cron expression of keep-alive-cron property configuration,such as:'0/5 *
* * * ?' |
\<database-discovery:discovery-type />
-| *Name* | *Type* | *Description*
|
-| --------- | ---------- |
---------------------------------------------------------------- |
-| id | Attribute | Database discovery type Id
|
-| type | Attribute | Database discovery type, such as: MySQL.MGR
|
-| props (?) | tag | Required parameters for database discovery types,
such as MGR's group-name |
+| *Name* | *Type* | *Description* |
+| --------- | ----- | ----------------------------------------- |
+| id | Property | Type name of database discovery|
+| type | Property | Database discovery type,such as:MySQL.MGR
|
+| props (?) | Tag | Configuration of database discovery type,such as
group-name property configuration of MGR |
+
+## Operating Procedures
+
+### 1. Introduce Maven dependency
+
+```xml
+<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core-spring-namespace</artifactId>
+ <version>${latest.release.version}</version>
+</dependency>
+```
+
+## Configuration Example
+
+```xml
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xmlns:cluster="http://shardingsphere.apache.org/schema/shardingsphere/mode-repository/cluster"
+
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource"
+
xmlns:database-discovery="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery"
+
xmlns:readwrite-splitting="http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+
http://www.springframework.org/schema/beans/spring-beans.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/database-discovery
+
http://shardingsphere.apache.org/schema/shardingsphere/database-discovery/database-discovery.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting
+
http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting/readwrite-splitting.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/mode-repository/cluster
+
http://shardingsphere.apache.org/schema/shardingsphere/mode-repository/cluster/repository.xsd
+
http://shardingsphere.apache.org/schema/shardingsphere/datasource
+
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
+ ">
+ <bean id="ds_0" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
+ <property name="driverClassName" value="com.mysql.jdbc.Driver" />
+ <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:33306/primary_demo_ds?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8"
/>
+ <property name="username" value="root" />
+ <property name="password" value="" />
+ </bean>
+ <bean id="ds_1" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
+ <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+ <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:33307/primary_demo_ds?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8"
/>
+ <property name="username" value="root" />
+ <property name="password" value="" />
+ </bean>
+ <bean id="ds_2" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
+ <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+ <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:33308/primary_demo_ds?useSSL=false"/>
+ <property name="username" value="root"/>
+ <property name="password" value=""/>
+ </bean>
+ <cluster:repository id="clusterRepository" type="ZooKeeper"
namespace="governance" server-lists="localhost:2181">
+ <props>
+ <prop key="max-retries">3</prop>
+ <prop key="operation-timeout-milliseconds">3000</prop>
+ </props>
+ </cluster:repository>
+ <readwrite-splitting:rule id="readWriteSplittingRule">
+ <readwrite-splitting:data-source-rule id="replica_ds">
+ <readwrite-splitting:dynamic-strategy id="dynamicStrategy"
auto-aware-data-source-name="readwrite_ds" />
+ </readwrite-splitting:data-source-rule>
+ </readwrite-splitting:rule>
+ <database-discovery:rule id="mgrDatabaseDiscoveryRule">
+ <database-discovery:data-source-rule id="readwrite_ds"
data-source-names="ds_0,ds_1,ds_2" discovery-heartbeat-name="mgr-heartbeat"
discovery-type-name="mgr" />
+ <database-discovery:discovery-heartbeat id="mgr-heartbeat">
+ <props>
+ <prop key="keep-alive-cron" >0/5 * * * * ?</prop>
+ </props>
+ </database-discovery:discovery-heartbeat>
+ </database-discovery:rule>
+ <database-discovery:discovery-type id="mgr" type="MySQL.MGR">
+ <props>
+ <prop key="group-name">558edd3c-02ec-11ea-9bb3-080027e39bd2</prop>
+ </props>
+ </database-discovery:discovery-type>
+ <shardingsphere:data-source id="databaseDiscoveryDataSource"
schema-name="database-discovery-db" data-source-names="ds_0, ds_1, ds_2"
rule-refs="readWriteSplittingRule, mgrDatabaseDiscoveryRule">
+ <shardingsphere:mode repository-ref="clusterRepository" type="Cluster" />
+ </shardingsphere:data-source>
+</beans>
+```
+
+## Related References
+
+- [Feature Description of HA](en/features/ha/)
+- [JAVA API: HA](/en/user-manual/shardingsphere-jdbc/java-api/rules/ha/)
+- [YAML Configuration:
HA](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/ha/)
+- [Spring Boot Starter:
HA](/en/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha/)
\ No newline at end of file
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.cn.md
index 20a41e846d8..cc90e17a2e3 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.cn.md
@@ -3,10 +3,20 @@ title = "高可用"
weight = 4
+++
-## 配置项说明
+## 背景信息
+
+通过 `YAML` 格式,ShardingSphere 会根据 YAML 配置,自动完成 `ShardingSphereDataSource`
对象的创建,减少用户不必要的编码工作。
+
+## 参数解释
```yaml
rules:
+- !READWRITE_SPLITTING
+ dataSources:
+ replica_ds:
+ dynamicStrategy: Dynamic # 动态读写分离
+ autoAwareDataSourceName: # 高可用规则逻辑数据源名称
+
- !DB_DISCOVERY
dataSources:
<data-source-name> (+): # 逻辑数据源名称
@@ -29,3 +39,70 @@ rules:
props (?):
group-name: 92504d5b-6dec-11e8-91ea-246e9612aaf1 # 数据库发现类型必要参数,如 MGR 的
group-name
```
+
+## 配置示例
+
+```yaml
+databaseName: database_discovery_db
+
+dataSources:
+ ds_0:
+ url:
jdbc:mysql://127.0.0.1:33306/primary_demo_ds?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 3000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 1
+ ds_1:
+ url:
jdbc:mysql://127.0.0.1:33307/primary_demo_ds?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 3000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 1
+ ds_2:
+ url:
jdbc:mysql://127.0.0.1:33308/primary_demo_ds?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 3000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 1
+
+rules:
+ - !READWRITE_SPLITTING
+ dataSources:
+ replica_ds:
+ dynamicStrategy:
+ autoAwareDataSourceName: readwrite_ds
+
+ - !DB_DISCOVERY
+ dataSources:
+ readwrite_ds:
+ dataSourceNames:
+ - ds_0
+ - ds_1
+ - ds_2
+ discoveryHeartbeatName: mgr-heartbeat
+ discoveryTypeName: mgr
+ discoveryHeartbeats:
+ mgr-heartbeat:
+ props:
+ keep-alive-cron: '0/5 * * * * ?'
+ discoveryTypes:
+ mgr:
+ type: MySQL.MGR
+ props:
+ group-name: 558edd3c-02ec-11ea-9bb3-080027e39bd2
+```
+## 相关参考
+
+- [高可用核心特性](cn/features/ha/)
+- [JAVA API:高可用配置](/cn/user-manual/shardingsphere-jdbc/java-api/rules/ha/)
+- [Spring Boot
Starter:高可用配置](/cn/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha/)
+- [Spring
命名空间:高可用配置](/cn/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha/)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.en.md
index 70bec70fe07..53a66ab89c6 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/rules/ha.en.md
@@ -3,8 +3,20 @@ title = "HA"
weight = 4
+++
+## Background
+
+Through `YAML` format, ShardingSphere will automatically create the
`ShardingSphereDataSource` object according to the YAML configuration, reducing
unnecessary coding work for users.
+
+## Parameters
+
```yaml
rules:
+- !READWRITE_SPLITTING
+ dataSources:
+ replica_ds:
+ dynamicStrategy:
+ autoAwareDataSourceName: # High availability rule logical data source
name
+
- !DB_DISCOVERY
dataSources:
<data-source-name> (+): # Logic data source name
@@ -27,3 +39,69 @@ rules:
props (?):
group-name: 92504d5b-6dec-11e8-91ea-246e9612aaf1 # Required parameters
for database discovery types, such as MGR's group-name
```
+
+## Sample
+
+```yaml
+databaseName: database_discovery_db
+
+dataSources:
+ ds_0:
+ url:
jdbc:mysql://127.0.0.1:33306/primary_demo_ds?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 3000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 1
+ ds_1:
+ url:
jdbc:mysql://127.0.0.1:33307/primary_demo_ds?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 3000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 1
+ ds_2:
+ url:
jdbc:mysql://127.0.0.1:33308/primary_demo_ds?serverTimezone=UTC&useSSL=false
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 3000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 1
+
+rules:
+ - !READWRITE_SPLITTING
+ dataSources:
+ replica_ds:
+ dynamicStrategy:
+ autoAwareDataSourceName: readwrite_ds
+ - !DB_DISCOVERY
+ dataSources:
+ readwrite_ds:
+ dataSourceNames:
+ - ds_0
+ - ds_1
+ - ds_2
+ discoveryHeartbeatName: mgr-heartbeat
+ discoveryTypeName: mgr
+ discoveryHeartbeats:
+ mgr-heartbeat:
+ props:
+ keep-alive-cron: '0/5 * * * * ?'
+ discoveryTypes:
+ mgr:
+ type: MySQL.MGR
+ props:
+ group-name: 558edd3c-02ec-11ea-9bb3-080027e39bd2
+```
+## Related References
+
+- [Feature Description of HA](en/features/ha/)
+- [JAVA API: HA](/en/user-manual/shardingsphere-jdbc/java-api/rules/ha/)
+- [Spring Boot Starter:
HA](/en/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/ha/)
+- [Spring Namespace:
HA](/en/user-manual/shardingsphere-jdbc/spring-namespace/rules/ha/)