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

tidb教程FG012-TiDB TiKV组件存储与配置

本文档详细介绍TiDB TiKV组件的存储与配置,包括TiKV的核心功能、存储原理、部署规划、配置管理、参数优化等内容。风哥教程参考TiDB官方文档TiKV相关内容,适合DBA和系统管理员在部署和维护TiDB集群时使用。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 TiKV组件概念

TiKV(TiKV Key-Value Store)是TiDB的分布式键值存储引擎,负责存储数据。

  • 作用:存储数据、提供事务支持、确保数据一致性
  • 特点:分布式、高可用、强一致性、水平扩展
  • 重要性:TiDB的存储层核心组件
TiKV的核心特性:

  • 分布式事务支持
  • 强一致性保证
  • 水平扩展性
  • 高可用性
  • 自动数据分片

1.2 TiKV架构原理

TiKV采用多层架构设计,包括:

  • API层:提供客户端访问接口
  • 事务层:实现分布式事务
  • MVCC层:多版本并发控制
  • Rows层:行数据处理
  • Block层:数据块管理
  • Raft层:一致性协议
  • Storage层:底层存储引擎

1.3 TiKV存储原理

TiKV的存储原理包括:

  • 数据分片:数据按Region分片,每个Region大小约96MB
  • 多副本:每个Region有多个副本,默认3副本
  • Raft协议:保证数据一致性
  • MVCC:多版本并发控制,支持事务
  • 数据编码:使用键值编码存储数据
  • Compaction:数据压缩和合并
风哥提示:TiKV是TiDB的存储核心,其性能和稳定性直接影响整个集群的数据处理能力。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 TiKV部署规划

2.1.1 部署模式

风哥提示:
# TiKV部署模式

## 1. 独立部署
– 单独的服务器部署TiKV节点
– 推荐生产环境使用
– 提供更好的性能和稳定性

## 2. 混合部署
– 与其他组件部署在同一服务器
– 适合测试环境或资源受限情况
– 可能影响性能

## 3. 部署数量
– 生产环境:3个或更多节点
– 测试环境:1个节点
– 最少:1个节点
– 建议:奇数个节点,便于Raft选举

2.1.2 部署拓扑

# TiKV部署拓扑

## 三节点部署示例
– tikv-1: 192.168.1.201
– tikv-2: 192.168.1.202
– tikv-3: 192.168.1.203

## 网络拓扑
– 业务网络:与TiDB节点通信
– 存储网络:与其他TiKV节点通信
– 管理网络:与监控系统通信

## 端口规划
– 客户端端口:20160
– 状态端口:20180

2.2 TiKV硬件配置

# TiKV硬件配置

## 生产环境配置
– CPU:16核及以上
– 内存:32GB及以上
– 存储:1TB+ SSD
– 网络:万兆网卡

## 测试环境配置
– CPU:8核
– 内存:16GB
– 存储:200GB SSD
– 网络:千兆网卡

## 存储要求
– IOPS:10000+ IOPS
– 延迟:< 1ms - 带宽:2GB/s+ - 随机读写性能:优先考虑

2.3 TiKV存储规划

# TiKV存储规划

## 1. 存储类型选择
– 推荐:NVMe SSD
– 备选:SATA SSD
– 不推荐:HDD

## 2. 存储容量规划
– 原始数据大小:100GB
– 预留空间:3倍原始数据(300GB)
– 考虑因素:
– 数据副本(默认3副本)
– 数据压缩(约50%压缩率)
– 日志和元数据
– 数据增长

## 3. 存储分区
– 系统分区:50GB
– 数据分区:剩余空间
– 建议使用独立磁盘或分区

## 4. 文件系统
– 推荐:ext4或xfs
– 挂载选项:noatime,nodiratime
– 日志模式:ordered或writeback

生产环境建议:TiKV的存储性能对整个集群的性能至关重要,建议使用高性能NVMe SSD。学习交流加群风哥QQ113257174

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

3.1 TiKV配置管理

3.1.1 配置文件结构

学习交流加群风哥QQ113257174
# TiKV配置文件结构

## 配置文件路径
– 默认路径:/tidb/app/tikv-7.5.0/conf/tikv.toml

## 主要配置项
[server]
addr = “0.0.0.0:20160”
advertise-addr = “192.168.1.201:20160”
status-addr = “0.0.0.0:20180”

[storage]
data-dir = “/tidb/fgdata/tikv”

[raft]
max-leader-lease = “9s”

[rocksdb]
enable-statistics = true

[security]
ssl-enable = false

[pd]
endpoints = [“http://192.168.1.101:2379”, “http://192.168.1.102:2379”, “http://192.168.1.103:2379”]

3.1.2 配置修改方法

# 配置修改方法

## 1. 使用TiUP修改配置
$ tiup cluster edit-config fgedu-tidb-cluster

## 2. 手动修改配置文件
$ vi /tidb/app/tikv-7.5.0/conf/tikv.toml

## 3. 应用配置变更
$ tiup cluster reload fgedu-tidb-cluster -R tikv

## 4. 验证配置
$ tiup cluster config fgedu-tidb-cluster –component tikv

3.2 TiKV参数优化

3.2.1 核心参数优化

# TiKV核心参数优化

## 1. 存储参数
[storage]
enable-async-io = true
async-io-threads = 4

## 2. RocksDB参数
[rocksdb]
max-open-files = 4096
max-background-jobs = 8
max-subcompactions = 4

## 3. Raft参数
[raft]
max-leader-lease = “9s”
raftstore-max-leader-lease = “9s”

## 4. 服务器参数
[server]
grpc-concurrency = 16
grpc-keepalive-time = “10s”

## 5. 内存参数
[memory]
enable-memory-limiter = true
memory-soft-limit = “24GB”
memory-hard-limit = “28GB”

## 6. 日志参数
[log]
level = “info”
file = “/tidb/log/tikv.log”
max-size = 1024
max-days = 7

3.2.2 性能参数调优

# TiKV性能参数调优

## 1. 写入优化
[raftdb]
max-background-jobs = 4

[rocksdb.defaultcf]
write-buffer-size = “64MB”
max-write-buffer-number = 4
min-write-buffer-number-to-merge = 2

## 2. 读取优化
[rocksdb.defaultcf]
bloom-filter-bits-per-key = 10
block-cache-size = “8GB”

[rocksdb.writecf]
block-cache-size = “4GB”

## 3. 压缩优化
[rocksdb.defaultcf]
compression-per-level = [“no”, “no”, “lz4”, “lz4”, “lz4”, “zstd”, “zstd”]

## 4. 并发优化
[server]
grpc-concurrency = 16
tokio-worker-threads = 16

## 5. 网络优化
[server]
grpc-keepalive-time = “10s”
grpc-keepalive-timeout = “20s”

3.3 TiKV监控配置

3.3.1 监控指标

# TiKV监控指标

## 1. 核心指标
– tikv_raftstore_leader_count:Leader数量
– tikv_raftstore_region_count:Region数量
– tikv_rocksdb_write_bytes_total:写入字节数
– tikv_rocksdb_read_bytes_total:读取字节数
– tikv_server_grpc_msg_sent_total:GRPC消息发送总量
– tikv_server_grpc_msg_received_total:GRPC消息接收总量

## 2. 性能指标
– tikv_raftstore_propose_wait_duration_seconds:提案等待时间
– tikv_raftstore_apply_wait_duration_seconds:应用等待时间
– tikv_rocksdb_write_amp:写入放大
– tikv_rocksdb_read_amp:读取放大
– tikv_server_request_duration_seconds:请求处理时间

## 3. 资源指标
– tikv_server_memory_usage_bytes:内存使用量
– tikv_server_storage_size_bytes:存储使用量
– tikv_server_cpu_seconds_total:CPU使用时间
– tikv_server_network_io_bytes_total:网络IO总量

3.3.2 告警配置

# TiKV告警配置

## 1. 重要告警
– TiKVDown:TiKV节点宕机
– TiKVUnreachable:TiKV节点不可达
– TiKVRegionUnavailable:Region不可用
– TiKVHighCPUUsage:CPU使用率过高
– TiKVHighMemoryUsage:内存使用率过高
– TiKVHighDiskUsage:磁盘使用率过高
– TiKVSlowQuery:慢查询

## 2. 告警阈值设置
– TiKVDown:节点离线超过5分钟
– TiKVUnreachable:节点不可达超过5分钟
– TiKVRegionUnavailable:Region不可用超过1分钟
– TiKVHighCPUUsage:CPU使用率超过80%持续5分钟
– TiKVHighMemoryUsage:内存使用率超过80%持续5分钟
– TiKVHighDiskUsage:磁盘使用率超过80%持续5分钟
– TiKVSlowQuery:查询时间超过10秒

风哥提示:合理配置TiKV监控告警,及时发现和处理问题,确保集群稳定运行。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 TiKV部署实战案例

4.1.1 三节点TiKV集群部署

# 三节点TiKV集群部署

## 1. 环境准备
$ for host in tikv-1 tikv-2 tikv-3; do
ssh $host “hostnamectl set-hostname $host”
ssh $host “yum update -y”
ssh $host “yum install -y curl tar openssh-clients sudo python3”
ssh $host “systemctl stop firewalld && systemctl disable firewalld”
ssh $host “setenforce 0 && sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config”
ssh $host “mkdir -p /tidb/app /tidb/fgdata /tidb/log”
ssh $host “chown -R tidb:tidb /tidb”
ssh $host “echo ‘vm.swappiness = 0’ >> /etc/sysctl.conf”
ssh $host “echo ‘vm.overcommit_memory = 1’ >> /etc/sysctl.conf”
ssh $host “echo ‘net.core.somaxconn = 32768’ >> /etc/sysctl.conf”
ssh $host “sysctl -p”
done

## 2. 网络配置
$ cat >> /etc/hosts << EOF 192.168.1.101 pd-1 192.168.1.102 pd-2 192.168.1.103 pd-3 192.168.1.201 tikv-1 192.168.1.202 tikv-2 192.168.1.203 tikv-3 EOF ## 3. 部署TiKV集群 $ cat > tikv-topology.yaml << EOF global: user: "tidb" ssh_port: 22 deploy_dir: "/tidb/app" data_dir: "/tidb/fgdata" pd_servers: - host: 192.168.1.101 - host: 192.168.1.102 - host: 192.168.1.103 tikv_servers: - host: 192.168.1.201 - host: 192.168.1.202 - host: 192.168.1.203 EOF $ tiup cluster deploy fgedu-tidb-cluster v7.5.0 tikv-topology.yaml --user root ## 4. 启动TiKV集群 $ tiup cluster start fgedu-tidb-cluster ## 5. 验证TiKV集群 $ tiup cluster display fgedu-tidb-cluster $ tiup cluster exec fgedu-tidb-cluster -R tikv --command "curl -s http://localhost:20180/status"

4.2 TiKV优化实战案例

4.2.1 TiKV性能优化

# TiKV性能优化

## 1. 查看当前配置
$ tiup cluster config fgedu-tidb-cluster –component tikv

## 2. 修改配置
$ tiup cluster edit-config fgedu-tidb-cluster

# 在配置文件中添加或修改以下内容
server_configs:
tikv:
storage:
enable-async-io: true
async-io-threads: 4
rocksdb:
max-open-files: 4096
max-background-jobs: 8
memory:
memory-soft-limit: “24GB”
memory-hard-limit: “28GB”
server:
grpc-concurrency: 16

## 3. 应用配置变更
$ tiup cluster reload fgedu-tidb-cluster -R tikv

## 4. 验证配置
$ tiup cluster config fgedu-tidb-cluster –component tikv

## 5. 监控优化效果
$ tiup cluster dashboard fgedu-tidb-cluster
# 查看TiKV -> 性能面板

4.3 TiKV故障排查

4.3.1 TiKV节点宕机

# TiKV节点宕机

## 问题现象
– TiKV节点状态为Down
– 集群告警:TiKVDown
– 部分Region不可用

## 解决方案
1. 检查节点状态
$ ssh tikv-1 “systemctl status tikv”

2. 检查TiKV日志
$ tiup cluster logs fgedu-tidb-cluster -R tikv

3. 检查硬件状态
$ ssh tikv-1 “df -h”
$ ssh tikv-1 “free -m”
$ ssh tikv-1 “iostat -x 1 10”

4. 重启TiKV节点
$ tiup cluster start fgedu-tidb-cluster -R tikv

5. 验证节点状态
$ tiup cluster display fgedu-tidb-cluster

4.3.2 TiKV性能下降

# TiKV性能下降

## 问题现象
– 写入延迟增加
– 查询性能下降
– CPU或内存使用率过高

## 解决方案
1. 检查监控指标
$ tiup cluster dashboard fgedu-tidb-cluster
# 查看TiKV -> 性能面板

2. 检查RocksDB状态
$ tiup cluster exec fgedu-tidb-cluster -R tikv –command “curl -s http://localhost:20180/rocksdb”

3. 检查Region分布
$ tiup cluster exec fgedu-tidb-cluster -R pd –command “pd-ctl -u http://127.0.0.1:2379 region分布”

4. 检查磁盘性能
$ ssh tikv-1 “iostat -x 1 10”
$ ssh tikv-1 “fio –name=test –filename=/tidb/fgdata/tikv/test –rw=randwrite –bs=4k –size=1G –runtime=60 –ioengine=libaio –direct=1”

5. 优化配置
$ tiup cluster edit-config fgedu-tidb-cluster
# 调整相关参数
$ tiup cluster reload fgedu-tidb-cluster -R tikv

生产环境建议:定期检查TiKV状态和性能,及时发现和解决问题,确保集群性能和稳定性。from tidb视频:www.itpux.com

Part05-风哥经验总结与分享

5.1 最佳实践

TiDB TiKV组件的最佳实践:

  • 部署规划:生产环境部署3个或更多TiKV节点,确保高可用性
  • 硬件配置:使用高性能服务器,特别是存储和网络
  • 存储选择:使用NVMe SSD,提供高IOPS和低延迟
  • 配置优化:根据集群规模和工作负载调整参数
  • 监控告警:配置完善的监控和告警机制
  • 定期维护:定期检查TiKV状态和日志
  • 容量规划:合理规划存储容量,避免空间不足

5.2 性能优化技巧

# TiKV性能优化技巧

## 1. 存储优化
– 使用NVMe SSD:提高IO性能
– 合理规划存储容量:避免空间不足
– 配置适当的文件系统:ext4或xfs
– 优化磁盘挂载选项:noatime,nodiratime

## 2. 内存优化
– 分配足够的内存:至少32GB
– 设置合理的内存限制:避免OOM
– 优化RocksDB缓存:调整block-cache-size

## 3. 网络优化
– 使用万兆网络:减少网络延迟
– 优化网络参数:调整TCP参数
– 避免网络拥塞:合理规划网络流量

## 4. 配置优化
– 启用异步IO:提高IO性能
– 调整RocksDB参数:优化读写性能
– 调整并发参数:提高处理能力
– 优化压缩策略:平衡空间和性能

5.3 维护技巧

TiDB TiKV组件的维护技巧:

  • 定期检查:定期检查TiKV状态和日志
  • 备份数据:定期备份数据,确保数据安全
  • 版本升级:及时升级到最新版本
  • 参数调优:根据集群运行情况调整参数
  • 故障演练:定期进行故障演练,提高应对能力
  • 容量监控:监控存储使用情况,及时扩容
  • 性能基准:建立性能基准,及时发现性能下降
风哥提示:TiKV是TiDB的存储核心,其性能和稳定性直接影响整个集群的运行状态,需要重点关注和维护。

持续学习:TiDB的TiKV组件在不断演进,建议定期关注官方文档和社区动态,学习新的特性和最佳实践。

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

联系我们

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

微信号:itpux-com

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