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集群。