掌握TiUP工具 之 离线部署TiDB集群




  • TiDB数据库

       传统的单机数据库在移动互联网、云计算、大数据和人工智能等场景下表现的力不从心,为了解决数据平台的扩展性的问题,TiDB 分布式数据库应运而生。TiDB 是当今开源 NewSQL 数据库领域的代表产品之一。

    TiDB采用分布式数据库架构,因此服务器数量比较多。在部署TiDB集群时,我们使用TiUP工具来安装整个TiDB集群环境。 从 TiDB 4.0 版本开始,TiUP 作为新的工具,承担着包管理器的角色,管理着 TiDB 生态下众多的组件,如 TiDB、PD、TiKV 等。用户想要运行 TiDB 生态中任何组件时,只需要执行 TiUP 一行命令即可,相比以前,极大地降低了管理难度。

    默认情况下TiUP工具会联网进行工具包的下载和安装,但生产环境往往都是内网环境,无法连接外网进行下载。这种情况下,我们可以选择离线的部署方法。本文以 TiDB 5.0 的版本为基础,详细介绍使用TiUP工具离线部署 TiDB 集群的过程。

    第一步、联网下载TiUP包管理器

      使用可以联网的主机,下载并安装 TiUP 包管理器工具。命令如下:

    curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

    图片

    第二步、声明全局环境变量

    声明全局环境变量,命令如下:

    source /root/.bash_profile

    执行过程如下:

    图片

    第三步、通过TiUP工具下载所有工具的离线安装包

      使用 tiup list tidb 命令可以看到所有tidb的版本,我们可以在其中选择需要下载的版本。命令如下:

    tiup list tidb

    图片

      然后通过tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64

    命令进行安装。其中${version}需要替换成对应的TiDB版本,命令如下:

    tiup mirror clone tidb-community-server-v5.2.1-linux-amd64 v5.2.1 --os=linux --arch=amd64

      我们将前两个命令组合在一起,就得到了下载最新版本安装包的命令,命令如下:

    version=`tiup list tidb|sort -r |head -n 2|tail -n 1|awk '{print $1};'` && \

    tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64

    执行过程如下:

    图片

    需要注意的是,在下载过程中,可能会由于网络问题导致某个工具包下载失败,此时TiUP工具会再次尝试下载,如果最终无法下载完成,TiUP工具会结束并退出。我们依旧可以重复TiUP命令来反复尝试下载。开始下载过程时,会生成tidb-community-server-v5.2.1-linux-amd64的目录。

    另一种方法,通过wget或者curl工具独立手工下载工具包,然后放入tidb-community-server-v5.2.1-linux-amd64目录中。TiUP工具在下载过程中,在目录中会出现_tmp开头的临时目录,需要手动将这些临时目录删除掉。截图如下:

    图片

    第四步、使用tar命令打包并传输

      通过 tar 命令将该组件包打包然后发送到隔离环境的中控机(传输tar包过程可以自行选择方法),命令如下:

    tar czvf tidb-community-server-v5.2.1-linux-amd64.tar.gz tidb-community-server-v5.2.1-linux-amd64

    执行过程如下:

    图片

    第五步、离线安装TiUP组件

      将离线包发送到目标集群的中控机后,执行以下命令离线安装 TiUP 组件:

    tar xzvf tidb-community-server-v5.2.1-linux-amd64.tar.gz && \

    sh tidb-community-server-v5.2.1-linux-amd64/local_install.sh && \

    source /root/.bash_profile

    执行过程如下:

    图片

    第六步、编辑集群初始化配置文件

      请根据不同的集群拓扑,编辑 TiUP 所需的集群初始化配置文件。首先生成集群初始化配置模版,命令如下:

    tiup cluster template > topology.yaml

    执行过程如下:

    图片

    编辑 TiUP 所需的集群初始化配置文件,命令如下:

    vi topology.yaml

    执行过程如下:

    图片

    第七步、检查和修复集群风险

      先使用 check 命令来检查集群存在的潜在风险,命令如下:

    tiup cluster check ./topology.yaml --user root -p

    执行过程如下:

    图片

    图片

      检查结果为Fail的内容,表面存在的风险。进一步运行check --apply 命令,自动修复集群存在的潜在风险,如果自动无法修复,还需要手工来修复风险。命令如下:

    tiup cluster check ./topology.yaml --apply --user root -p

    执行过程如下:

    图片

    图片

    修复完成后,再次执行check命令进行二次检查,最终结果状态均应该为Pass(本步骤命令参考上文)。在本文的附录部分,列举了一些可能的风险和解决方法。

    第八步、部署TiDB集群

      执行 deploy 命令部署 TiDB 集群,集群名称使用sandata,命令如下:

    tiup cluster deploy sandata v5.2.1 ./topology.yaml --user root -p

    执行过程如下:

    图片

    第九步、查看集群状态

      TiDB集群部署完成后,默认是关闭状态,通过查看集群状态可以进行确认,命令如下:

    tiup cluster display sandata

    执行过程如下:

    图片

    第十步、启动TiDB集群

    最终的目标就是启动TiDB集群,命令如下:

    tiup cluster start sandata

    执行过程如下:

    图片

    第十一步、确认集群已经启动

       再次检查部署的 TiDB 集群情况,确认最终的启动状态为Up,命令如下:

    tiup cluster display sandata

    执行过程如下:

    图片

    附录1:解决numactl not usable, bash: numactl: command not found

      使用yum来安装numactl工具,命令如下:

    yum -y install numactl

    附录2:解决mount point / does not have 'nodelalloc' option set和

    mount point / does not have 'noatime' option set

      编辑/etc/fstab文件,增加nodelalloc和noatime的配置,配置如下:

    图片

    附录3:解决THP is enabled, please disable it for best performance

    编辑 /etc/rc.d/rc.local 文件,增加下面的内容,命令如下:

    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

     echo never > /sys/kernel/mm/transparent_hugepage/enabled

     fi

     if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

     echo never > /sys/kernel/mm/transparent_hugepage/defrag

     fi

    执行过程如下:

    图片

    增加文件执行权限,命令如下:

    chmod +x /etc/rc.d/rc.local

    最后重启主机,让所有配置生效。

    总结

       相对于TiUP在线部署,本文介绍的这种离线部署方法更适合在内网生产环境中部署TiDB集群。通过TiUP工具,我们可以很轻松的部署,管理TiDB集群。

    Speak Your Mind

    *