如何用 OceanBase 的 LOAD DATA 旁路导入进行大表迁移

前言

在日常工作中,我们时常会遇到需要将某个大数据量的单表进行迁移的情况。在MySQL中,针对这样的大表,我们通常会选择先将原表导出为csv格式,然后利用LOAD DATA语法来导入csv文件,这种方法相较于mysqldump在效率上有一定的提升。OceanBase针对此类需求引入了一项新功能——旁路导入。最新版本的OBdumper/OBloader工具已经能够支持旁路导入。本文将对LOAD DATA旁路导入进行解读。

体验版本

OceanBase 4.2.1.8 MySQL租户

导入前准备

配置 secure_file_priv

该参数用于控制导入或导出到文件时可以访问的路径,MySQL也有此参数,并且MySQL需要通过配置文件修改该参数并且重启生效,OB中可以通过命令行修改,无需重启。需要通过本地 Unix Socket 连接本地 OBServer 节点的 Unix Socket 文件路径,位于本地 ObServer 安装目录下的run/sql.sock,默认 Unix Socket 文件路径为 /home/admin/oceanbase/run/sql.sock

[root@observer062 csv]# obclient -S /home/admin/oceanbase/run/sql.sock -uroot@obmysql -p'aaAA11__'
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221882263
Server version: OceanBase 4.2.1.8 (r108000052024072217-77f9516419866bc291fc79b950b0865f2f4194e0) (Built Jul 22 2024 17:41:00)Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.obclient [(none)]>
obclient [(none)]>
obclient [(none)]> SET GLOBAL secure_file_priv = "/backup/csv";
Query OK, 0 rows affected (0.190 sec)obclient [(none)]>
obclient [(none)]>

配置 secure_file_priv 目录属组

需要配置  secure_file_priv 目录属组,否则导入导出操作会报权限错误

[root@observer062 backup]# chown -R admin.admin csv
[root@observer062 backup]#
注意

具体使用事项参考官网说明

1731939983

LOAD DATA 旁路导入

旁路导入

旁路导入指的是导入数据时跳过数据库的SQL引擎,直接向数据文件中写入文件,由于减少了SQL引擎解析的时间,大大提高了导入效率。OB V4 的版本在语法上已经支持旁路导入,MySQL的 LOAD DATA 语法不支持 旁路导入,PG的旁路导入需要借助 pg_bulkload工具

官方参数解释

参数描述
direct表示走旁路导入。
need_sort表示是否需要 OceanBase 数据库对数据进行排序。
值为 bool 类型:
max_error表示最大的容忍的错误的行数。值为 INT类型,超过这个数值LOAD DATA 会报失败。
parallel(N)加载数据的并行度,必填项,取值是大于 1 的整数。

具体使用方法可以参考官网说明

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000507601

MySQL导入效率

在MySQL5.7中,导入 48021216 数据量的CSV文件,耗时6 min 3.57 sec

mysql> LOAD DATA  INFILE '/home/csv/bmsql_order_line.csv' INTO TABLE bmsql_order_line FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Query OK, 48021216 rows affected (6 min 3.57 sec)
Records: 48021216  Deleted: 0  Skipped: 0  Warnings: 0
OB旁路导入效率

使用OB导入的利器(旁路导入)加上并行导入, 导入相同数据量的CSV文件,耗时 1 min 46.812 sec。极大的提高导入效率

obclient [test]> LOAD DATA /*+direct(true,1024)  parallel(32) */ INFILE '/backup/csv/bmsql_order_line.csv' INTO TABLE bmsql_order_line FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Query OK, 48021216 rows affected (1 min 46.812 sec)
Records: 48021216  Deleted: 0  Skipped: 0  Warnings: 0obclient [test]>

总结

1.旁路导入时需要设置 secure_file_priv 参数,并且要注意路径以及文件的权限

2.对于数据量较大的单表迁移,建议使用OB旁路导入功能提升导入效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81707.shtml

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

相关文章

VR 互动实训的显著优势​

(一)沉浸式学习,提升培训效果​ 在 VR 互动实训中,员工不再是被动的知识接受者,而是主动的参与者。以销售培训为例,员工戴上 VR 设备,就能置身于逼真的销售场景中,与虚拟客户进行面对…

OpenCV 第6课 图像处理之几何变换(重映射)

1. 概述 简单来说,重映射就是把一副图像内的像素点按照规则映射到到另外一幅图像内的对应位置上去,形成一张新的图像。 因为原图像与目标图像的像素坐标不是一一对应的。一般情况下,我们通过重映射来表达每个像素的位置(x,y),像这样: g(x,y)=f(h(x,y)) 在这里g()是目标图…

Java虚拟机 - 程序计数器和虚拟机栈

运行时数据结构 Java运行时数据区程序计数器为什么需要程序计数器执行流程虚拟机栈虚拟机栈作用虚拟机栈核心结构运行机制 Java运行时数据区 首先介绍Java运行时数据之前,我们要了解,对于计算机来说,内存是非常重要的资源,因为内…

MySQL数据库——支持远程IP访问的设置方法总结

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实…

CSS- 4.6 radiu、shadow、animation动画

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…

排序算法之基础排序:冒泡,选择,插入排序详解

排序算法之基础排序:冒泡、选择、插入排序详解 前言一、冒泡排序(Bubble Sort)1.1 算法原理1.2 代码实现(Python)1.3 性能分析 二、选择排序(Selection Sort)2.1 算法原理2.2 代码实现&#xff…

第十节第一部分:常见的API:Math、System、Runtime

Math类介绍及常用方法(了解知道即可) System类介绍及常用方法(了解知道即可) Runtime类介绍及常用方法(了解知道即可) 代码: 代码一:Math类 package com.itheima.d14_math;public …

智能体间协作的“巴别塔困境“如何破解?解读Agent通信4大协议:MCP/ACP/A2A/ANP

AI 智能体的兴起触发了AI应用协作的新领域。这些智能体不再局限于被动的聊天机器人或独立的系统,它们现在被设计用于推理、计划和协作ーー跨任务、跨域甚至跨组织。但随着这一愿景成为现实,一个挑战很快浮出水面: 智能体如何以一种安全、可伸…

项目进度延误,如何按时交付?

项目进度延误可以通过加强计划管理、优化资源分配、强化团队沟通、设置关键里程碑和风险管理机制等方式来实现按时交付。加强计划管理、优化资源分配、强化团队沟通、设置关键里程碑、风险管理机制。其中,加强计划管理尤为关键,因为明确而详细的计划能提…

详解ip地址、子网掩码、网关、广播地址

1. IP 地址 定义:IP 地址是网络设备在网络中的唯一标识,用于标识设备的网络位置,类似于现实中的门牌号。它分为 IPv4(如 192.168.1.5)和 IPv6(如 240e:305:3685:8100:a00:27ff:fefb:56b8)。 示…

为 Windows 和 Ubuntu 中设定代理服务器的详细方法

有时下载大模型总是下载不出来,要配置代理才行 一、Windows代理设置 ① 系统全局代理设置 打开【设置】→【网络和Internet】→【代理】。 在【手动设置代理】下,打开开关,输入: 地址:10.10.10.215 端口:…

鸿蒙OSUniApp 实现的表单验证与提交功能#三方框架 #Uniapp

UniApp 实现的表单验证与提交功能 前言 在移动端应用开发中,表单是用户与应用交互的重要媒介。一个好的表单不仅布局合理、使用方便,还应该具备完善的验证与提交功能,以确保用户输入的数据准确无误。本文将分享如何在 UniApp 中实现表单验证…

前端的面试笔记——HTMLJavaScript篇(二)前端页面性能检测

前端页面性能检测和判定是优化用户体验的核心环节,需要结合实验室数据(Lab Data)、现场数据(Field Data)和行业标准综合评估。以下是主流方法、工具及判定标准的详细解析: 一、性能检测的核心维度与指标 …

再来1章linux系列-19 防火墙 iptables 双网卡主机的内核 firewall-cmd firewalld的高级规则

学习目标: 实验实验需求实验配置内容和分析 (每一个设备的每一步操作)实验结果验证其他 学习内容: 实验实验需求实验配置内容和分析 (每一个设备的每一步操作)实验结果验证其他 1.实验 2.实验需求 图…

LLM-Based Agent综述及其框架学习(五)

文章目录 摘要Abstract1. 引言2. 文本输出3. 工具的使用3.1 理解工具3.2 学会使用工具3.3 制作自给自足的工具3.4 工具可以扩展LLM-Based Agent的行动空间3.5 总结 4. 具身动作5. 学习智能体框架5.1 CrewAI学习进度5.2 LangGraph学习进度5.3 MCP学习进度 参考总结 摘要 本文围绕…

游戏引擎学习第298天:改进排序键 - 第1部分

关于向玩家展示多个房间层所需的两种 Z 值 我们在前一天基本完成了为渲染系统引入分层 Z 值的工作,但还没有完全完成所有细节。我们开始引入图形渲染中的分层概念,即在 Z 轴方向上拥有多个独立图层,每个图层内部再使用一个单独的 Z 值来实现…

一些C++入门基础

关键字 图引自 C 关键词 - cppreference.com 命名空间 命名空间解决了C没办法解决的各类命名冲突问题 C的标准命名空间:std 命名空间中可以定义变量、函数、类型: namespace CS {//变量char cs408[] "DS,OS,JW,JZ";int cs 408;//函数vo…

学习笔记:黑马程序员JavaWeb开发教程(2025.4.6)

12.4 登录校验-JWT令牌-介绍 JWT(JSON Web Token) 简洁是指JWT是一个简单字符串,自包含指的是JWT令牌,看似是一个随机字符串,但是可以根据需要,自定义存储内容 Header是JSON数据格式,原始JSO…

香港科技大学物理学理学(科学计算与先进材料物理与技术)硕士招生宣讲会——深圳大学

香港科技大学物理学理学(科学计算与先进材料物理与技术)硕士招生宣讲会——深圳大学专场 🕙时间:2025年5月23日(星期五)14:30 🏫地点:深圳大学沧海校区致原楼1101 &#x1f9d1…

数据库优化技巧:MySQL 重复数据查询与删除(仅保留一条)的性能优化策略

目录 一、查询重复数据 二、删除重复数据 方法 1:创建临时表,操作完成后再删除临时表(安全可靠,适合大表) 步骤 1:创建临时表存储需删除的 ID 步骤 2:根据临时表删除数据 方法 2&#xff1a…