本文档风哥主要介绍TiDB生产综合项目实践,包括项目背景与需求分析、生产环境规划与部署、数据库管理与运维、性能优化与故障处理、项目验收与总结等内容,风哥教程参考TiDB官方文档运维章节,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-项目背景与需求分析
1.1 项目背景
某电商企业随着业务的快速发展,原有MySQL数据库已无法满足业务需求,主要面临以下挑战:
- 数据量增长迅速:日均数据增长达到10GB,现有MySQL实例存储空间不足。
- 并发访问高:高峰期并发请求达到10000QPS,MySQL性能瓶颈明显。
- 可用性要求高:业务要求数据库可用性达到99.99%,MySQL主从架构无法满足。
- 扩展性差:MySQL水平扩展困难,无法快速响应业务增长需求。
- 运维复杂度高:MySQL分片管理复杂,运维成本高。
- 迁移现有MySQL数据到TiDB集群
- 构建高可用、可扩展的TiDB集群
- 确保系统稳定性和性能满足业务需求
- 建立完善的运维体系
1.2 需求分析
业务需求分析:
1. 数据量:现有数据量500GB,预计年增长30%
2. QPS:高峰期10000QPS,平时5000QPS
3. 响应时间:99%的请求响应时间小于100ms
4. 可用性:99.99%
5. 数据一致性:强一致性
6. 扩展性:支持在线水平扩展
7. 备份恢复:支持全量和增量备份,RTO<1小时
8. 监控告警:实时监控系统状态,及时发送告警
# 技术需求
1. 架构:分布式架构,支持水平扩展
2. 存储:分布式存储,支持PB级数据
3. 计算:分布式计算,支持高并发
4. 一致性:支持ACID事务
5. 兼容性:兼容MySQL协议和语法
6. 运维:提供完善的运维工具和监控
1.3 技术架构
TiDB集群技术架构:
风哥提示:
– TiDB节点:3个,负责SQL解析和执行
– TiKV节点:3个,负责数据存储
– PD节点:3个,负责集群元数据管理
– TiFlash节点:2个,负责OLAP查询
# 网络架构
– 前端负载均衡:使用Nginx或HAProxy
– 内部网络:千兆网络
– 外部访问:通过VIP访问
# 存储架构
– TiKV存储:SSD存储
– PD存储:SSD存储
– TiFlash存储:NVMe SSD存储
# 监控架构
– Prometheus:监控数据采集
– Grafana:数据可视化
– Alertmanager:告警管理
Part02-生产环境规划与部署
2.1 环境规划
2.1.1 硬件规划
## TiDB节点
– CPU:8核及以上
– 内存:16GB及以上
– 存储:100GB SSD
– 网络:千兆网络
## TiKV节点
– CPU:16核及以上
– 内存:32GB及以上
– 存储:2TB SSD
– 网络:千兆网络
## PD节点
– CPU:4核及以上
– 内存:8GB及以上
– 存储:500GB SSD
– 网络:千兆网络
## TiFlash节点
– CPU:16核及以上
– 内存:32GB及以上
– 存储:4TB NVMe SSD
– 网络:千兆网络
## 监控节点
– CPU:4核及以上
– 内存:8GB及以上
– 存储:500GB SSD
– 网络:千兆网络
2.1.2 软件规划
## 操作系统
– CentOS 7.9 / RHEL 7.9
– Kernel:3.10.0-1160.el7.x86_64
## TiDB版本
– TiDB:v7.1.0
– TiKV:v7.1.0
– PD:v7.1.0
– TiFlash:v7.1.0
## 部署工具
– TiUP:v1.13.0
## 监控工具
– Prometheus:v2.30.3
– Grafana:v8.3.3
– Alertmanager:v0.23.0
## 负载均衡
– Nginx:v1.20.1
2.2 部署步骤
2.2.1 环境准备
## 1. 系统配置
# 关闭防火墙学习交流加群风哥QQ113257174
$ systemctl stop firewalld
$ systemctl disable firewalld
# 关闭SELinux
$ setenforce 0
$ sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
# 配置内核参数
$ cat >> /etc/sysctl.conf << EOF
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 10
net.ipv4.tcp_keepalive_intvl = 30
vm.swappiness = 0
vm.overcommit_memory = 1
fs.file-max = 655350
EOF
$ sysctl -p
# 配置文件描述符
$ cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
## 2. 安装依赖
$ yum install -y epel-release
$ yum install -y wget curl tar zip unzip git
## 3. 安装TiUP
$ curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
$ source ~/.bash_profile
2.2.2 集群部署
## 1. 配置集群拓扑
$ cat > topology.yaml << EOF
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/app/tidb-deploy"
data_dir: "/tidb/fgdata"
server_configs:
tidb:
log.level: "info"
tikv:
log.level: "info"
pd:
log.level: "info"
tiflash:
log.level: "info"
pd_servers:
- host: 192.168.1.100
- host: 192.168.1.101
- host: 192.168.1.102
tidb_servers:
- host: 192.168.1.103
- host: 192.168.1.104
- host: 192.168.1.105
tikv_servers:
- host: 192.168.1.106
port: 20160
status_port: 20180
config:
server.labels: { zone: "zone1" }
- host: 192.168.1.107
port: 20160
status_port: 20180
config:
server.labels: { zone: "zone2" }
- host: 192.168.1.108
port: 20160
status_port: 20180
config:
server.labels: { zone: "zone3" }
tiflash_servers:
- host: 192.168.1.109
- host: 192.168.1.110
monitoring_servers:
- host: 192.168.1.111
grafana_servers:
- host: 192.168.1.111
alertmanager_servers:
- host: 192.168.1.111
EOF
## 2. 部署集群
$ tiup cluster deploy fgedu-tidb-cluster v7.1.0 topology.yaml --user root -p
## 3. 启动集群
$ tiup cluster start fgedu-tidb-cluster
## 4. 验证集群状态
$ tiup cluster display fgedu-tidb-cluster
tidb Cluster: fgedu-tidb-cluster
tidb Version: v7.1.0
ID Role Host Ports Status Data Dir Deploy Dir
-- ---- ---- ----- ------ -------- ----------
192.168.1.100:2379 pd 192.168.1.100 2379/2380 Up /tidb/fgdata/pd-2379 /tidb/app/tidb-deploy/pd-2379
192.168.1.101:2379 pd 192.168.1.101 2379/2380 Up /tidb/fgdata/pd-2379 /tidb/app/tidb-deploy/pd-2379
192.168.1.102:2379 pd 192.168.1.102 2379/2380 Up /tidb/fgdata/pd-2379 /tidb/app/tidb-deploy/pd-2379
192.168.1.103:4000 tidb 192.168.1.103 4000/10080 Up - /tidb/app/tidb-deploy/tidb-4000
192.168.1.104:4000 tidb 192.168.1.104 4000/10080 Up - /tidb/app/tidb-deploy/tidb-4000
192.168.1.105:4000 tidb 192.168.1.105 4000/10080 Up - /tidb/app/tidb-deploy/tidb-4000
192.168.1.106:20160 tikv 192.168.1.106 20160/20180/20190/20200 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-deploy/tikv-20160
192.168.1.107:20160 tikv 192.168.1.107 20160/20180/20190/20200 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-deploy/tikv-20160
192.168.1.108:20160 tikv 192.168.1.108 20160/20180/20190/20200 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-deploy/tikv-20160
192.168.1.109:9000 tiflash 192.168.1.109 9000/8123/3930/20170/20290/8234 Up /tidb/fgdata/tiflash-9000 /tidb/app/tidb-deploy/tiflash-9000
192.168.1.110:9000 tiflash 192.168.1.110 9000/8123/3930/20170/20290/8234 Up /tidb/fgdata/tiflash-9000 /tidb/app/tidb-deploy/tiflash-9000
192.168.1.111:9090 monitoring 192.168.1.111 9090/12020 Up /tidb/fgdata/monitoring-9090 /tidb/app/tidb-deploy/monitoring-9090
192.168.1.111:3000 grafana 192.168.1.111 3000 Up - /tidb/app/tidb-deploy/grafana-3000
192.168.1.111:9093 alertmanager 192.168.1.111 9093 Up /tidb/fgdata/alertmanager-9093 /tidb/app/tidb-deploy/alertmanager-9093
2.3 部署后配置
2.3.1 配置负载均衡
$ cat > /etc/nginx/conf.d/tidb.conf << EOF upstream tidb_servers { server 192.168.1.103:4000; server 192.168.1.104:4000; server 192.168.1.105:4000; least_conn; } server { listen 4000; server_name tidb.fgedu.net.cn; location / { proxy_pass http://tidb_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } EOF # 重启Nginx $ systemctl restart nginx
2.3.2 配置监控告警
$ cat > /tidb/app/tidb-deploy/alertmanager-9093/conf/alertmanager.yml << EOF global: resolve_timeout: 5m smtp_smarthost: 'smtp.example.com:587' smtp_from: 'alertmanager@fgedu.net.cn' smtp_auth_username: 'alertmanager' smtp_auth_password: 'password' route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'email' receivers: - name: 'email' email_configs: - to: 'admin@fgedu.net.cn' send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'instance'] EOF # 重启Alertmanager $ tiup cluster reload fgedu-tidb-cluster -R alertmanager
Part03-数据库管理与运维
3.1 数据库管理
3.1.1 创建数据库和用户
# 连接TiDB
$ mysql -h 192.168.1.103 -P 4000 -u root
# 创建数据库
CREATE DATABASE fgedudb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 创建用户
CREATE USER ‘fgedu’@’%’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON fgedudb.* TO ‘fgedu’@’%’;
FLUSH PRIVILEGES;
# 验证用户
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12345
Server version: 5.7.25-TiDB-v7.1.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> SHOW DATABASES;
+——————–+
| Database |
+——————–+
| fgedudb |
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+
5 rows in set (0.01 sec)
3.1.2 数据迁移
## 1. 使用Dumpling导出MySQL数据
$ tiup dumpling -h 192.168.1.200 -P 3306 -u root -p password -B fgedudb -o /tidb/backup/mysql_dump
## 2. 使用Lightning导入TiDB
$ tiup lightning –tidb-host 192.168.1.103 –tidb-port 4000 –tidb-user fgedu –tidb-password password –tidb-db fgedudb –backend local –sorted-kv-dir /tidb/tmp /tidb/backup/mysql_dump
## 3. 验证数据
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “SELECT COUNT(*) FROM fgedudb.fgedu_users;”
+———-+
| COUNT(*) |
+———-+
| 100000 |
+———-+
1 row in set (0.05 sec)
3.2 日常运维
3.2.1 日常巡检
#!/bin/bash
# daily_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 日常巡检TiDB集群
# 日志文件
LOG_FILE=”/tidb/log/daily_check_$(date +%Y%m%d).log”
# 开始巡检
echo “===== TiDB集群日常巡检 =====” >> $LOG_FILE
echo “巡检时间: $(date)” >> $LOG_FILE
# 1. 检查集群状态
echo “\n1. 集群状态检查” >> $LOG_FILE
tiup cluster display fgedu-tidb-cluster >> $LOG_FILE
# 2. 检查节点状态
echo “\n2. 节点状态检查” >> $LOG_FILE
tiup cluster status fgedu-tidb-cluster >> $LOG_FILE
# 3. 检查磁盘空间
echo “\n3. 磁盘空间检查” >> $LOG_FILE
for host in 192.168.1.100 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104 192.168.1.105 192.168.1.106 192.168.1.107 192.168.1.108 192.168.1.109 192.168.1.110 192.168.1.111
do
echo “\n$host 磁盘空间:” >> $LOG_FILE
ssh root@$host “df -h” >> $LOG_FILE
done
# 4. 检查内存使用
echo “\n4. 内存使用检查” >> $LOG_FILE
for host in 192.168.1.100 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104 192.168.1.105 192.168.1.106 192.168.1.107 192.168.1.108 192.168.1.109 192.168.1.110 192.168.1.111
do
echo “\n$host 内存使用:” >> $LOG_FILE
ssh root@$host “free -h” >> $LOG_FILE
done
# 5. 检查CPU使用
echo “\n5. CPU使用检查” >> $LOG_FILE
for host in 192.168.1.100 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104 192.168.1.105 192.168.1.106 192.168.1.107 192.168.1.108 192.168.1.109 192.168.1.110 192.168.1.111
do
echo “\n$host CPU使用:” >> $LOG_FILE
ssh root@$host “top -b -n 1 | head -20” >> $LOG_FILE
done
# 6. 检查TiDB连接
echo “\n6. TiDB连接检查” >> $LOG_FILE
echo “连接测试:” >> $LOG_FILE
mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “select version();” >> $LOG_FILE
# 7. 检查慢查询
echo “\n7. 慢查询检查” >> $LOG_FILE
echo “最近10条慢查询:” >> $LOG_FILE
mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “select * from information_schema.slow_query where time >= date_sub(now(), interval 1 day) order by start_time desc limit 10;” >> $LOG_FILE
echo “\n===== 巡检完成 =====” >> $LOG_FILE
# 发送巡检报告
# mail -s “TiDB集群日常巡检报告” admin@fgedu.net.cn < $LOG_FILE
3.3 备份恢复
3.3.1 全量备份
# 1. 使用BR进行全量备份
$ tiup br backup full –pd http://192.168.1.100:2379 –storage “local:///tidb/backup/full” –ratelimit 128
# 2. 验证备份
$ ls -la /tidb/backup/full
total 102400
drwxr-xr-x 2 tidb tidb 4096 Jan 1 00:00 .
drwxr-xr-x 3 tidb tidb 4096 Jan 1 00:00 ..
-rw-r–r– 1 tidb tidb 104857600 Jan 1 00:00 backupmeta
-rw-r–r– 1 tidb tidb 0 Jan 1 00:00 backup.lock
3.3.2 增量备份
# 1. 记录上次备份的时间戳
$ LAST_BACKUP_TS=$(tiup br validate –storage “local:///tidb/backup/full” | grep “backup ts” | awk ‘{print $3}’)
# 2. 执行增量备份
$ tiup br backup incr –pd http://192.168.1.100:2379 –storage “local:///tidb/backup/incr” –last-backup ts:$LAST_BACKUP_TS –ratelimit 128
# 3. 验证备份
$ ls -la /tidb/backup/incr
total 51200
drwxr-xr-x 2 tidb tidb 4096 Jan 1 00:00 .
drwxr-xr-x 4 tidb tidb 4096 Jan 1 00:00 ..
-rw-r–r– 1 tidb tidb 52428800 Jan 1 00:00 backupmeta
-rw-r–r– 1 tidb tidb 0 Jan 1 00:00 backup.lock
3.3.3 恢复操作
# 1. 停止TiDB集群
$ tiup cluster stop fgedu-tidb-cluster
# 2. 清理数据目录
$ for host in 192.168.1.106 192.168.1.107 192.168.1.108
do
ssh root@$host “rm -rf /tidb/fgdata/tikv-20160/*”
done
# 3. 启动PD和TiKV
$ tiup cluster start fgedu-tidb-cluster -R pd,tikv
# 4. 执行恢复
$ tiup br restore full –pd http://192.168.1.100:2379 –storage “local:///tidb/backup/full”
# 5. 启动TiDB和TiFlash
$ tiup cluster start fgedu-tidb-cluster -R tidb,tiflash
# 6. 验证恢复
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “SELECT COUNT(*) FROM fgedudb.fgedu_users;”
+———-+
| COUNT(*) |
+———-+
| 100000 |
+———-+
1 row in set (0.05 sec)
Part04-性能优化与故障处理
4.1 性能优化
4.1.1 系统参数优化
## TiDB参数优化
$ tiup cluster edit-config fgedu-tidb-cluster
# 添加以下配置
tidb_servers:
– host: 192.168.1.103
config:
performance.max-procs: 8
prepared-plan-cache.enabled: true
tikv-client.max-batch-size: 128
tikv-client.batch-wait-time: 200000
## TiKV参数优化
tikv_servers:
– host: 192.168.1.106
config:
storage.scheduler-worker-pool-size: 4
readpool.storage.num-threads: 4
readpool.coprocessor.num-threads: 4
rocksdb.max-background-jobs: 4
## PD参数优化
pd_servers:
– host: 192.168.1.100
config:
replication.max-replicas: 3
replication.location-labels: [“zone”, “rack”, “host”]
# 重启集群使配置生效
$ tiup cluster reload fgedu-tidb-cluster
4.1.2 SQL优化
## 1. 查看慢查询
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “select * from information_schema.slow_query where time >= date_sub(now(), interval 1 hour) order by query_time desc limit 10;”
## 2. 分析执行计划
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “EXPLAIN SELECT * FROM fgedudb.fgedu_users WHERE age > 30;”
+————————-+———+———–+—————+——————————–+ | id | estRows | task | access object | operator info | +————————-+———+———–+—————+——————————–+ | TableReader_7 | 33333.33 | root | | data:Selection_6 | | └─Selection_6 | 33333.33 | cop[tikv] | | gt(fgedu_users.age, 30) | | └─TableFullScan_5 | 100000.00 | cop[tikv] | table:fgedu_users | keep order:false, stats:pseudo | +————————-+———+———–+—————+——————————–+ 3 rows in set (0.01 sec)
## 3. 创建索引
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “CREATE INDEX idx_age ON fgedudb.fgedu_users(age);”
## 4. 再次分析执行计划
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “EXPLAIN SELECT * FROM fgedudb.fgedu_users WHERE age > 30;”
+————————-+———+———–+——————————-+——————————–+ | id | estRows | task | access object | operator info | +————————-+———+———–+——————————-+——————————–+ | TableReader_6 | 33333.33 | root | | data:Selection_5 | | └─Selection_5 | 33333.33 | cop[tikv] | | gt(fgedu_users.age, 30) | | └─IndexRangeScan_4 | 33333.33 | cop[tikv] | table:fgedu_users, index:idx_age | range:(30,+inf], keep order:false | +————————-+———+———–+——————————-+——————————–+ 3 rows in set (0.01 sec)
4.2 故障处理
4.2.1 常见故障处理
## 1. TiKV节点故障
# 检查TiKV节点状态
$ tiup cluster status fgedu-tidb-cluster -R tikv
# 重启TiKV节点
$ tiup cluster restart fgedu-tidb-cluster -R tikv:192.168.1.106:20160
## 2. PD节点故障
# 检查PD节点状态
$ tiup cluster status fgedu-tidb-cluster -R pd
# 重启PD节点
$ tiup cluster restart fgedu-tidb-cluster -R pd:192.168.1.100:2379
## 3. TiDB节点故障
# 检查TiDB节点状态
$ tiup cluster status fgedu-tidb-cluster -R tidb
# 重启TiDB节点
$ tiup cluster restart fgedu-tidb-cluster -R tidb:192.168.1.103:4000
## 4. 网络故障
# 检查网络连接
$ ping 192.168.1.100
$ telnet 192.168.1.100 2379
# 检查防火墙
$ iptables -L
## 5. 磁盘空间不足
# 检查磁盘空间
$ df -h
# 清理日志
$ find /tidb/app/tidb-deploy -name “*.log” -type f -mtime +7 -exec rm -f {} \;
# 扩展磁盘空间
# 参考云服务提供商文档或硬件手册
4.3 案例分析
某电商平台TiDB性能优化案例:
– 业务场景:电商平台订单系统
– 问题:高峰期订单查询响应时间长,影响用户体验
– 数据量:订单表数据量达到5000万
– QPS:高峰期达到5000QPS
# 问题分析
1. 慢查询分析:发现订单查询SQL执行时间超过1秒
2. 执行计划分析:全表扫描,没有使用索引
3. 系统资源分析:TiKV CPU使用率达到80%
# 优化措施
1. SQL优化:
– 创建订单号和时间索引
– 优化查询语句,减少不必要的字段查询
– 使用分页查询,避免一次性查询大量数据
2. 系统参数优化:
– 调整TiDB prepared-plan-cache.enabled为true
– 调整TiKV readpool.coprocessor.num-threads为8
– 调整PD replication.max-replicas为3
3. 架构优化:
– 增加TiDB节点数量到5个
– 增加TiKV节点数量到6个
– 配置TiFlash节点,加速分析查询
# 优化效果
– 查询响应时间:从1秒降低到100ms以内
– 系统QPS:从5000提升到10000
– TiKV CPU使用率:从80%降低到40%
– 用户体验:明显改善,订单查询速度大幅提升
Part05-项目验收与总结
5.1 验收标准
项目验收标准:
- 功能验收:所有业务功能正常运行,数据迁移成功。
- 性能验收:系统性能满足业务需求,响应时间符合要求。
- 可用性验收:系统可用性达到99.99%。
- 可靠性验收:系统稳定运行,无重大故障。
- 安全性验收:系统安全符合要求,无安全漏洞。
- 文档验收:项目文档完整,包括架构设计、部署文档、运维文档等。
5.2 验收测试
## 1. 功能测试
# 测试数据迁移
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “SELECT COUNT(*) FROM fgedudb.fgedu_users;”
# 测试业务功能
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “INSERT INTO fgedudb.fgedu_users (name, age, email) VALUES (‘test’, 30, ‘test@fgedu.net.cn’);”
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “SELECT * FROM fgedudb.fgedu_users WHERE name = ‘test’;”
## 2. 性能测试
# 使用Sysbench进行性能测试
$ sysbench –db-driver=mysql –mysql-host=192.168.1.103 –mysql-port=4000 –mysql-user=fgedu –mysql-password=password –mysql-db=fgedudb –table-size=1000000 –tables=10 –threads=16 –time=300 oltp_read_write run
# 测试结果
SQL statistics:
queries performed:
read: 183654
write: 52472
other: 26236
total: 262362
transactions:
total: 13118 (43.72 per sec.)
read/write requests: 236126 (787.07 per sec.)
other operations: 26236 (87.45 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0136s
total number of events: 13118
Latency (ms):
min: 1.45
avg: 37.35
max: 245.67
approx. 95 percentile: 87.12
Threads fairness:
events (avg/stddev): 819.8750/12.34
execution time (avg/stddev): 299.9835/0.01
## 3. 可用性测试
# 模拟节点故障
$ tiup cluster stop fgedu-tidb-cluster -R tikv:192.168.1.106:20160
# 测试业务连续性
$ mysql -h 192.168.1.103 -P 4000 -u fgedu -p -e “SELECT * FROM fgedudb.fgedu_users LIMIT 10;”
# 恢复节点
$ tiup cluster start fgedu-tidb-cluster -R tikv:192.168.1.106:20160
5.3 项目总结
项目总结:
## 项目成果
1. 成功构建了高可用、可扩展的TiDB集群
2. 完成了MySQL数据到TiDB的迁移
3. 建立了完善的运维体系
4. 系统性能满足业务需求
5. 系统可用性达到99.99%
## 经验教训
1. 数据迁移需要充分测试,确保数据一致性
2. 系统参数优化需要根据实际业务场景进行调整
3. 监控告警体系需要完善,及时发现和处理问题
4. 定期进行性能测试,确保系统性能满足业务需求
5. 建立完善的运维文档,便于后续维护
## 未来规划
1. 扩展TiDB集群规模,支持业务增长
2. 优化系统性能,提升用户体验
3. 引入更多智能化运维工具,提高运维效率
4. 建立灾备体系,确保数据安全
5. 持续优化SQL和系统参数,提升系统性能
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
