技术分享 | 一次数据库迁移

TB级别库迁移操作 一、场景 因一套RAC库的机器需要更换机房,必须在原先机房保留一套与之一样的数据库,以便应用不断的情形做机器的搬迁: 1)、应用暂停为零最好,这种情形用goldengate做,可以做到零停机,成本太高; 2)、利用rman+dg来做,应用暂停时间大约在切应用和apply最后一批日志,因为是TB级库,如果顺利,控制在30分钟-50分钟左右;否则启用第二套方案,这里不作说明。 二、原理 阅读详情

作者:姜晓宇

爱可生 DBA 团队成员,主要负责传播爱可生同学们的英雄事迹,比如租房子因为房东不好看退租。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文是对之前在客户进行的一次数据库迁移,中间遇到问题及经验的总结
总的来说数据库迁移总共分三步,和把大象装冰箱差不多。

1.迁移前准备

2.进行迁移

3.数据验证

其中数据验证主要是业务部门进行,我们主要是在出现问题后进行协助。

背景描述

客户共有三套业务库,需要迁移至新的实例中,这里称为业务 A,业务 B,业务 C。其中业务 B 和业务 C 需要合并成一套。

迁移前准备

迁移前准备包含:环境信息收集,数据同步,迁移前确认

这里我是列了个清单

这样能比较清晰的看到迁移前以及迁移后的环境,主从关系,MySQL 版本,各实例的 ip。

数据同步的部分我们需要明确的是,当该步骤完成后应该保证旧实例与新实例数据实时同步,在迁移下发窗口只进行单纯的迁移以及数据验证。

数据同步步骤

1.创建新实例

创建新的实例时,尤其需要注意对比旧实例的配置文件,防止由于配置不同,导致数据在新实例出现异常。

2.备份旧实例数据,导入新实例

由于客户旧实例环境只能使用 mysqldump 备份,所以备份还原使用的是 mysqldump。

业务 A 是可以直接全库备份的,但需要注意,全库备份不仅要备份数据,还要备份触发器,存储过程,事件。

#全库备份
mysqldump -h127.0.0.1 -P3306 -uroot -p --default-character-set=utf8mb4 --single-transaction --master-data=2 --flush-logs --hex-blob --triggers --routines --events --all-databases > all_db.sql

业务 B 以及业务 C 由于需要进行合并,并且这两个业务在各自实例中都是使用了一个单独的库,所以备份时进行单库备份。

#单库备份
mysqldump -h127.0.0.1 -uroot -P3306 -p --default-character-set=utf8mb4 --master-data=2 --flush-logs --single-transaction --set-gtid-purged=off --hex-blob --databases  databasename  > one_database.sql

备份成功后,将旧实例数据拷贝到新实例的服务器中,进行导入操作。

#导入数据
mysql -h127.0.0.1 -P3306 -uroot < all_db.sql

在导入完成时需要注意,MySQL 5.7 全库备份时不会备份 mysql.proc 下的系统自身的存储过程,可以在执行完导入后先执行一次升级。

#执行升级
mysql_upgrade --upgrade-system-tables --skip-verbose --force

3.建立复制保证数据实时同步。

将旧实例与新实例建立复制关系,保证数据实时同步
新实例与旧实例建立复制的地址建议使用 vip 进行,这样能够保证当前使用复制地址的可靠性,若无 vip 或者必须使用旧实例的从库地址进行级联复制,则一定要确保各级复制的正常运行。

首先需要有复制用户,用来建立复制,若无法提供则需要专门创建一个迁移用的复制用户,该用户建议迁移结束后进行回收。

业务 A 旧实例与新实例的复制建立比较简单直接正常建立就没问题。

#新实例的主库执行,建立旧实例到新实例的复制
CHANGE MASTER TO MASTER_HOST='10.186.60.201',
MASTER_USER='repl',
MASTER_PORT=3307,
MASTER_PASSWORD='repl',
MASTER_AUTO_POSITION = 1;

start slave;

业务 B 与 C 需要合并,所以这次保证数据实时同步采用了多源复制的方式。

#在新实例的主库执行,将业务B与C的数据都复制到新实例中。
CHANGE MASTER TO MASTER_HOST='10.186.60.209',
MASTER_USER='repl',
MASTER_PORT=3307,
MASTER_PASSWORD='repl',
MASTER_AUTO_POSITION = 1 FOR CHANNEL 'channel1';
 
CHANGE MASTER TO MASTER_HOST='10.186.60.210',
MASTER_USER='repl',
MASTER_PORT=3307,
MASTER_PASSWORD='repl',
MASTER_AUTO_POSITION = 1 FOR CHANNEL 'channel2';

start slave;

迁移前确认

迁移前确认事项我这边同样时列了清单,具体事项需要根据具体情况修改

其中 OM 是旧主实例,NM 是新主实例,OS 是旧从实例,NS 是新从实例。

迁移检查需要在迁移前多次确认,比如在迁移准备完成时确认一次,迁移正式开始前再确认一次。

进行迁移

1.确认无流量写入

下发开始后首先需要确认业务是否全部停止,是否还有流量写入,

我们也可以查看 gtid 是否还有变化判断。

#查看实例状态
 show master status\G

2.解绑旧集群的 VIP,设置旧实例为只读

在确认无流量写入后,解除旧集群 vip,设置旧实例为只读模式,防止有数据再次写入。

#解绑vip
ip addr del 10.186.60.201/25 dev eth0
#设置旧实例为只读库,防止数据写入
show global variables like '%read_on%';
set global super_read_only=1;
show global variables like '%read_on%';

3.断开新老集群复制

#断开复制
stop slave;

做完该步骤,新老集群状态应该完全一致,可以对比新老集群状态。

数据验证

在确认新老集群状态一致后,可以由业务部门进行数据验证。

一次较为完整的oracle数据库数据迁移过程 作为一个后端开发者, 需要处理的问题会非常多非常杂,不断的接触各方面的知识,总结心得才能有所提高。 最近我们将甲方的信披系统改造后并入了我们的系统,开发基本完成,接下来数据迁移就是一个大问题了。因为之前其它开发商系统的数据库设计极烂,所以这次数据迁移稍微显得麻烦,而数据迁移最大的要求就是保证数据的正确性。 在此把这次迁移的方式记录下来,也希望以后有所提升之后能有更好的方案。 总体的方 阅读详情

相关推荐

Oracle项目-数据迁移.ppt

极其相关的oracle数据迁移资料,强烈推荐。

2022开“卷”有益:国产化数据库迁移最佳实践与探索——本周五劲爆来袭

为了给大家分享时下最热门的数据库技术、解决方案以及云和恩墨重磅数据库产品,我们在2022年开展新的专题系列直播活动《2022年云和恩墨产品与解决方案实践专题分享》,第一期的主题为国产化数据...

weixin_54551388的博客 478

官方数据库迁移教程PPT migration sybase to oracle

官方数据库迁移教程PPT migration sybase to oracle ,权威!

做数据迁移差点累死的程序员有话要说----数据迁移经验分享

“结束了吗?” “不用再每天工作到凌晨两点了吗?” “不用再一遍遍核对数据了吗?” “不用再研究难读的mapping rule了吗?” “是在做梦,还是已经醒了?” 睁开眼,此时是下午两点。昨夜结束了为期一年的数据迁移工作。历经多次上线上,数亿条数据从老系统进入新系统,开启了新生。 回首数据迁移的整个过程,可以说是无比痛苦。当然,随之也获取了宝贵经验。 据说每个程序员都会至少参与一次数据迁移工作。如果想在轮到你的那一次痛苦少一点,我们不妨继续看下去。 为什么数据迁移项目难做 如果你没有做过数据迁移项目,很容

稀有气体的技术博客 8842

迁移上云方案.pptx

从线上迁移上阿里云分为网络搭建、环境准备、系统迁移、数据迁移、测试割接几个阶段,迁移的内容包括系统、数据库、海量数据。分别从以上几个方面介绍迁移方法&工具以及迁移的流程,最后介绍通常的实时周期

数据集成项目培训PPT

数据集成项目培训.ppt 详细的描述数据集成项目

【项目经验】数据迁移总结

在产品迭代初期或者系统重构时期,业务模型的调整带来数据结构的变化,数据迁移不可避免。做好数据迁移需要考虑周全,且准备充分,做好预案,否则如果出现数据不一致问题,纠错成本高,同时核心业务数据的错误,会引起客户/业务方的投诉,团队也会承受巨大的压力。 本文结合最近一个实际项目的数据数据迁移过程,讲述了踩过的坑,加上自己的一些思考得出的一些方法论,最后给出了数据迁移个脚本的一个实例 目标 确保新客...

weixin_30918633的博客 1538

oracle项目--DataBase Migration(数据库迁移)PPT

自己做的oracle项目--DataBase Migration(数据库迁移),做了一个月的东西,里面包括四种方案,其中有SQLWAYS和POWERDESIGNER的详解

关于mysql项目经验怎么写_数据库管理员岗位项目经历怎么写

项目经历(案例一)项目时间:2017-04到2014-04项目名称:ORACLE数据库性能调优项目描述:项目介绍根据数据库指定的快照策略,生成STATSPACK报告或者AWR报告,进行数据分析并调优1.关注load profile 的逻辑读,物理读,硬解析,登录次数,执行次数2.关注数据缓冲区命中率和库缓冲区的击中率3.根据buffer pool advisory适当调整缓冲池大小4.关注Top ...

weixin_39849671的博客 2286

OpenFOAM收敛问题排查指南:从参数设置到网格优化

本文系统性地介绍了OpenFOAM计算中收敛问题的排查方法。从理解收敛本质出发,详细讲解了如何通过调优求解控制参数(如松弛因子、离散格式)、合理设置时间步长与耦合算法,以及优化网格质量来解决发散难题。文章提供了从软件设置到硬件网格的完整排查路径,帮助用户实现稳定高效的计算流体力学模拟。

fern8的博客 790

电机控制实战:SVPWM五段式与七段式算法在STM32上的实现对比

本文深入对比了SVPWM五段式与七段式算法在STM32上的实现效果,详细分析了两种算法在占空比控制、开关损耗和波形质量等方面的差异。通过实测数据,为工程师提供了针对不同应用场景的选型建议,包括电池供电设备和高精度伺服控制系统的优化方案。

h6i7j8的博客 584

信创迁移工作中的总结

数据迁移是信创工作中非常重要且复杂的一环,涉及多个技术难点。脚本改造是信创项目中另一项重要工作,主要涉及数据库函数、存储过程、序列等的适配和优化。数据迁移数据迁移是信创工作中的重点和难点,需要提前规划、详细比对,并制定合理的迁移计划。针对数据类型、编码字符集、迁移效率、分隔符等问题,提出了具体的解决方案。脚本改造脚本改造涉及数据库函数、存储过程、序列等的适配,需要逐一梳理并寻找替代方案。环境配置是改造后的重要环节,确保项目能够在新的数据库环境中正常运行。

2401_82853421的博客 1121

手把手教你用ROS和Gazebo搭建Unitree A1机器狗仿真环境(含URDF/Xacro详解)

本文详细介绍了如何使用ROS和Gazebo搭建Unitree A1机器狗的仿真环境,涵盖URDF/Xacro文件编写、Gazebo物理引擎集成及ROS控制实现。通过实战指南,帮助开发者掌握四足机器人仿真技术,提升开发效率。

bush的博客 277

将MySQL数据迁移到Oracle

因为项目的原因,今晚将mysql数据库的内容尝试迁移到oracle,虽然结果失败,不过学到了不少,下次就不一定了,哈哈 因为之前项目是使用mysql数据库的,现在因为新公司要求使用oracle(公司大得很),不得不尝试将以前项目进行迁移。 经过查找相关文档,最终选定使用oracle sql developer。 提示:将 Informix 和 DB2 数据库迁移到 Oracle。有关所有其他...

weixin_30830327的博客 314

VCS HVP与验证计划planner:数字IC验证环境搭建与收敛实践

在数字IC验证中,VCS 是广泛使用的编译型仿真器,HVP 通常指面向硬件验证平台的高性能编译选项集,用于开启 SystemVerilog 类、随机约束和 NTB 等能力;planner 则指验证计划管理,核心是把功能点与测试用例、覆盖点建立映射。理解 VCS 先编译后仿真的原理,有助于优化增量编译、调试访问和覆盖率采集,提升回归收敛效率。规划驱动让激励不再散落,设计改版时能快速定位受影响用例,交接和覆盖率收敛更有依据。无论是 UVM 环境搭建、编译参数选择,还是验证计划表维护,都需要把工具选项与规划方法结

weixin_42543046的博客 336

SpringBoot整合JWT实战:从零构建无状态认证系统,详解Token生成、验证与安全最佳实践

JWT在SpringBoot中的实现与应用 摘要:本文介绍了JWT(JSON Web Token)的基本概念、与Session机制的对比,以及SpringBoot项目中JWT的整合实现。JWT由Header、Payload和Signature三部分组成,具有无状态、跨域支持等优势。文章详细展示了如何在SpringBoot项目中配置JWT环境,封装JWT工具类来实现Token的生成、解析和验证功能,包括密钥管理、自定义声明、签名验证等核心操作。通过对比表格和生活化比喻,帮助读者理解JWT与传统Session的

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1774

失败的数据库迁移UDB

  公司采用的是ucloud的云主机,数据库也是架设在云主机上。由于数据越来越多数据查询数据越来越慢,所以我决定往 UDB上迁移。当时考虑的理由如下: (1)云主机底层架设在虚拟机上IO性能有折损,而UDB底层直接就是物理机集群IO性能有保障。 (2)UDB便于维护,直接就能查看各项性能指标及当前实时状态。 (3)方便的主从设置和扩展伸缩,主库配置好后,设置从库点两下鼠标就搞定,而且能随时改...

weixin_34249367的博客 141

(王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求

算法(Algorithm):是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作王道视频课中讲到了一个例子,展示了算法就是解决问题的特定步骤的描述对于给定的问题可以有多种多样的算法来解决,只不过这些算法有各自的优点和缺点。

快乐江湖的博客 2682

记一次大规模数据迁移和加密

公司的核心业务合作伙伴淘宝网,最近出现泄漏用户信息的现象,找了好久找不到根源,于是乎,淘宝那边决定对所有敏感数据进行加密,从出口和入口都走密文,于是乎,我们的工作量就来了。   我们的一个底单数据库,存储了大量淘宝卖家和买家的订单打印,申请单号,发货,回收单号等等操作的日志,大概有10亿左右数据(自动删除2个月之前的数据),哎呦我的fuck啊,也就是说,我们这边要对10亿数据做加密处理。。。。。...

weixin_33951761的博客 142

2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战

2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2393

某易将军令口令纯算法还原py篇

算法开源,将军令口令算法。希望官方多多更新吧

任雪飘的博客 3909

exp/imp的一次应用

做了一个pdf文件,是关于一次数据库的迁移。如果您对该工具还不太熟悉的话可以看一下。 ...

105

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大型数据迁移完全操作过程!

 前段时间完成一个大型数据库的迁移工作,情况比较复杂好在经过一些小插曲之后总算圆满完成任务。下面是我的一些经验总结希望各位多提意见。虽然在操作之前作过一些测试,但主要考虑脚本的正确与否以及对数据库对象的影响。并没有完全在实际系统上运行。这也成为后来出现的一个问题没有预计到的根源。毕竟比较早的版本我没有用过:)。那就是8.0.6的exp工具并支持到处数据到多个文件,file=file1,file

峥狼 988

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

记20150430平台预迁移

2015年的第一次通宵献给了公司,作为打杂的我与部门几十个同事留下来通宵测试平台预迁移之后的出现的问题,主要是为了记录下问题,以便接下来真正迁移的时候,可以提前把会出现的问题解决。     为什么是平台迁移呢?因为,公司的老的业务平台积累了太多的用户和数据,肯定没办法直接停掉去使用新的,但是如果新、旧两套平台同事存在,等以后业务量大了,要做调整和维护的话,那个难度太过于大。再者另一个原因,公司的

唯一的专栏 976

【广州】openGauss Meetup (12月19日)| 活动预告

邀请函2020,大家辛苦了!在即将和它说再见的时候,来赴今年和openGauss的最后一次线下约会吧,让我们一起来诉说那些还未尽的愿望,探讨未来那些无尽的可能。活动背景openGaus...

Enmotech的博客 580

【数据库迁移系列】从Oracle迁移到openGauss实战分享

ora2og 可以将 Oracle 或者 MySQL 数据库迁移到 openGauss,应用场景小到 Oracle 数据库的反向工程,大到大型企业数据库迁移,或者简单地将一些 Oracle 数据复制到 openGauss数据库。

Gauss松鼠会 1万+
上一篇: 技术分享 | XtraBackup 备份加速
下一篇: 故障分析 | 如何提高 MHA 的网络容忍能力?(上)
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值