br实现大数据量的tidb机房迁移

server/2024/10/23 23:12:11/

要进行tidb机房迁移,机房在不同的洲,网络延迟较高,需要新建集群导数据迁移。因此使用br迁移。

1、数据量有8张表。有2张大表,有接近6T数据。其余6张表共有1T数据。

2、网络带宽每秒传输数据30M 每秒。

首先使用这个sql统计每张表大小。

select  table_schema,table_name,TABLE_SIZE/1000 from INFORMATION_SCHEMA.TABLE_STORAGE_STATS where table_schema='库名'  and table_name='表名';

最后,尝试了多种方案,迁移数据速度都太慢了,想要实现一天迁移完成数据,

形成了2种比较快的方案配合实现了迁移。

1、6张表共有1T数据用dumpling和lightning迁移数据。

2、2张大表共有6T数据用BR进行数据迁移。

安装软件

使用这个命令安装:

TiDB 工具下载 | PingCAP 归档文档站

wget "https://download.pingcap.org/tidb-toolkit-{version}-linux-amd64.tar.gz"

wget "https://download.pingcap.org/tidb-toolkit-v5.0.3-linux-amd64.tar.gz"

一、用dumpling和lightning迁移数据

1、在原机房dumpling导出数据:

./dumpling -uroot -P 4000 -p 'jinfan' -h 10.31.1.1 --filetype sql -t 8 -o /data1/tidb_backupdata/  -r 10000000 -F 256MiB -B ff_test  -T ff_test.
test01,ff_test.test02

备注:按表导出时,表名用逗号隔开。

2、传输数据

压缩:

压缩的线程30,对cpu消耗比较大。

tar -cf - tidb_backupdata | pigz -p 30 > tidb_backupdata.tar.gz

传输

解压:

解压线程30,对cpu消耗比较大。

pigz -p 30  -d tidb_backupdata.tar.gz

tar -xf tidb_backupdata.tar.gz

3、在新机房导入数据:

配置:

tidb-lightning -config tidb-lightning.toml 

[lightning]

# 转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。
# 混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。
# region-concurrency =

# 日志
level = "info"
file = "tidb-lightning.log"

[tikv-importer]
# backend 设置为 tidb 模式
backend = "tidb"
 

[mydumper]
# 源数据目录。
data-source-dir = "/data3/tidb_backupdata/"

[tidb]
# 目标集群的信息。tidb-server 的监听地址,填一个即可。
host = "10.31.40.59"
port = 4004
user = "root"
password = "xxxxxxxxx"
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10083
# pd-server 的地址,填一个即可
pd-addr = "10.31.40.32:2385"

二、用br迁移数据

br恢复数据报错:

ERROR] [restore.go:35] ["failed to restore"] [error="No such file or directory (os error 2): [BR:KV:ErrKVDownloadFailed]download sst failed; No such file or directory (os error 2): [BR:KV:ErrKVDownloadFailed]download sst failed; No such file or directory (os error 2):

上面的报错原因,就是恢复原理没有搞清楚,在恢复时,需要在本地读取数据,因此恢复数据时也要挂载。

1 使用br迁移导出数据时,需要进行nfs挂载到老集群所有的tikv节点;

2 使用br迁移导入数据时,需要进行nfs挂载到新集群所有的tikv节点。

需要指出的是

1 、br导出的数据是单副本的数据,因此数据量是1/3

2、br导出的数据是压缩后的数据,因此数据量是很小。

因此:br导出的数据不需要很大的磁盘,但是iops需要很高,需要ssd磁盘。

1、在原机房nfs挂载

1、server端安装

yum -y install nfs-utils rpcbind

2、编辑配置文件

vim /etc/exports 写入如下内容 /data/nfs 10.111.111.0/23(rw,sync,no_root_squash) #/data/nfs 为共享目录 #ip地址是共享的范围

3.再次修改后,执行exportfs -rv 让配置立即生效

启动server端,启动顺序是rpcbind->nfs:

systemctl start rpcbind.service

systemctl enable rpcbind.service

systemctl start nfs.service

systemctl enable nfs.service

4.查看挂载:

showmount -e server_ip

client 安装

yum install -y nfs-utils rpcbind

启动client

systemctl start rpcbind

systemctl enable rpcbind

挂载

直接(临时)挂载

mkdir /remote 

mount -o rw -t nfs 10.111.111.111:/data1/nfs   /remote

永久挂载(重启后自动挂载)

vim /etc/fstab

写入如下内容: 10.240.82.190:/data1/nfs /remote nfs defaults,_netdev 0 0

加载fstab配置立即生效生效

mount -a

注意:nfs挂载,server和client 用tidb用户导出数据,但是tidb用户在server和client 端,uid和gid可能不一致,导致client没有写入的权限,导致报错。因此解决方案,给server和client端的挂载目录都要给777的权限

2.使用br导出数据。

./br backup table \
    --pd "10.21.17.35:2379" \
    --db ff_test \
    --table ff_test.test01 \
    --storage "local:///remote/milktea_tidb/$cur_date" \
    --ratelimit 60 \
    --check-requirements=false \
    --log-file ${bak_dir}/backup_log/${cur_date}_backuptable.log

备注:--ratelimit 60限制速度,可以减少对原实例影响。

3、压缩传输解压,参考上面

4、恢复数据

./br restore table \
    --pd "10.31.40.32:2385" \
    --db "ff_test" \
    --table "test01" \
    --storage "local:///remote/test_tidb/20241017" \
    --log-file restorefull.log    

注意:如果是空库,不要限制速度,--ratelimit 128 。这个速度是每个tikv的恢复速度,因此,不限制的话,速度很快,达到了节约时间的目的。


http://www.ppmy.cn/server/134283.html

相关文章

还在使用对象吗?发现 JS/TS 中 Map() 改变游戏规则的力量

在JavaScript和TypeScript开发中,对象(Object)长期以来一直是处理键值对集合的首选方式。然而,随着语言的发展,Map对象的引入为开发者提供了一个更为强大和灵活的选择。本文将深入探讨Map的优势、使用场景,…

springboot037基于SpringBoot的墙绘产品展示交易平台的设计与实现(论文+源码)_kaic

毕 业 设 计(论 文) 题目:墙绘产品展示交易平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本墙绘产品展示…

Unity发送Http

本篇实现在Unity中发送Http请求。 讲解Get,Post,用于在Unity中进行数据对接。 一、Get IEnumerator Get() {string url "";//链接UnityWebRequest request UnityWebRequest.Get(url);//创建UnityWebRequest实例并设置请求方式为Getyield …

AI 3D拣选系统行业分析:物流行业是最主要的需求来源

AI 3D拣选系统是一种集成了先进传感技术、机器人技术和计算机视觉技术的自动化分拣解决方案。它能够在三维空间内快速、准确地识别和分拣各种形状、大小和材质的物品,大大提高了物流效率和准确性。该系统通过高精度的3D传感器和先进的视觉算法,能够实时捕…

数据结构《顺序表》

文章目录 前言一、什么是顺序表?1.1 顺序表的概念1.2 顺序表的建立 二、MyArrayList的实现三、顺序表的方法四、关于顺序表的例子总结 前言 提示:这里涉及到的ArrayList类是一个泛型类,同时后面的很多内容都会涉及到泛型,如果不了…

Go 项目如何集成类似mybatisPlus插件呢?GORM走起!!

导读: 在 Go 项目中,虽然没有像 MyBatis Plus 这样特定的 ORM 插件,但可以使用功能相似的 Go ORM 框架,比如 GORM,它支持链式查询、自动迁移、预加载等功能,与 MyBatis Plus 有相似之处。通过一些插件或扩…

深信服超融合HCI6.8.0R2滚动热升级至HCI6.9.1

PS:滚动热升级没有业务影响,集群内主机逐台升级,会自动迁移运行中的虚拟机至其他主机; 整体巡检加上升级完成大概要三个小时的时间。如果在升级过程中,有跨集群迁移的任务,需要先停掉,不然无法…

软考机考系统架构师论文如何高效画图?

在软考机考系统架构设计师的论文中,画图是提升论文表达效果和理解程度的重要手段。以下详细阐述了如何在论文中画图以及论文机考时需要注意的事项: 一、论文中画图的方法 明确画图目的 在开始画图之前,首要任务是明确画图的目的。这是为了…