传统的单机数据库在移动互联网、云计算、大数据和人工智能等场景下表现的力不从心,为了解决数据平台的扩展性的问题,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 组件:
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集群,命令如下:
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集群。