# 可用区故障期间数据库零宕机

## 概述

在此练习中，TiDB 集群部署在三个可用区中，每个可用区对应一个子网。

你将模拟可用区1的完全故障，这将使工作其中的一个 TiDB 服务器、一个 TiKV 服务器和一个 PD 服务器与集群失去联系。

基础设施故障无需服务器端故障切换，因为数据库客户端会自动连接到剩余的 TiDB 服务器实例。

![80%](https://lab-static.pingcap.com/quick-demo/demo_001_en.png)

### 实验时长

+ 本实验大约需 60 分钟完成。

### 任务

+ 查阅 TiDB 集群状态和拓扑。
+ 阻断整个位于某个可用区的网络通信。
+ 观察并验证即使整个可用区无法访问，TiDB 集群仍能维持功能。

> [!TIP]
> 点击 **开始** 启动实验环境。
> 环境准备就绪后，点击底部工具栏中的 **前进** 进入 **模块 1**。
> 然后，按照实验指南的步骤连接到实践环境并开始你的任务。

## 模块 1: 将 TiDB 集群部署在三个可用区之间

### 步骤 1：打开终端，SSH 登录到 TiUP 控制机

+ 通过点击以下链接打开三个 SSH 连接到你的实验虚拟机：
  + [终端 1](ssh://monitor1-ssh#1)
  + [终端 2](ssh://monitor1-ssh#2)
  + [终端 3](ssh://monitor1-ssh#3)

+ 现在你将拥有三个活动的终端会话。

+ 登录后显示的横幅如下所示。

    ```output
     ,     #_
    ~\_  ####_        Amazon Linux 2
    ~~  \_#####\
    ~~     \###|      
    ~~       \#/ ___
    ~~       V~' '->
    ~~~         /    A newer version of Amazon Linux is available!
     ~~._.   _/
        _/ _/       Amazon Linux 2023, GA and supported until 2028-03-15.
      _/m/'           https://aws.amazon.com/linux/amazon-linux-2023/
    ```

### 步骤 2：在多个可用区启动 TiDB 集群

+ 在[终端 1](ssh://monitor1-ssh#1)中，查看已配置的集群拓扑 YAML。

  ```bash
  cat nine-nodes.yaml
  ```
  ```output
  global:
      user: "ec2-user"
      ssh_port: 22
      deploy_dir: "/tidb-deploy"
      data_dir: "/tidb-data"
      arch: "amd64"
  server_configs:
      pd:
          replication.max-replicas: 3
  pd_servers:
    - host: 10.90.3.145
      client_port: 2379
      peer_port: 2380
      advertise_client_addr: "http://54.203.147.80:2379"
    - host: 10.90.1.184
      client_port: 2379
      peer_port: 2380
      advertise_client_addr: "http://34.221.154.223:2379"
    - host: 10.90.2.106
      client_port: 2379
      peer_port: 2380
      advertise_client_addr: "http://35.86.165.210:2379"
  tidb_servers:
    - host: 10.90.1.177
      port: 4000
      status_port: 10080
      deploy_dir: /tidb-deploy/tidb-4000
      log_dir: /tidb-deploy/tidb-4000/log
    - host: 10.90.2.16
      port: 4000
      status_port: 10080
      deploy_dir: /tidb-deploy/tidb-4000
      log_dir: /tidb-deploy/tidb-4000/log
  tikv_servers:
    - host: 10.90.3.115
      port: 20160
      status_port: 20180
    - host: 10.90.2.143
      port: 20160
      status_port: 20180
    - host: 10.90.1.247
      port: 20160
      status_port: 20180
  monitoring_servers:
    - host: 10.90.4.92
  grafana_servers:
    - host: 10.90.4.92
  alertmanager_servers:
    - host: 10.90.4.92
  ```

+ 修正系统配置以部署 TiDB 集群。

  ```bash
  tiup mirror set tidb-community-server-tidb_version-linux-amd64
  tiup cluster check nine-nodes.yaml \
    --user ec2-user \
    -i /home/ec2-user/.ssh/pe-class-key-oregon.pem \
    --apply
  ```
  ```output
  .
  .
  .
  + Try to apply changes to fix failed checks
   - Applying changes on 10.90.3.145 ... ⠧ Sysctl: host=10.90.3.145 vm.swappiness = 0
  + Try to apply changes to fix failed checks
   - Applying changes on 10.90.3.145 ... ⠇ Sysctl: host=10.90.3.145 vm.swappiness = 0
  + Try to apply changes to fix failed checks
  + Try to apply changes to fix failed checks
   - Applying changes on 10.90.3.145 ... Done
  + Try to apply changes to fix failed checks
   - Applying changes on 10.90.3.145 ... Done
  + Try to apply changes to fix failed checks
   - Applying changes on 10.90.3.145 ... Done
   - Applying changes on 10.90.2.106 ... Done
   - Applying changes on 10.90.2.143 ... Done
   - Applying changes on 10.90.1.177 ... Done
   - Applying changes on 10.90.1.184 ... Done
   - Applying changes on 10.90.3.115 ... Done
   - Applying changes on 10.90.1.247 ... Done
   - Applying changes on 10.90.2.16 ... Done
   - Applying changes on 10.90.4.92 ... Done
  ```

+ 部署 TiDB 集群。

  ```bash
  tiup cluster deploy tidb-demo tidb_version ./nine-nodes.yaml \
    --user ec2-user \
    -i /home/ec2-user/.ssh/pe-class-key-oregon.pem \
    --yes
  ```
  ```output
  .
  .
  .
  Cluster `tidb-demo` deployed successfully, you can start it with command: `tiup cluster start tidb-demo --init`
  ```

+ 启动已部署的 TiDB 集群。

  ```bash
  tiup cluster start tidb-demo
  ```
  ```output
  .
  .
  .
  Started cluster `tidb-demo` successfully
  ```

### 步骤 3：验证 TiDB 集群的状态

+ 关键集群组件分布在三个子网中：10.90.1.0/24、10.90.2.0/24 和 10.90.3.0/24，每个子网对应一个可用区。

+ 集群包括 3 个 PD 服务器、3 个 TiKV 服务器和 2 个 TiDB 服务器。

+ 特别关注托管有 PD 服务器、TiDB 服务器和 TiKV 服务器的子网 10.90.1.0/24。

+ 虽然您环境中的 IP 地址和示例输出可能有所不同，但子网配置保持一致。

  ```bash
  tiup cluster display tidb-demo
  ```
  ```output
  Cluster type:       tidb
  Cluster name:       tidb-demo
  Cluster version:    vtidb_version
  Deploy user:        ec2-user
  SSH type:           builtin
  Dashboard URL:      http://35.86.135.34:2379/dashboard
  Grafana URL:        http://10.90.4.7:3000
  ID                 Role          Host         Ports        OS/Arch       Status  Data Dir                      Deploy Dir
  --                 ----          ----         -----        -------       ------  --------                      ----------
  10.90.4.7:9093     alertmanager  10.90.4.7    9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
  10.90.4.7:3000     grafana       10.90.4.7    3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
  10.90.1.110:2379   pd            10.90.1.110  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.2.63:2379    pd            10.90.2.63   2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.3.162:2379   pd            10.90.3.162  2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.4.7:9090     prometheus    10.90.4.7    9090/12020   linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
  10.90.1.116:4000   tidb          10.90.1.116  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
  10.90.2.15:4000    tidb          10.90.2.15   4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
  10.90.1.35:20160   tikv          10.90.1.35   20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  10.90.2.138:20160  tikv          10.90.2.138  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  10.90.3.220:20160  tikv          10.90.3.220  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  Total nodes: 11
  ```

## 模块 2: 启动读写业务负载

### 步骤 1：创建一个用于测试的表

+ 在[终端 2](ssh://monitor1-ssh#2) 中，连接到一个 TiDB 服务器实例，创建一个测试表，并退出到终端。

  ```bash
  mysql -h ${HOST_DB1_PRIVATE_IP} -P 4000 -uroot
  ```
  ```sql
  DROP TABLE IF EXISTS test.dummy; 
  CREATE TABLE test.dummy (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(80), event JSON);
  EXIT;
  ```

### 步骤 2：应用 INSERT 负载

+ 在[终端 2](ssh://monitor1-ssh#2) 中，运行示例 Java 程序以启动 INSERT 负载。

+ 该程序连接到一个 TiDB 服务器实例，使用两个工作程序执行 INSERT 操作。如果所连接的 TiDB 服务器失去连接，程序将自动切换到另一个可用的 TiDB 服务器。输出将显示处理中 INSERT 请求的 TiDB 服务器的私有 IP 地址——应有两个。保持负载运行并继续下一步。

  ```bash
  cd scripts
  javac -cp .:misc/mysql-connector-java-5.1.36-bin.jar DemoJdbcEndlessInsertDummyCSP.java
  java -cp .:misc/mysql-connector-java-5.1.36-bin.jar DemoJdbcEndlessInsertDummyCSP
  ```
  ```output
  Worker 2 -> TiDB:Thu May 09 07:05:33 UTC 2024 at 10.90.1.116
  Worker 1 -> TiDB:Thu May 09 07:05:33 UTC 2024 at 10.90.2.15
  Worker 1 -> TiDB:Thu May 09 07:05:34 UTC 2024 at 10.90.1.116
  Worker 2 -> TiDB:Thu May 09 07:05:34 UTC 2024 at 10.90.2.15
  Worker 1 -> TiDB:Thu May 09 07:05:35 UTC 2024 at 10.90.2.15
  Worker 2 -> TiDB:Thu May 09 07:05:35 UTC 2024 at 10.90.1.116
  Worker 1 -> TiDB:Thu May 09 07:05:36 UTC 2024 at 10.90.1.116
  ...
  ```

### 步骤 3：应用示例查询负载

+ 在[终端 3](ssh://monitor1-ssh#3) 中，运行下面的脚本。脚本尝试连接到两个 TiDB 服务器实例执行查询。如果某个 TiDB 服务器失败或无法响应，脚本将自动切换到另一个可用实例。注意，TiDB 服务器实例只能在 1 秒内响应连接请求，这是类似于第 2 步中的 Java 程序的设置。输出将显示 test.dummy 表中的行数稳步增加。保持负载运行并继续下一步。

  ```bash
  qdb1(){
  mysql -h ${HOST_DB1_PRIVATE_IP} -P 4000 -uroot --connect-timeout 1 2>/dev/null << EOF
    SELECT COUNT(event) FROM test.dummy;
  EOF
  }

  qdb2(){
  mysql -h ${HOST_DB2_PRIVATE_IP} -P 4000 -uroot --connect-timeout 1 2>/dev/null << EOF
    SELECT COUNT(event) FROM test.dummy;
  EOF
  }

  query1(){
    echo;
    date;
    qdb1 || qdb2
    sleep 2;
  }

  query2(){
    echo;
    date;
    qdb2 || qdb1
    sleep 2;
  }

  while true; do
    query1;
    query2;
  done;
  ```
  ```output
  Mon May 13 05:27:33 UTC 2024
  COUNT(event)
  2608

  Mon May 13 05:27:35 UTC 2024
  COUNT(event)
  2612

  Mon May 13 05:27:37 UTC 2024
  COUNT(event)
  2616

  Mon May 13 05:27:39 UTC 2024
  COUNT(event)
  2620
  ...
  ```

### 步骤 4：验证 TiKV Region 副本设置已配置为三个

+ 返回[终端 1](ssh://monitor1-ssh#1)，验证 TiKV Region 副本设置是否配置为三个。这确保如果某个 TiKV 服务器因数据中心或可用区故障而丢失，剩余两个 TiKV 服务器可以继续正常运行。

  ```bash
  mysql -h ${HOST_DB1_PRIVATE_IP} -P 4000 -uroot
  ```
  ```sql
  SHOW CONFIG WHERE type='pd' AND name='replication.max-replicas';
  EXIT
  ```
  ```output
  +------+---------------------+--------------------------+-------+
  | Type | Instance            | Name                     | Value |
  +------+---------------------+--------------------------+-------+
  | pd   | 52.13.86.218:2379   | replication.max-replicas | 3     |
  | pd   | 34.212.25.193:2379  | replication.max-replicas | 3     |
  | pd   | 34.222.233.112:2379 | replication.max-replicas | 3     |
  +------+---------------------+--------------------------+-------+
  3 rows in set (0.02 sec)
  Bye
  ```

## 模块 3: 隔离可用区 1 中的子网 1

### 步骤 1：模拟可用区 1 的完全故障

+ 返回[终端 1](ssh://monitor1-ssh#1) 并执行脚本，通过阻止子网 `demo-subnet-1` (可用区 1 中的子网 10.90.1.0/24)，模拟可用区的完全故障。

  ```bash
  VPC_ID=`aws ec2 describe-vpcs \
    --filters "Name=tag:Name,Values=user_unique_tag" \
    --query "Vpcs[0].VpcId" \
    --output text \
    --region us-west-2`
  SUBNET_ID=`aws ec2 describe-subnets \
    --filters "Name=vpc-id,Values=${VPC_ID}" "Name=tag:Name,Values=demo-subnet-1" \
    --query "Subnets[0].SubnetId" \
    --output text \
    --region us-west-2`
  CAGE_NACL_ID=`aws ec2 describe-network-acls \
    --filters "Name=vpc-id,Values=${VPC_ID}" "Name=default,Values=false" "Name=tag:Name,Values=cage" \
    --query "NetworkAcls[0].NetworkAclId" \
    --output text \
    --region us-west-2`
  ASSOC_ID=`aws ec2 describe-network-acls \
    --filters "Name=vpc-id,Values=${VPC_ID}" "Name=default,Values=true" \
    --query "NetworkAcls[0].Associations" \
    --output text \
    --region us-west-2 | grep ${SUBNET_ID} | awk -F" " '{print $1}'`
  aws ec2 replace-network-acl-association \
    --association-id ${ASSOC_ID} \
    --network-acl-id ${CAGE_NACL_ID} \
    --region us-west-2
  ```
  ```output
  {
   "NewAssociationId": "aclassoc-0402a6103febf799f"
  }
  ```

### 步骤 2：验证若干组件已断开连接

+ 在[终端 1](ssh://monitor1-ssh#1) 中，查看集群状态以验证若干组件，包括 PD、TiDB 和 TiKV 服务器由于可用区故障而断开连接/隔离。

+ 在示例输出中，受影响的服务器为 `10.90.1.208:2379   pd`、`10.90.1.247:4000   tidb` 和 `10.90.1.122:20160  tikv`。因此，集群的三分之一组件丢失连接。

  ```bash
  tiup cluster display tidb-demo
  ```
  ```output
  Cluster type:       tidb
  Cluster name:       tidb-demo
  Cluster version:    vtidb_version
  Deploy user:        ec2-user
  SSH type:           builtin
  Dashboard URL:      http://52.13.86.218:2379/dashboard
  Grafana URL:        http://10.90.4.74:3000
  ID                 Role          Host         Ports        OS/Arch       Status        Data Dir                      Deploy Dir
  --                 ----          ----         -----        -------       ------        --------                      ----------
  10.90.4.74:9093    alertmanager  10.90.4.74   9093/9094    linux/x86_64  Up            /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
  10.90.4.74:3000    grafana       10.90.4.74   3000         linux/x86_64  Up            -                             /tidb-deploy/grafana-3000
  10.90.1.208:2379   pd            10.90.1.208  2379/2380    linux/x86_64  Down          /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.2.39:2379    pd            10.90.2.39   2379/2380    linux/x86_64  Up|L          /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.3.68:2379    pd            10.90.3.68   2379/2380    linux/x86_64  Up            /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.4.74:9090    prometheus    10.90.4.74   9090/12020   linux/x86_64  Up            /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
  10.90.1.247:4000   tidb          10.90.1.247  4000/10080   linux/x86_64  Down          -                             /tidb-deploy/tidb-4000
  10.90.2.33:4000    tidb          10.90.2.33   4000/10080   linux/x86_64  Up            -                             /tidb-deploy/tidb-4000
  10.90.1.122:20160  tikv          10.90.1.122  20160/20180  linux/x86_64  Disconnected  /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  10.90.2.5:20160    tikv          10.90.2.5    20160/20180  linux/x86_64  Up            /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  10.90.3.14:20160   tikv          10.90.3.14   20160/20180  linux/x86_64  Up            /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  Total nodes: 11
  ```

### 步骤 3：验证您的 INSERT 和 QUERY 负载仍在运行

+ 在[终端 2](ssh://monitor1-ssh#2) 和[终端 3](ssh://monitor1-ssh#3) 中，验证您的示例 INSERT/QUERY 负载仍在运行。请注意，现在 INSERT 和 QUERY 负载仅与一个 TiDB 服务器实例工作。

  ```output
  Worker 1 -> TiDB:Mon May 13 05:51:52 UTC 2024 at 10.90.2.33
  Worker 2 -> TiDB:Mon May 13 05:51:52 UTC 2024 at 10.90.2.33
  Worker 1 -> TiDB:Mon May 13 05:51:53 UTC 2024 at 10.90.2.33
  Worker 2 -> TiDB:Mon May 13 05:51:53 UTC 2024 at 10.90.2.33
  Worker 1 -> TiDB:Mon May 13 05:51:54 UTC 2024 at 10.90.2.33
  ...
  ```
  ```output
  Mon May 13 05:51:51 UTC 2024
  COUNT(event)
  5481

  Mon May 13 05:51:54 UTC 2024
  COUNT(event)
  5485
  ...
  ```

### 步骤 4：恢复可用区 1 的连接

+ 在[终端 1](ssh://monitor1-ssh#1) 中，运行脚本以恢复 `demo-subnet-1` 的连接。在真实场景中，通常无需执行此步骤。如果可用区的问题很快解决，断开的组件将在网络恢复后自动重新加入集群。如果问题由于长时间的可用区或数据中心问题而持续存在，您可以通过在剩余的可用区中扩展新的组件并驱逐断开的组件来减轻影响。无论采取何种方法，TiDB 都确保业务操作不中断。欲了解更多高级 TiDB 技能，请访问 [https://tidb.io/education/](https://tidb.io/education/)。

  ```bash
  VPC_ID=`aws ec2 describe-vpcs \
    --filters "Name=tag:Name,Values=user_unique_tag" \
    --query "Vpcs[0].VpcId" \
    --output text \
    --region us-west-2`
  SUBNET_ID=`aws ec2 describe-subnets \
    --filters "Name=vpc-id,Values=${VPC_ID}" "Name=tag:Name,Values=demo-subnet-1" \
    --query "Subnets[0].SubnetId" \
    --output text \
    --region us-west-2`
  DEFAULT_NACL_ID=`aws ec2 describe-network-acls \
    --filters "Name=vpc-id,Values=${VPC_ID}" "Name=default,Values=true" \
    --query "NetworkAcls[0].NetworkAclId" \
    --output text \
    --region us-west-2`
  ASSOC_ID=`aws ec2 describe-network-acls \
    --filters "Name=vpc-id,Values=${VPC_ID}" "Name=default,Values=false" \
    --query "NetworkAcls[0].Associations" \
    --output text \
    --region us-west-2 | grep ${SUBNET_ID} | awk -F" " '{print $1}'`
  aws ec2 replace-network-acl-association \
    --association-id ${ASSOC_ID} \
    --network-acl-id ${DEFAULT_NACL_ID} \
    --region us-west-2
  ```
  ```output
  {
   "NewAssociationId": "aclassoc-0df1e05cfc70356a8"
  }
  ```

### 步骤 5：验证所有集群组件已同步

+ 验证集群状态以确保之前断开的组件现已同步。

  ```bash
  tiup cluster display tidb-demo
  ```
  ```output
  Cluster type:       tidb
  Cluster name:       tidb-demo
  Cluster version:    vtidb_version
  Deploy user:        ec2-user
  SSH type:           builtin
  Dashboard URL:      http://52.13.86.218:2379/dashboard
  Grafana URL:        http://10.90.4.74:3000
  ID                 Role          Host         Ports        OS/Arch       Status  Data Dir                      Deploy Dir
  --                 ----          ----         -----        -------       ------  --------                      ----------
  10.90.4.74:9093    alertmanager  10.90.4.74   9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
  10.90.4.74:3000    grafana       10.90.4.74   3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
  10.90.1.208:2379   pd            10.90.1.208  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.2.39:2379    pd            10.90.2.39   2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.3.68:2379    pd            10.90.3.68   2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
  10.90.4.74:9090    prometheus    10.90.4.74   9090/12020   linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
  10.90.1.247:4000   tidb          10.90.1.247  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
  10.90.2.33:4000    tidb          10.90.2.33   4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
  10.90.1.122:20160  tikv          10.90.1.122  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  10.90.2.5:20160    tikv          10.90.2.5    20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  10.90.3.14:20160   tikv          10.90.3.14   20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
  Total nodes: 11
  ```

+ 按 <kbd>Ctrl</kbd>+<kbd>C</kbd> 停止[终端 2](ssh://monitor1-ssh#2) 和[终端 3](ssh://monitor1-ssh#3) 上的两个负载。

## 结论

TiDB Cloud Serverless 通过提供轻松、自动扩展、与 MySQL 兼容的数据库，将 TiDB Cloud 的功能提升了一步。这种完全托管的多租户产品使用户可以专注于他们的应用程序，而无需担心支持它们的基础设施。

Serverless 层提供两种关键服务计划：针对刚入门用户的免费集群计划和针对需要根据业务需求增长的应用程序的可扩展集群计划。在免费计划下，您可以每月免费享受最多 5 GiB 的基于行和列的存储以及 5​​000 万个请求单元，从而实现无风险的测试环境。随着您的应用程序需求增加，可扩展计划通过自动扩展提供增强的功能，同时承诺根据实际使用情况进行可预测的定价。

此外，TiDB Cloud Serverless 的多租户意味着所有用户都可以从相同的核心高质量功能中受益，无论他们选择哪种计划，都可以根据需要轻松地从免费计划转移到付费可扩展计划。 TiDB Cloud Serverless 通过其 HTAP 功能无缝融合事务和分析处理，确保它可以高效处理各种工作负载，同时保持高可用性。

对于寻求强大而高效的数据库管理解决方案的组织，TiDB Cloud 提供实时分析、企业级安全性的高可用性以及简单的定价计划，即使是最注重预算的团队也可以使用它。要深入了解 TiDB Cloud 并亲自探索这些功能，请访问 [https://tidbcloud.com](https://tidbcloud.com/free-trial/?utm_source=pe&utm_medium=referral&utm_campaign=pe)，您可以在那里注册免费试用并开始使用这个尖端平台的旅程。