
pingcap/tikv!tikv_logo
TiKV 是一个开源、分布式、事务性的键值数据库。与其他传统 NoSQL 系统不同,TiKV 不仅提供经典的键值 API,还提供符合 ACID 标准的事务 API。TiKV 采用 Rust 语言开发,并由 Raft 协议提供支持,最初由 PingCAP 创建,用于补充 TiDB——一个兼容 MySQL 协议的分布式 HTAP 数据库。
TiKV("Ti" 代表钛)的设计灵感来源于 Google 的一些优秀分布式系统,如 BigTable、Spanner 和 Percolator,以及近年来学术界的一些最新成果,如 Raft 共识算法。
TiKV 是 Cloud Native Computing Foundation (CNCF) 的毕业项目。
!cncf_logo
TiKV 通过 Rust 实现的 Raft 共识算法以及存储在 RocksDB 中的共识状态,保证了数据一致性。引入的 Placement Driver (PD) 实现了自动分片,支持数据自动迁移。事务模型借鉴了 Google 的 Percolator 并进行了一些性能改进。TiKV 还提供快照隔离 (SI)、带锁的快照隔离(SQL: SELECT ... FOR UPDATE)以及分布式事务中的外部一致性读写。
TiKV 适用于需要高可用性、强一致性和水平扩展能力的分布式存储场景,主要包括:
!The TiKV software stack
当节点启动时,Node、Store 和 Region 的元数据被记录到 PD 中。每个 Region 和 Store 的状态定期报告给 PD。
使用 TiDB 尝试 TiKV 最快的方法是使用 TiUP,这是 TiDB 的组件管理器。
详细步骤请参见 官方文档。
TiKV 能够与 PD 一起单独运行,这是最小化部署要求。
bash$ export TIKV_VERSION=v7.5.0 $ export GOOS=darwin # 仅支持 {darwin, linux} $ export GOARCH=amd64 # 仅支持 {amd64, arm64} $ curl -O [***] $ curl -O [***] $ tar -xzf tikv-$TIKV_VERSION-$GOOS-$GOARCH.tar.gz $ tar -xzf pd-$TIKV_VERSION-$GOOS-$GOARCH.tar.gz
bash$ ./pd-server --name=pd --data-dir=/tmp/pd/data --client-urls="[***]" --peer-urls="[***]" --initial-cluster="pd=[***]" --log-file=/tmp/pd/log/pd.log
bash$ ./tikv-server --pd-endpoints="127.0.0.1:2379" --addr="127.0.0.1:20160" --data-dir=/tmp/tikv/data --log-file=/tmp/tikv/log/tikv.log
bash$ pip3 install -i [***] tikv-client
pythonfrom tikv_client import RawClient client = RawClient.connect("127.0.0.1:2379") client.put(b'foo', b'bar') print(client.get(b'foo')) # b'bar' client.put(b'foo', b'baz') print(client.get(b'foo')) # b'baz'
bash# 启动 PD 容器 docker run -d --name pd -p 2379:2379 -p 2380:2380 pingcap/pd:latest \ --name=pd \ --data-dir=/data \ --client-urls="[***]" \ --peer-urls="[***]" \ --initial-cluster="pd=[***]" # 启动 TiKV 容器 docker run -d --name tikv -p 20160:20160 --link pd:pd pingcap/tikv:latest \ --pd-endpoints="pd:2379" \ --addr="0.0.0.0:20160" \ --data-dir=/data
创建 docker-compose.yml 文件:
yamlversion: '3' services: pd: image: pingcap/pd:latest ports: - "2379:2379" - "2380:2380" volumes: - ./pd/data:/data - ./pd/log:/log command: - --name=pd - --data-dir=/data - --client-urls=[***] - --peer-urls=[***] - --initial-cluster=pd=[***] - --log-file=/log/pd.log tikv: image: pingcap/tikv:latest ports: - "20160:20160" volumes: - ./tikv/data:/data - ./tikv/log:/log command: - --pd-endpoints=pd:2379 - --addr=0.0.0.0:20160 - --data-dir=/data - --log-file=/log/tikv.log depends_on: - pd
启动服务:
bashdocker-compose up -d
| 参数 | 描述 | 默认值 |
|---|---|---|
| --name | PD 实例名称 | pd |
| --data-dir | 数据存储目录 | /data |
| --client-urls | 客户端服务地址 | [***] |
| --peer-urls | 节点间通信地址 | [***] |
| --initial-cluster | 初始集群配置 | pd=[***] |
| --log-file | 日志文件路径 | - |
| 参数 | 描述 | 默认值 |
|---|---|---|
| --pd-endpoints | PD 服务地址列表 | [***] |
| --addr | TiKV 服务地址 | 0.0.0.0:20160 |
| --data-dir | 数据存储目录 | /data |
| --log-file | 日志文件路径 | - |
| --capacity | 存储容量限制 (GB) | 0 (无限制) |
| --config | 配置文件路径 | - |
如欲尝试 Go 客户端,请参见 Go Client 文档。
第三方安全审计由 Cure53 执行。完整报告参见 Security-Audit.pdf。
如要报告安全漏洞,请发送电子邮件至 TiKV-security 组。
有关 TiKV 项目遵循的流程和政策,请参见 安全文档。
加入 TiKV 社区 Slack - 注册并加入您感兴趣的 TiKV 主题频道。
TiKV 使用 Apache 2.0 许可证。详情参见 LICENSE 文件。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务