在使用He3DB前需要先部署TIKV。
TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层,为用户写入 TiDB 的数据提供了持久化以及读写服务,同时还存储了 TiDB 的统计信息数据。
这里解释一下为什么这里会用到tikv,我们知道阿里云云原生数据库PolarDB中各计算节点通过分布式文件系统PolarFS共享底层的存储,而He3DB中对应的He3FS目前还不成熟,所以这里先用tikv来存储WAL日志,所有计算节点共享WAL日志,通过这种方式临时替代He3FS。
(以下操作只需在一台机器上进行)
一、使用 TiUP 部署 TiDB 集群
TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群,以及管理 TiDB 集群参数。
1、执行如下命令安装 TiUP 工具:
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2、按如下步骤设置 TiUP 环境变量:
- 重新声明全局环境变量:
根据上一步中Shell profile的值输入命令
source /root/.bashrc
- 确认 TiUP 工具是否安装:
which tiup
3、安装 TiUP cluster 组件:
tiup cluster
4、如果已经安装,则更新 TiUP cluster 组件至最新版本:
tiup update --self && tiup update cluster
预期输出 “Update successfully!”
字样。
5、验证当前 TiUP cluster 版本信息。执行如下命令查看 TiUP cluster 组件版本:
tiup --binary cluster
二、配置TIKV
1、创建tikv的安装用户he3db
adduser he3db
2、创建topo.yaml文件,重点配置tikv-servers
进入/home/he3db目录下:
cd /home/he3db
创建topo.yaml文件,输入以下内容:
vi topo.yaml
global:
user: "he3db"
ssh_port: 22
deploy_dir: "/data1/nvmetest/tidb-deploy"
data_dir: "/data1/nvmetest/tidb-data"
monitored:
node_exporter_port: 9190
blackbox_exporter_port: 9195
server_configs:
tikv:
raftstore.sync-log: true
raftstore.raft-entry-max-size: "32MB"
storage.reserve-space: "0"
storage.block-cache.capacity: "7G"
server.grpc-concurrency: 48
server.grpc-concurrent-stream: 4096
server.grpc-stream-initial-window-size: "32M"
storage.scheduler-concurrency: 1048576
storage.scheduler-worker-pool-size: 3
rocksdb.titan.enabled: true
rocksdb.defaultcf.write-buffer-size: "512MB"
rocksdb.defaultcf.max-write-buffer-number: 64
rocksdb.max-background-jobs: 32
rocksdb.defaultcf.block-cache-size: "16GB"
rocksdb.defaultcf.compression-per-level: [
'zstd',
'zstd',
'lz4',
'lz4',
'lz4',
'lz4',
'lz4',
]
pd:
replication.location-labels: ["host"]
replication.max-replicas: 1
pd_servers:
- host: 192.168.0.51
- host: 192.168.0.103
- host: 192.168.0.225
tikv_servers:
- host: 192.168.0.51
port: 20160
status_port: 20180
deploy_dir: "/data1/nvmetest/deploy/tikv"
data_dir: "/data1/nvmetest/data/tikv"
log_dir: "/data1/nvmetest/log/tikv"
config:
server.labels: { host: "tikv-host-1" }
- host: 192.168.0.103
port: 20160
status_port: 20180
deploy_dir: "/data1/nvmetest1/deploy/tikv"
data_dir: "/data1/nvmetest1/data/tikv"
log_dir: "/data1/nvmetest1/log/tikv"
config:
server.labels: { host: "tikv-host-2" }
- host: 192.168.0.225
port: 20160
status_port: 20180
deploy_dir: "/data1/nvmetest2/deploy/tikv"
data_dir: "/data1/nvmetest2/data/tikv"
log_dir: "/data1/nvmetest2/log/tikv"
config:
server.labels: { host: "tikv-host-3" }
3、创建机器间互信,本地也需要配置
- 创建公钥和密钥:
ssh-keygen -t rsa
- 把本地的公钥复制到远程主机的authorized_keys文件(不会覆盖文件,是追加到文件末尾),并且会设置远程主机用户目录的.ssh和.ssh/authorized_keys权限
ssh-copy-id -i /root/.ssh/id_rsa.pub root@140.210.210.194
.ssh/id_rsa.pub的位置在上一步中控制台已打印出来:
验证一下是否能ssh远程主机,密码为远程机器root用户的登录密码:
ssh root@140.210.210.194
4、集群部署
在he3db目录下输入以下命令:
tiup cluster deploy he3-tikv v7.1.1 ./topo.yaml -u root -p
密码为集群机器root用户的登录密码
看到successfully即表示集群部署完成。
5、启动集群
使用如下命令启动集群:
tiup cluster start he3-tikv --init
完成后记住TIDB的密码。
至此TIKV服务部署完成。
可用以下命令查看集群状态:
tiup cluster list
tiup cluster display he3-tikv
6、创建postgres用户,添加环境变量
adduser postgres
su postgres
vim ~/.bashrc
export PDADDR="192.168.0.103:2379,192.168.0.225:2379,192.168.0.51:2379"