写点什么

TiDB 集群跨平台在线迁移方案(离线环境下从 x86 节点迁移到 arm64 节点)

  • 2022 年 7 月 11 日
  • 本文字数:2502 字

    阅读完需:约 8 分钟

作者: pepezzzz 原文来源:https://tidb.net/blog/65522d06

背景

TiDB 集群具备跨平台架构的部署和扩缩容能力,能实现在业务在线的情况下完成整个集群的跨平台架构迁移。本文将详细介绍如何实现,以及如何在离线环境下从 x86 节点迁移到 arm64 节点。

迁移步骤

1、数据备份

进行集群的数据备份。

2、下载 & 合并镜像目录

官网下载页面(https://pingcap.com/zh/product-community/)下载后合并镜像目录。Arm 64 架构包需要额外下载。


$tar xf tidb-community-server-v5.1.1-linux-arm64.tar.gz$tar xf tidb-community-server-v5.1.1-linux-amd64.tar.gz$cd  tidb-community-server-v5.1.1-linux-amd64$cp -rp keys ~/.tiup/$tiup mirror merge ../tidb-community-server-v5.1.1-linux-arm64
复制代码

3、迁移 TiUP 节点

a. 目录 tiup 节点已经添加 tidb 用户


b. 复制镜像目录(x86 和 arm64 离线合体目录)到目标节点。因为涉及到跨平台,只迁移集群元数据,打包管理用户的 .tiup 下的 clusters 目录到目标节点。同构节点间 tiup 迁移可以复制整个 .tiup 目录。


$tiup mirror show$scp -rp tidb-community-xxx tidb@tiup-IP:/home/tidb/$cd .tiup/storage/cluster/$tar cvf clusters.tar clusters$scp clusters.tar tidb@tiup-IP:/home/tidb/
复制代码


c. 在目标节点安装 tiup


$cd tidb-community-xxx$ls tiup-*-linux-arm64.tar.gz$./local_install.sh
复制代码


d. 目标节点解压集群配置


$cd ~$tar -C .tiup/storage/cluster/ -xvf clusters.tar
复制代码


e. 目标节点使用 tiup cluster display 验证管理能力。


$tiup cluster list$tiup cluster display <cluster-name>
复制代码


f. 原有节点备份后删除 .tiup 目录,防止后期的误操作。


$tar cvf tiup.tar .tiup$rm -rf .tiup
复制代码

4、迁移 prometheus 监控节点

a. 使用扩容方式添加新的 arm64 prometheus 监控节点。


$vi monitor.yaml$tiup cluster scale-out monitor.yaml
复制代码


monitoring_servers:- host: 172.16.6.177  ssh_port: 22  port: 9090  deploy_dir: /tidb-deploy/prometheus-9090  data_dir: /tidb-data/prometheus-9090  log_dir: /tidb-deploy/prometheus-9090/log  arch: aarch64  os: linux
复制代码


b. 将原来的监控数据目录复制到新的监控节点。


# ps -ef |grep tsdb.path #找到 storage.tsdb.pathtidb     12804     1  3 Oct23 ?        03:27:15 bin/prometheus/prometheus --config.file=/tidb-deploy/prometheus-9090/conf/prometheus.yml --web.listen-address=:9090 --web.external-url=http://172.16.6.177:9090/ --web.enable-admin-api --log.level=info --storage.tsdb.path=/tidb-data/prometheus-9090 --storage.tsdb.retention=30d$cd /tidb-data/prometheus-9090$ls -l #选择需要的天数目录(默认按天创建的目录,可以通过目录内的文件修改时间来确定时期范围)$tar -cvzf prometheus9090.tar.gz 01E1VVCJDV9F6MVW1XQ0NB0KRA 01E1SXK95Y7TC24KMQGFCE789J$scp prometheus9090.tar.gz tidb@prometheus-IP:/tidb-data/prometheus-9090
复制代码


c. 在新的监控节点内解压。


$cd /tidb-data/prometheus-9090 $tar xvf prometheus9090.tar.gz
复制代码


d. 使用浏览器验证监控数据的时间长度后,使用缩容方式销毁原来的 prometheus 节点。


$tiup cluster edit-config <cluster-name> #调整 prometheus 的顺序,把 aarch64 的新节点放到第一个$tiup cluster reload <cluster-name> -R grafana # 访问 grafana 确认历史数据可用后进行缩容操作$tiup cluster scale-in <cluster-name> -N prometheus-IP:port
复制代码

5、添加监控节点

使用缩容和扩容方式添加新的 arm64 grafana alertmanager 监控节点。


$vi grafana.yaml$tiup cluster scale-out <cluster-name>  grafana.yaml
复制代码


grafana_servers:- host: 172.16.6.177  ssh_port: 22  port: 3000  deploy_dir: /tidb-deploy/grafana-3000  arch: aarch64  os: linuxalertmanager_servers:- host: 172.16.6.177  ssh_port: 22  web_port: 9093  cluster_port: 9094  deploy_dir: /tidb-deploy/alertmanager-9093  data_dir: /tidb-data/alertmanager-9093  log_dir: /tidb-deploy/alertmanager-9093/log  arch: aarch64  os: linux
复制代码

6、迁移 PD 节点

$vi pd.yaml$tiup cluster scale-out <cluster-name>  pd.yaml$tiup ctl:v5.1.1 pd -u pd-IP1:2379 -i>member show # 确认节点已经添加>member leader transfer ARM的<pd-name> >member leader show # 确认 Leader 已经切换到 ARM 节点$tiup cluster scale-in <cluster-name> -N pd-IP1:2379 #逐步下线 PD,一次只操作一个。$tiup cluster scale-in <cluster-name> -N pd-IP2:2379$tiup cluster scale-in <cluster-name> -N pd-IP3:2379$tiup cluster display$tiup ctl:v5.1.1 pd -u pd-IP1:2379 -i>member show # 确认节点状态正确
复制代码

7、迁移 TIKV 节点

$vi tikv.yaml$tiup cluster scale-out <cluster-name> tikv.yaml查看监控面板的 region 变化,业务已经停止,可以调大调度参数加快速度$tiup ctl:v5.1.1 pd -u pd-IP1:2379 store limit all 1000$tiup cluster scale-in <cluster-name> -N tikv-IP1:20160,tikv-IP2:20160,tikv-IP3:20160完成后恢复调度参数$tiup ctl:v5.1.1 pd store limit all 20
复制代码

8、扩展 TiDB 节点

完全调整完成后再缩容,减少协调业务的次数


$vi tidb.yaml$tiup cluster scale-out <cluster-name> tidb.yaml
复制代码

9、缩容 TiDB 节点

确认所有组件都迁移完成后,配合负载均衡设备调整,将原 tidb-server 下线。


$tiup cluster scale-in <cluster-name> -N tidb-IP1:4000,tidb-IP2:4000
复制代码

注意事项

  1. 跨平台架构仅建议在扩缩容期间运行,不建议长期运行。

  2. 需要注意对有状态组件的操作保护。

  3. 操作前应该使用 br 完成全量数据备份。

  4. tiup 的元数据目录和监控数据的备份还原。

  5. 操作 pd 节点时,单次只操作一个。

  6. 节点操作的 yaml 文件需要对各节点标明 arch,如:amd64 或 arm64,aarch64 与 arm64 等同。

  7. 建议每个收缩节点的步骤完成后,都手工操作 tiup cluster prune 真正地清除节点。

  8. 在离线场景下,由于离线下载包分平台的设计,需要准备离线包的目录合并。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB 集群跨平台在线迁移方案(离线环境下从 x86 节点迁移到 arm64 节点)_管理与运维_TiDB 社区干货传送门_InfoQ写作社区