1. 首页 > 国产数据库教程 > TiDB教程 > 正文

tidb教程FG102-TiDB云平台部署与使用实战

本文档详细介绍TiDB在各大云平台(阿里云、AWS、GCP)的部署与使用,包括云平台选型、资源配置规划、成本优化、集群管理、监控告警配置等内容。风哥教程参考TiDB官方文档云原生部署指南、TiDB Cloud文档等内容,适合DBA和运维人员在云环境中部署和管理TiDB集群。

Part01-基础概念与理论知识

1.1 TiDB云平台概述

TiDB云平台部署是指将TiDB集群部署在公有云或私有云环境中,利用云平台的弹性计算、存储、网络等资源,实现TiDB集群的快速部署和自动化运维。云部署方式可以大幅降低运维复杂度,提高资源利用效率。

TiDB云部署优势:

  • 快速部署:分钟级创建TiDB集群
  • 弹性伸缩:根据业务负载自动扩缩容
  • 高可用保障:利用云平台的可用区和容灾能力
  • 托管服务:免运维,专注业务开发
  • 全球部署:支持多地域部署,就近访问

1.2 主流云平台TiDB服务

主流云平台提供的TiDB服务:

  • TiDB Cloud:PingCAP官方提供的全托管TiDB服务,支持AWS和GCP
  • 阿里云TiDB:阿里云与PingCAP合作提供的托管TiDB服务
  • AWS Marketplace:通过AWS Marketplace部署TiDB
  • 私有云部署:基于OpenStack、VMware等私有云平台部署

1.3 云原生架构原理

TiDB在云环境中的架构特点:

  • 计算存储分离:利用云盘实现计算和存储的独立扩展
  • 多可用区部署:跨可用区部署实现高可用
  • 负载均衡:利用云LB实现流量分发
  • 自动备份:利用云存储实现自动备份
  • 网络隔离:利用VPC/VNet实现网络隔离
风哥提示:选择云平台时,需要考虑数据合规性、网络延迟、成本等因素。对于金融、政府等行业,建议选择符合等保要求的云平台。更多视频教程www.fgedu.net.cn

Part02-生产环境规划与建议

2.1 云平台选型

主流云平台TiDB服务对比:

# 云平台选型对比
1. TiDB Cloud(推荐)
– 优点:官方托管,功能最全,自动升级
– 缺点:仅支持AWS/GCP,国内访问延迟较高
– 适用:海外业务、需要最新特性

2. 阿里云TiDB
– 优点:国内访问快,符合合规要求
– 缺点:版本更新可能滞后风哥提示:
– 适用:国内业务、金融政府行业

3. AWS RDS for TiDB
– 优点:与AWS生态集成好
– 缺点:配置相对复杂
– 适用:已有AWS基础设施

4. 自建云服务器
– 优点:完全可控,成本可控
– 缺点:需要自行运维
– 适用:有专业运维团队

2.2 资源配置规划

云环境TiDB资源配置建议:

# 生产环境配置(500GB数据量)
– TiDB节点:2台,8核16GB,ecs.c6.2xlarge
– TiKV节点:3台,16核64GB+500GB SSD,ecs.i3.2xlarge
– PD节点:3台,4核8GB,ecs.c6.xlarge
– TiFlash节点:2台,16核64GB+500GB SSD(可选)

# 网络配置
– VPC网段:172.16.0.0/16
– 子网划分:
– 可用区A:172.16.1.0/24
– 可用区B:172.16.2.0/24
– 可用区C:172.16.3.0/24

# 安全组配置
– 入站规则:
– 4000端口:应用服务器访问
– 2379端口:内部PD通信
– 2380端口:内部PD通信
– 20160端口:内部TiKV通信

2.3 成本优化规划

云环境TiDB成本优化策略:

# 成本优化策略
1. 实例类型选择
– 生产环境:使用包年包月实例,节省30-50%
– 测试环境:使用按量付费或抢占式实例

2. 存储优化
– TiKV使用高效云盘(ESSD)
– 根据IO需求选择PL0/PL1/PL2/PL3级别

3. 网络优化
– 使用内网通信,避免公网流量费用
– 合理规划跨可用区流量

4. 资源调度
– 非业务高峰期降配
– 使用自动伸缩组

# 成本估算(月度)
– 计算资源:约15000元/月
– 存储资源:约5000元/月(500GB SSD)
– 网络流量:约1000元/月
– 总计:约21000元/月

生产环境建议:生产环境建议使用包年包月实例,测试环境使用按量付费。配置自动备份策略,数据保留7-30天。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 阿里云TiDB部署

3.1.1 创建阿里云TiDB实例

# 1. 登录阿里云控制台,进入云数据库TiDB版
# 2. 点击”创建实例”

# 创建实例参数配置
– 地域:华东1(杭州)
– 可用区:可用区A+B+C(多可用区部署)
– 数据库版本:v7.5.0
– 系列:高可用版
– 节点规格:
– TiDB:2核8GB × 2节点
– TiKV:8核32GB + 500GB ESSD × 3节点
– PD:2核4GB × 3节点

# 3. 配置网络
– VPC:vpc-fgedudb
– 交换机:vsw-fgedudb-a, vsw-fgedudb-b, vsw-fgedudb-c
– 安全组:sg-fgedudb

# 4. 配置账号
– 管理员账号:root
– 密码:Fgedu@2024!

# 5. 确认订单并创建
# 创建完成后获取连接地址学习交流加群风哥QQ113257174
内网地址:fgedudb.tidb.rds.aliyuncs.com
端口:4000

3.1.2 连接阿里云TiDB

# 使用MySQL客户端连接
# mysql -h fgedudb.tidb.rds.aliyuncs.com -P 4000 -u root -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12345
Server version: 5.7.25-TiDB-v7.5.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> select tidb_version();
+————————————————————————————————————————————————————————————————————————————————————————————+
| tidb_version() |
+————————————————————————————————————————————————————————————————————————————————————————————+
| Release Version: v7.5.0
Edition: Community
Git Commit Hash: 01fe22c99c0c6f7c1f2c3d4e5f6a7b8c9d0e1f2a
Git Branch: heads/refs/tags/v7.5.0
UTC Build Time: 2024-01-15 10:00:00
GoVersion: go1.21.5
Race Enabled: false
Check Table Before Drop: false
Store: tikv |
+————————————————————————————————————————————————————————————————————————————————————————————+
1 row in set (0.01 sec)

# 创建测试数据库
mysql> create database fgedudb01;
Query OK, 0 rows affected (0.12 sec)

mysql> use fgedudb01;
Database changed

mysql> create table fgedu_orders (
-> order_id bigint primary key auto_increment,
-> user_id bigint not null,
-> amount decimal(10,2) not null,
-> status varchar(20) default ‘pending’,
-> created_at timestamp default current_timestamp
-> );
Query OK, 0 rows affected (0.15 sec)

mysql> insert into fgedu_orders (user_id, amount, status) values
-> (10001, 199.99, ‘completed’),
-> (10002, 299.50, ‘completed’),
-> (10003, 99.00, ‘pending’),
-> (10004, 599.00, ‘completed’);
Query OK, 4 rows affected (0.02 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> select * from fgedu_orders;
+———-+———+——–+———–+———————+
| order_id | user_id | amount | status | created_at |
+———-+———+——–+———–+———————+
| 1 | 10001 | 199.99 | completed | 2024-04-09 10:30:00 |
| 2 | 10002 | 299.50 | completed | 2024-04-09 10:30:00 |
| 3 | 10003 | 99.00 | pending | 2024-04-09 10:30:00 |
| 4 | 10004 | 599.00 | completed | 2024-04-09 10:30:00 |
+———-+———+——–+———–+———————+
4 rows in set (0.01 sec)

3.2 AWS TiDB部署

3.2.1 使用TiDB Cloud部署

# 1. 登录TiDB Cloud控制台 (https://tidbcloud.com)
# 2. 创建新的Project
# 3. 创建Dedicated Tier集群

# 集群配置
– 云服务商:Amazon Web Services
– 区域:US West (Oregon)
– 节点配置:
– TiDB:2 vCPU, 8GB RAM × 2
– TiKV:8 vCPU, 32GB RAM, 500GB Storage × 3
– 版本:v7.5.0

# 4. 配置IP访问列表
– 添加应用服务器公网IP
– 添加运维人员公网IP

# 5. 创建集群
# 等待约10-15分钟,集群创建完成

# 获取连接信息
Host: gateway01.us-west-2.prod.aws.tidbcloud.com
Port: 4000
User: 3x7xxxxx.root
Password: xxxxxxxx

3.2.2 连接TiDB Cloud

# 安装TiDB Cloud CLI(可选)
# curl -sL https://raw.githubusercontent.com/tidbcloud/tidbcloud-cli/main/install.sh | sh

# 使用MySQL客户端连接
# mysql –connect-timeout 15 -u ‘3x7xxxxx.root’ -h gateway01.us-west-2.prod.aws.tidbcloud.com -P 4000 -D test –ssl-mode=VERIFY_IDENTITY –ssl-ca=/path/to/ca.pem -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1234567
Server version: 5.7.25-TiDB-v7.5.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> show databases;
+——————–+
| Database |
+——————–+
| INFORMATION_SCHEMA |
| fgedudb01 |
| fgedudb02 |
| mysql |
| performance_schema |
| test |
+——————–+
6 rows in set (0.02 sec)

# 创建业务数据库
mysql> create database fgedu_ecommerce;
Query OK, 0 rows affected (0.11 sec)

mysql> use fgedu_ecommerce;
Database changed

mysql> create table fgedu_products (
-> product_id bigint primary key auto_increment,
-> product_name varchar(200) not null,
-> price decimal(10,2) not null,
-> stock int default 0,
-> category varchar(50),
-> created_at timestamp default current_timestamp
-> );
Query OK, 0 rows affected (0.14 sec)

mysql> insert into fgedu_products (product_name, price, stock, category) values
-> (‘TiDB企业版授权’, 50000.00, 100, ‘软件’),
-> (‘TiDB培训课程’, 2999.00, 500, ‘服务’),
-> (‘数据库运维服务’, 15000.00, 50, ‘服务’);
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from fgedu_products;
+————+——————+———-+——-+———-+———————+
| product_id | product_name | price | stock | category | created_at |
+————+——————+———-+——-+———-+———————+
| 1 | TiDB企业版授权 | 50000.00 | 100 | 软件 | 2024-04-09 10:35:00 |
| 2 | TiDB培训课程 | 2999.00 | 500 | 服务 | 2024-04-09 10:35:00 |
| 3 | 数据库运维服务 | 15000.00 | 50 | 服务 | 2024-04-09 10:35:00 |
+————+——————+———-+——-+———-+———————+
3 rows in set (0.01 sec)

3.3 GCP TiDB部署

3.3.1 使用TiDB Cloud在GCP部署

# 1. 登录TiDB Cloud控制台
# 2. 创建新集群,选择Google Cloud Platform
# 3. 配置集群参数

# GCP集群配置
– 区域:us-west1 (Oregon)
– 节点配置:
– TiDB:n2-standard-4 (4 vCPU, 16GB) × 2
– TiKV:n2-highmem-8 (8 vCPU, 64GB) × 3
– 存储:500GB PD-SSD per TiKV

# 4. 配置VPC Peering(可选)
# 用于与现有GCP VPC网络互通

# 5. 创建集群并等待完成

# 连接信息
Host: gateway01.us-west1.gcp.tidbcloud.com
Port: 4000

风哥提示:云平台部署TiDB时,务必配置安全组规则,限制访问来源IP。生产环境建议开启SSL连接,确保数据传输安全。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 云集群管理操作

4.1.1 阿里云TiDB扩缩容

# 1. 登录阿里云控制台
# 2. 进入云数据库TiDB版控制台
# 3. 选择目标实例,点击”变更配置”

# 扩容TiKV节点(从3节点扩容到5节点)
# 在控制台选择:
# – 当前配置:TiKV 8核32GB × 3节点
# – 目标配置:TiKV 8核32GB × 5节点

# 确认变更后,系统自动执行扩容
# 扩容过程约需10-20分钟

# 查看扩容进度
# 在控制台”基本信息”页面查看节点状态
实例ID:tidb-xxx
实例状态:升降配中

# 扩容完成后验证
# mysql -h fgedudb.tidb.rds.aliyuncs.com -P 4000 -u root -p

mysql> select * from information_schema.tikv_store_status;
+———-+————-+——–+———+
| STORE_ID | ADDRESS | STATE | CAPACITY|
+———-+————-+——–+———+
| 1 | 172.16.1.10 | Up | 500GB |
| 2 | 172.16.1.11 | Up | 500GB |
| 3 | 172.16.1.12 | Up | 500GB |
| 4 | 172.16.2.10 | Up | 500GB |
| 5 | 172.16.2.11 | Up | 500GB |
+———-+————-+——–+———+
5 rows in set (0.02 sec)

4.1.2 TiDB Cloud集群管理

# 使用TiDB Cloud API管理集群
# 1. 获取API Token
# 在TiDB Cloud控制台 -> Account -> API Keys 创建

# 2. 使用curl调用API
# 列出所有集群
# curl -X GET ‘https://api.tidbcloud.com/api/v1beta/clusters’ \
# -H ‘Authorization: Bearer YOUR_API_KEY’

{
“clusters”: [
{
“id”: “12345678-1234-1234-1234-123456789012”,
“name”: “fgedudb-prod”,
“status”: “AVAILABLE”,
“cloud_provider”: “AWS”,
“region”: “us-west-2”,
“create_timestamp”: “2024-04-01T10:00:00Z”
}
]
}

# 修改集群配置(扩容)
# curl -X PATCH ‘https://api.tidbcloud.com/api/v1beta/clusters/12345678-1234-1234-1234-123456789012’ \
# -H ‘Authorization: Bearer YOUR_API_KEY’ \
# -H ‘Content-Type: application/json’ \
# -d ‘{
# “config”: {
# “components”: {
# “tikv”: {
# “node_quantity”: 5
# }
# }
# }
# }’

{
“cluster_id”: “12345678-1234-1234-1234-123456789012”,
“operation_id”: “87654321-4321-4321-4321-210987654321”,
“status”: “MODIFYING”
}

4.2 云监控配置

4.2.1 阿里云监控配置

# 1. 登录阿里云云监控控制台
# 2. 创建Dashboard

# 3. 添加TiDB监控图表
# 关键监控指标:
– tidb_qps:每秒查询数
– tidb_connection_count:连接数
– tikv_storage_size:存储使用量
– tikv_cpu_usage:CPU使用率
– tikv_memory_usage:内存使用率

# 4. 配置告警规则
# cat > aliyun-alert-rules.json << EOF { "AlertName": "TiDBHighQPS", "MetricName": "tidb_qps", "Statistics": "Average", "ComparisonOperator": "GreaterThanThreshold", "Threshold": 10000, "EvaluationCount": 3, "ContactGroups": ["DBA_Group"] } EOF # 5. 查看监控数据 # 在阿里云控制台查看实时指标 时间范围:最近1小时 刷新频率:15秒 # 当前指标值: QPS: 2,345 连接数: 156 存储使用: 320GB/500GB CPU使用率: 35% 内存使用率: 62%

4.2.2 TiDB Cloud监控

# TiDB Cloud内置监控
# 1. 登录TiDB Cloud控制台
# 2. 进入集群详情页
# 3. 点击”Monitoring”标签

# 监控指标包括:
– Overview:集群整体状态
– SQL:SQL执行统计
– Storage:存储使用情况
– Performance:性能指标
– System:系统资源使用

# 查看慢查询
# 在Monitoring -> Slow Queries查看
Query: SELECT * FROM fgedu_orders WHERE created_at > ‘2024-01-01’
Duration: 2.5s
Rows_examined: 1000000
Rows_sent: 100

# 查看Top SQL
# 在Monitoring -> Top SQL查看
Query: SELECT count(*) FROM fgedu_orders GROUP BY status
Execution Count: 1250
Avg Duration: 150ms

4.3 云备份策略

4.3.1 阿里云自动备份

# 1. 登录阿里云控制台
# 2. 进入TiDB实例详情页
# 3. 点击”备份恢复”

# 配置自动备份
– 备份周期:每天
– 备份时间:02:00-06:00
– 备份保留:30天
– 跨区域备份:开启(备份到OSS)

# 查看备份列表
备份ID:bkp-xxx
备份时间:2024-04-09 02:30:00
备份大小:280GB
备份状态:成功

# 手动创建备份
# 在控制台点击”创建备份”
备份ID:bkp-manual-xxx
备份时间:2024-04-09 15:00:00
备份大小:285GB
备份状态:进行中 -> 成功

# 恢复数据
# 1. 选择备份点
# 2. 选择恢复方式(恢复到新实例/原实例)
# 3. 确认恢复
恢复任务ID:rst-xxx
恢复状态:进行中
预计完成时间:30分钟

4.3.2 TiDB Cloud备份配置

#!/bin/bash
# tidb-cloud-backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

# TiDB Cloud自动备份配置
# 1. 在控制台配置自动备份
# Backup Settings:
# – Frequency: Daily
# – Retention: 7 days
# – Time Window: 02:00-06:00 UTC

# 2. 使用Dumpling手动备份
# 安装Dumpling
tiup install dumpling

# 执行备份
tiup dumpling -h gateway01.us-west-2.prod.aws.tidbcloud.com \
-P 4000 -u ‘3x7xxxxx.root’ -p ‘password’ \
-o s3://fgedudb-backup/tidb-cloud/ \
–s3.region us-west-2

# 备份输出
Dump completed in 15m30s
Total tables: 156
Total size: 320GB

# 3. 使用BR工具备份(需要支持)
tiup br backup full \
–pd “pd-endpoint:2379” \
–storage “s3://fgedudb-backup/tidb-cloud-br/” \
–s3.region us-west-2 \
–send-credentials-to-tikv=true

# 恢复数据
tiup br restore full \
–pd “pd-endpoint:2379” \
–storage “s3://fgedudb-backup/tidb-cloud-br/” \
–s3.region us-west-2

Restore completed in 45m20s

Part05-风哥经验总结与分享

5.1 云平台最佳实践

云平台TiDB部署最佳实践总结:

  • 多可用区部署:生产环境务必跨3个可用区部署,确保高可用
  • 网络隔离:使用VPC/VNet隔离,配置安全组限制访问
  • SSL连接:生产环境强制使用SSL加密连接
  • 自动备份:配置每日自动备份,保留7-30天
  • 监控告警:配置完善的监控告警体系
  • 成本控制:使用包年包月实例,合理规划资源
风哥提示:云平台部署TiDB虽然便捷,但仍需关注数据安全和合规性。建议定期进行灾难恢复演练,验证备份数据的可用性。更多学习教程公众号风哥教程itpux_com

5.2 常见问题处理

# 问题1:连接超时
# 检查安全组规则,确认端口4000已开放
# 检查IP白名单,确认客户端IP已授权

# 问题2:性能下降
# 查看监控,确认是否存在慢查询
# 检查存储IO,确认是否达到瓶颈

# 问题3:存储空间不足
# 在控制台扩容存储
# 清理历史数据

# 问题4:备份失败
# 检查OSS/S3权限
# 检查网络连接

# 问题5:升级失败
# 查看升级日志
# 联系云厂商技术支持

5.3 多云迁移策略

多云环境下的TiDB迁移策略:

  • 数据导出导入:使用Dumpling/Lightning进行全量迁移
  • 增量同步:使用TiCDC实现增量数据同步
  • 双写架构:迁移期间双写,确保数据一致性
  • 灰度切换:逐步切换流量,降低风险
# 多云迁移示例:阿里云 -> TiDB Cloud
# 1. 使用Dumpling导出数据
tiup dumpling -h aliyun-tidb-host -P 4000 -u root -p \
-o /data/backup/aliyun-export/

# 2. 使用Lightning导入TiDB Cloud
tiup lightning -config lightning.toml

# 3. 配置TiCDC增量同步
cdc cli changefeed create \
–pd=http://aliyun-pd:2379 \
–sink-uri=”mysql://user:password@tidb-cloud-host:4000/”

# 4. 验证数据一致性
sync-diff-inspector -config diff.toml

# 5. 切换流量
# 修改应用连接配置,指向TiDB Cloud

风哥提示:多云迁移需要谨慎规划,建议在低峰期执行。迁移前务必做好数据备份,并制定详细的回滚方案。from tidb视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息