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

news2024/10/24 1:35:36

要进行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.coloradmin.cn/o/2222018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第497题非重叠矩形中的随机点

题目: 题解: type Solution struct {rects [][]intsum []int }func Constructor(rects [][]int) Solution {sum : make([]int, len(rects)1)for i, r : range rects {a, b, x, y : r[0], r[1], r[2], r[3]sum[i1] sum[i] (x-a1)*(y-b1)}return Sol…

SpringBoot项目ES6.8升级ES7.4.0

SpringBoot项目ES6.8.15 升级到 ES7.4.0 前言 由于公司内部资产统一整理,并且公司内部部署有多个版本的es集群,所以有必要将目前负责项目的ES集群升级到公司同一版本7.4.0。es6到es7的升级变化还是挺大的,因此在这里做一下简单记录&#xf…

从新手到高手:map和set的使用技巧全攻略(C++)

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 前言: 本章节讲解的map和set底层…

C++新基础类型(C++11~C++20)

本文章记录C11~C20的新基础类型。 1.整数类型long long long long类型是C11引入的。在C标准中规定,long long是一个至少为64位的整数类型。可以使用LL和ULL字面量后缀进行初始化。格式化打印时分别用%lld和%llu。 long long x 12345LL; unsigned long long y 4…

简单的windows java -jar 无法启动jar包解决方法

简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心,我们本地使用idea 进行服务配置以及启动发现没有问题,然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题,但是我…

Artistic Oil Paint 艺术油画着色器插件

只需轻轻一点,即可将您的视频游戏转化为艺术品!(也许更多…)。 ✓ 整个商店中最可配置的选项。 ✓ 六种先进算法。 ✓ 细节增强算法。 ✓ 完整的源代码(脚本和着色器)。 ✓ 包含在“艺术包”中。 &#x1f…

上拉电阻和下拉电阻在电路中的作用(一)

上拉电阻和下拉电阻在电路中的作用(一) 1.什么是上下拉电阻2.上下拉电阻的作用:2.1.维持输入引脚处于稳定状态。2.2.配合三极管和MOS进行电平转换电路设计2.3.OC、OD电路(Open Collector集电极开路、Open Drain漏电极开路&#xf…

优化UVM环境(九)-将interface文件放在env pkg外面

书接上回: 优化UVM环境(八)-整理project_common_pkg文件 My_env_pkg.sv里不能包含interface,需要将my_intf.sv文件放在pkg之外

Leetcode 1135. 最低成本连通所有城市

1.题目基本信息 1.1.题目描述 想象一下你是个城市基建规划者,地图上有 n 座城市,它们按以 1 到 n 的次序编号。 给你整数 n 和一个数组 conections,其中 connections[i] [x_i, y_i, cost_i] 表示将城市 x_i 和城市 y_i 连接所要的cost_i&…

【scene_manager】与 MoveIt 机器人的规划场景进行交互

scene_manager Scene Manager包是由 Robotnik 创建的 ROS 包,旨在帮助构建和与 MoveIt 机器人的规划场景进行交互。 背景信息 MoveIt 规划场景 是一个用于存储机器人周围世界的表示(外部碰撞)以及机器人自身状态(内部碰撞和当…

LeetCode.102 二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 提示&#xff1a; 树中节点数目在范围 [0, 2000] 内-1000 < Node.val < 1000 解题思路 对二叉树进行层序遍历即可&am…

最好的ppt模板网站是哪个?做PPT不可错过的18个网站!

现在有很多PPT模板网站&#xff0c;但真正免费且高质量的不多&#xff0c;今天我就分享主流的国内外PPT模板下载网站&#xff0c;并且会详细分析这些网站的优缺点&#xff0c;这些网站都是基于个人实际使用经验的&#xff0c;免费站点会特别标注&#xff0c;让你可以放心下载&a…

【OpenAI】第三节(上下文)什么是上下文?全面解读GPT中的上下文概念与实际案例

文章目录 一、GPT上下文的定义1.1 上下文的组成 二、GPT上下文的重要性2.1 提高生成文本的相关性2.2 增强对话的连贯性2.3 支持多轮对话 三、使用上下文改善编程对话3.1 使用上下文的概念3.2 使用上下文改善对话的作用3.3 使用上下文改善对话的方法3.4 案例分析 四、利用历史记…

记录一个容易混淆的 Spring Boot 项目配置文件问题

记录一个容易混淆的 Spring Boot 项目配置文件问题 去年&#xff0c;我遇到了这样一个问题&#xff1a; 在这个例子中&#xff0c;由于密码 password 以 0 开头&#xff0c;当它被 Spring Boot 的 bean 读取时&#xff0c;前导的 0 被自动去掉了。这导致程序无法正确读取密码。…

几何算法系列:空间实体体积计算公式推导

1.前言 面积和体积的计算是常见和基础的几何算法话题&#xff0c;面积和体积通常作为面或构件的基本信息参与相关的建模、计算、分析等过程。 有关面积的计算&#xff0c;可以参考博主此前的文章&#xff0c; 一种误差较小的轮廓面积计算算法_轮廓面积计算原理-CSDN博客文章…

【MyBatis】MyBatis-config标签详解

目录 MyBatis配置文件标签详解configuration标签properties标签typeAliases标签environments标签environment标签transactionManager标签dataSource标签mappers标签 MyBatis配置文件标签详解 我们在使用MyBatis框架的时候需要一个配置文件——MyBatis-config.xml来告诉MyBatis…

Linux中如何理解一切皆文件

根据之前的学习我们会有一些少许的疑惑&#xff0c;我们的stdin &#xff0c;stdout&#xff0c;stderr访问的是键盘显示器&#xff0c;然而键盘显示器等他们都有一个共同的特点就是他们都是外设&#xff0c;那么这些外设是怎么被看成是文件的呢&#xff1f; 看图可以知道硬件的…

Java | Leetcode Java题解之第492题构造矩形

题目&#xff1a; 题解&#xff1a; class Solution {public int[] constructRectangle(int area) {int w (int) Math.sqrt(area);while (area % w ! 0) {--w;}return new int[]{area / w, w};} }

自定义多级联动选择器指南(uni-app)

多端支持&#xff1a;可以运行在H5、APP、微信小程序还是支付宝小程序&#xff0c;都可以轻松使用改组件。自定义配置&#xff1a;您可以根据需要配置选择器的级数&#xff0c;使其适应不同的数据结构和用例。无限级联&#xff1a;此组件支持无限级联选择&#xff0c;使您能够创…

MySQL8.0主从同步报ERROR 13121错误解决方法

由于平台虚拟机宿主机迁移&#xff0c;导致一套MySQL主从库从节点故障&#xff0c;从节点服务终止&#xff0c;在服务启动后&#xff0c;恢复从节点同步服务&#xff0c;发现了如下报错&#xff1a; mysql> show slave status\G; *************************** 1. row *****…