tidb 扩容tikv咨询

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:3.0.8
  • 【问题描述】:

你好,我扩容前,集群结构如下:

image

现在计划把每个tikv服务器上增加一个tikv实例,即每台tikv服务器,部署两个tikv节点

扩容前后的inventory.in文件见压缩包

inventory.ini.tar.gz (1.1 KB)

安装官网文档,执行了

ansible-playbook bootstrap.yml -l 10.8.48.203,10.8.48.204,10.8.48.205

ansible-playbook deploy.yml -l 10.8.48.203,10.8.48.204,10.8.48.205

发现tikv服务器上的/data/deploy目录下没有任何文件,执行上述命令没有任何报错信息扩容命令及结果.txt (47.7 KB)

请帮忙看下,是什么情况,谢谢。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

是这样,如果是单机多实例在部署时,在配置文件中指定了实例的别名,那么在配置时,需要指定别名来进行部署,并且建议使用单独的部署目录,示例如下:

1、指定单独的部署目录

TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy tikv_port=20171 tikv_status_port=20181 labels="host=tikv1"

2、部署或者启动单个 tikv 节点,参考命令如下:

ansible-playbook bootstrap.yml --tags=tikv -l TiKV1-1

那请问,我的tikv1-1其实就是之前的ip地址,那么tikv1-1还需重新部署吗,如果不需要重新部署,系统能不能自动把它从ip识别为别名呢

别名和实际的 ip 地址是两件事情,多实例混部后,要操作该服务器上的某个服务,则需要指定别名,因为同一个 ip 上的多个服务,无法辨别是什么类型的服务。

你可以看我新的inventory.ini里面已经没有ip方式了,需要怎么操作,才能把之前的ip方式,调整成tikv*-1的方式呢,然后再增加tikv*-2服务

没有明白你的问题的点是什么?烦请详细说明。多实例混部请仔细阅读官网下述连接:

之前我的tikv组成方式,是三个服务器IP : 10.8.48.203,10.8.48.204,10.8.48.205

现在需要做的步骤: 1 把三个IP方式,变更为使用别名tikv1-1\tikv2-1\tikv3-1

2 再在每个服务器上面增加一个tikv实例:tikv1-2 \ tikv2-2\ tikv3-2

操作完成后,想达到的效果,是三个tikv服务器,上面各自运行两个tikv实例,最终达到扩容tikv的目的

1、配置文件中的 ini 文件是启动和配置时候通过别名来区分服务类型,和服务本身没有直接关系

2、配置单机多实例部署,需要使用单独的 deploy 目录

这是我新修改的ini文件,里面是设置了多个deploy目录的

inventory.ini (2.8 KB)

1、好的,在启动和部署时请指定别名,参考命令如下:

ansible-playbook bootstrap.yml --tags=tikv -l TiKV1-1

2、在指定别名 bootstrap 和 deploy 遇到问题,请继续跟帖

你好, 我执行下面的命令

ansible-playbook bootstrap.yml -l tikv1-1,tikv1-2,tikv2-1,tikv2-2,tikv3-1,tikv3-2

ansible-playbook deploy.yml -l tikv1-1,tikv1-2,tikv2-1,tikv2-2,tikv3-1,tikv3-2

并没有在/data/deploy目录中,有新文件产生,但是在/etc/systemd/system目录下,已经有了新的启动文件

再执行命令

ansible-playbook start.yml -l tikv1-1,tikv1-2,tikv2-1,tikv2-2,tikv3-1,tikv3-2

最终报错如下

1、首先,先确认下这个现象:tikv1-1 、tikv2-1、 tikv3-1 是已有的 tikv 实例,tikv1-2 、tikv2-2、tikv3-2 是新增的实例

2、现在是新增的 tikv 实例 tikv1-2 、tikv2-2、tikv3-2 的部署目录是 /data/deploy ,但是在 deploy 后,该目录下没有生成相应的文件,但是在操作系统已经出现了相应的 service。

3、在 start 时,最终的报错是原来已有的 tikv实例 tikv1-1,tikv2-1 以及 tikv3-1 的端口没有启动

建议:

1、确认下 /data/deploy 目录的权限情况

2、只部署新增实例,不加已部署的 tikv 实例,示例命令如下:

ansible-playbook deploy.yml -l tikv1-2,tikv2-2,tikv3-2
ansible-playbook start.yml -l tikv1-2,tikv2-2,tikv3-2

3、执行完上述命令后,请提供下 deploy 的 ansible 日志

你好,情况如你所说。

1、确认下 /data/deploy 目录的权限情况

3、执行完上述命令后,请提供下 deploy 的 ansible 日志

日志ansible.log (51.9 KB)

操作完成后,/data/deploy目录下仍然没有任何文件

看下这个 /date/deploy 下面没有生成文件吗?

确实看错目录了,我按照官网文档https://pingcap.com/docs-cn/stable/how-to/scale/with-ansible/,重新卸载了节点tikv1-2,tikv2-2,tikv3-2

然后再扩容到/data目录下,新的ini配置文件inventory.ini (2.8 KB)

执行下面的命令正常

ansible-playbook deploy.yml -l tikv1-2,tikv2-2,tikv3-2

再执行

ansible-playbook start.yml -l tikv1-2,tikv2-2,tikv3-2

一直卡在下面这个界面

查看tikv1-2的tikv.log,一直出现下面的错误信息

请问该如何处理呢,看日志中,节点已经是offline状态呢

之前扩容的 tikv 节点信息已经在 pd 中存在的,新扩容的 tikv 节点,需要更改一下 tikv 端口,可以更改下 tikv_port 重新部署一下

请问,如何把这些信息,从pd中清除呢,好像修改了端口,deploy的目录也要改变,才行呢

pd 中是以 ip+port 方式唯一标识一个 tikv 实例,所以更改端口之后就可以,deploy 目录如果被清空了,可以重复部署的