OceanBase数据库大版本迁移升级实践总结

news/2025/1/27 13:10:06/文章来源:https://www.cnblogs.com/coygfly/p/18692512

OceanBase数据库V4.2.1版本是OB的第一个长期支持版本(LTS),也适合作为现在企业使用OB数据库的稳定版本。相比OB3版本,OB4版本在数据库的设计、内核、架构等方面都做了比较大的改造和调整。因此,OB不支持从V3.x版本在线升级到V4.x版本,可以通过OMS迁移工具将V3.x版本数据库逻辑迁移升级到V4.x版本。本文将总结OceanBase数据库大版本迁移升级的主要步骤以及大表的迁移方法。

一、OMS迁移升级步骤

1. 数据库老环境用户及权限导出:首先需要在OB3版本环境把数据库用户和权限导出,对于ORACLE租户需要查询dba_tab_privs、dba_sys_privs、dba_role_privs三个系统视图,对于MySQL租户则可以通过show grants语法导出用户所有的权限。

2. 数据库新环境创建用户。

3. 通过OMS进行数据迁移:参考OMS官方文档在源端和目标端创建专用于迁移的数据库用户并授权,https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000000091344,然后就可以通过OMS白屏界面操作数据迁移。

4. 存储过程、函数等对象迁移:由于OMS只能迁移数据表、视图、索引等数据对象,无法迁移存储过程、函数、序列等其他数据库对象。我们可以使用obdumper/obloader工具迁移这类对象,迁移命令可参考

./obdumper -h 10.xx.xx.xx -P 2883 -u SYS@ob_tenant#ob_cluster -p xxxxxxxx --sys-user root --sys-password xxxxxxxx -D SCHEMA_NAME --trigger '*' --sequence '*' --package '*' --package-body '*' --function '*' --procedure '*' --ddl --thread=8 -f /obdump/schema_name
./obloader -h 10.xx.xx.xx -P 2883 -u SYS@ob_tenant#ob_cluster -p xxxxxxxx --sys-user root --sys-password xxxxxxxx -D SCHEMA_NAME --trigger '*' --sequence '*' --package '*' --package-body '*' --function '*' --procedure '*' --ddl --thread=8 -f /obdump/schema_name

5. 在新环境进行数据库用户授权

二、大表迁移问题

由于OMS是逻辑迁移并且要经过OMS服务器通过网络传输数据,所以迁移速度会受到一定限制,而数据库中存在几张超过10亿行的大表,最大的表超过70亿行。开始进行全量迁移时,没有把大表排除在外,配置好OMS迁移任务后,发现全量数据迁移一直卡着不动,这主要是表数据量太大,OMS查询数据源超时,看来通过OMS迁移大表很难行得通。对于大表的迁移,最快的方法就是旁路导入,旁路导入可以绕过SQL层的接口,直接在data文件中分配空间并插入数据,从而提高数据导入的效率。因此,这次迁移的方式确定为:小表OMS迁移+大表旁路导入。

由于表的数据量太大,旁路导入也需要比较长的时间,为了减少正式切换时业务中断的时间,我们可以提前把全量数据迁移过去,然后再正式迁移时只需要迁移增量的数据即可。这些大表都是历史数据表,数据都是新增,存量的数据不会变化,并且这些表都是按时间进行分区的分区表。我们可以在正式迁移前的两三天把全量数据迁移过去,然后正式迁移的时候,在新环境把这两天或者这个月的数据的分区truncate掉,然后再从老环境通过obdumper把这两天的数据导出,再通过obloader把这两天的数据导入新环境。这样在正式迁移时,只需要迁移一小部分数据即可,大大减少了业务停机的时间。在数据导出的时候,我们使用了select into outfile这种方式,直接在服务端导出数据,相比正常obdumper导出更快。此外,我们再新版本数据库服务器和旧版本数据库服务器上面挂载了同一个NFS目录,这样就解决了导出数据文件的传输问题,相当于全链路的数据迁移都没有经过网络,大大提升了数据迁移的效率。相关数据导出导入命令可以参考如下:

#旧版本数据全量导出
select /*+parallel(16)*/ * into outfile '/obbackup/PRD_TAB.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' from "SCM"."PRD_TAB";
#新版本数据全量导入(旁路导入)
./obloader -h10.xx.xx.xx -P2883 -uSYS@tenant#cluster -p --sys-user root --sys-password xxxxxx -D SCM --table 'PRD_TAB' --csv --direct --parallel 32 -f /obbackup/
#旧版本数据增量导出
select /*+parallel(16)*/ * into outfile '/obbackup/PRD_TAB.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' from "SCM"."PRD_TAB" where ETL_DT >= '20241201';
#新版本数据增量导入(旁路导入)
./obloader -h10.xx.xx.xx -P2883 -uSYS@tenant#cluster -p --sys-user root --sys-password xxxxxx -D SCM --table 'PRD_TAB' --csv --direct --parallel 32 -f /obbackup/
#导入完成后收集统计信息
CALL dbms_stats.gather_table_stats('SCM', 'PRD_TAB', degree=>'32', granularity=>'GLOBAL');

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

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

相关文章

VS Code 报错 __float128 is not supported on this target 解决方法

最近在使用 VS Code 时,每一个 cpp 文件都会有如下报错:在中文互联网上并没有搜索到很好的解决方案,但是在 stack overflow 上找到了一个比较好的回答:This problem may be caused by your VSCode using clang-tidy as the C/C++ extension. clang-tidy does not support _…

A Critique of ANSI SQL Isolation Levels.18687395

原文:A critique of ANSI SQL isolation levels摘要:ANSI SQL-92[MS, ANSI]使用脏读、不可重复读以及幻读现象(phenomena)定义了隔离级,本论文展示了这些现象,以及ANSI SQL定义并无法合适的描述众多流行的隔离级别,包括(ANSI标准)所涵盖的级别的标准锁实现。我们还介绍…

0127人工智能创新型教师培育计划(第一期) 试题

# 试题 http://site01.openhydra.net:30012/evt/uploadcode人工智能创新型教师培育计划(第一期)​ 【活动进展每日更新1月26日】​活动更新(1月26日 22:00更新): Python作业​教师AI基础考核作业(见下面介绍),或者可以下载word文件 查看。 1月31日中午24:00前提交, 作…

.net core 使用账号密码方式读取SharePoint 文件(记录)

项目环境 .net 6.0 原代码 是.netframework 4.6 原代码引用了Microsoft.SharePoint.Client 包去操作.其中身份验证的使用的是 SharePointOnlineCredentials 类.但迁移到.net 6,0 后发现这个类已经被移除.测试了常用 的各种方式,大部分均返回403 解决方案: 使用包 dotnet add…

mkcert生成ssl证书+nginx部署局域网内的https服务访问

环境 使用的是树莓派 安装的是ubuntu 系统 https://github.com/FiloSottile/mkcert/releases 下载 添加权限 chmod 777 ./mkcert-v1.4.4-linux-arm64 1、CA 证书加入本地可信 CA ./mkcert-v1.4.4-linux-arm64 -install 2、生成自签证书 ./mkcert-v1.4.4-linux-arm64 …

iPhone 拍摄 LED 灯带视频时候如何防频闪 All In One

iPhone 拍摄 LED 灯带视频时候如何防频闪 All In One 闪动频率不一致 bug? 60Hz 50HziPhone 拍摄 LED 灯带视频时候如何防频闪 All In One闪动频率不一致 bug?60Hz 50Hz errorshttps://www.bilibili.com/video/BV1F5fkY6ERS/ 问题分析 灯的问题,灯在闪。 交流电是 50Hz(中国…

iPhone 视频拍摄 LED 灯带时候如何防频闪 All In One

iPhone 视频拍摄 LED 灯带时候如何防频闪 All In One 闪动频率不一致 bug? 60Hz 50HziPhone 视频拍摄 LED 灯带时候如何防频闪 All In One闪动频率不一致 bug?60Hz 50Hz errorshttps://www.bilibili.com/video/BV1F5fkY6ERS/ solutions demos(🐞 反爬虫测试!打击盗版⚠️)…

AI智能体(Agent)总体框架及技术发展现状

智能体(Agent)定义 AI智能体,又称AI代理或 Al Agent,是能够感知环境,基于目标进行决策并执行动作的智能化应用。它具备自主性、交互性、反应性和适应性等基本特征,能够在复杂多变的环境中独立完成任务。智能体的出现,标志着人工智能从简单的规则匹配和计算模拟向更高级别的…

记忆层以前所未有的方式增强了LLMs

深入探讨记忆层如何工作,以及它们如何增强LLMs,以至于下一代AI架构如果不采用它们,将会错失良机。图像由DALL-E 3生成LLMs(大型语言模型)是存储在其参数中的庞大信息知识库(主要是以密集层中线性矩阵变换的权重形式存在)。 然而,随着参数规模的增长,计算成本和能源消耗…

知识蒸馏技术原理详解:从软标签到模型压缩的实现机制

知识蒸馏是一种通过性能与模型规模的权衡来实现模型压缩的技术。其核心思想是将较大规模模型(称为教师模型)中的知识迁移到规模较小的模型(称为学生模型)中。本文将深入探讨知识迁移的具体实现机制。知识蒸馏原理 知识蒸馏的核心目标是实现从教师模型到学生模型的知识迁移。…

GIS数据合集:作物、植被数据下载平台整理

本文对目前主要的作物类型与产量、植被物候与指数数据产品的获取网站加以整理与介绍~本文对目前主要的作物类型与产量、植被物候与指数数据产品的获取网站加以整理与介绍。 目录4 植被农业数据4.1 作物产量数据4.1.1 SPAM4.1.2 Aerial Intelligence4.2 作物物候数据4.2.1 China…