海量数据迁移之一个误操作的问题总结

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在生产环境中的数据迁移还是很惊心动魄的,毕竟生产的数据不容许有任何潜在的问题,很小的问题也可能导致业务的终端,这个时候dba的角色是很重要的,如果dba犯了一个很细小的问题,在海量数据迁移中可能会导致灾难性的结果,所以今天和大家讨论一下关于由vi误操作导致的问题及总结。
在生产环境中的数据迁移还是很惊心动魄的,毕竟生产的数据不容许有任何潜在的问题,很小的问题也可能导致业务的终端,这个时候dba的角色是很重要的,如果dba犯了一个很细小的问题,在海量数据迁移中可能会导致灾难性的结果,所以今天和大家讨论一下关于由vi误操作导致的问题及总结。
结合今天早上的例子来说明。
目前生产环境已经有大量的用户数据了,需要从老系统迁移一批用户数据过来,一切都在安装好计划进行准备和操作。我是采用了外部表的方式,把一个很大的表分为了几十上百个外部表,采用insert方式加载的。
数据的准备工作很快就完成了,一切都在等待最后的客户确认就准备开始运行脚本做数据批量加载了。结果当时查看系统资源,觉得可以把原本的10个并发进程该为12个。就简单的改了一下脚本。
这个时候就用vi很快的改完了,但是在数据加载的时候报了很多的错误,最开始以为是数据的问题,就发给数据迁移组去检查了。自己也在同时做一些检查,我采用了错误日志的方式来忽略主键冲突,唯一性冲突的数据。
关于错误日志的部分,可以参考 数据紧急修复之启用错误日志  http://blog.itpub.net/23718752/viewspace-1192887/
但是奇怪的是,一共有5个表有数据问题,结果检查了3个,最后都是0 rows inserted.我就怀疑是什么地方出现问题了,数据已经加载进去了。应该是在加载第二次的时候全都失败了。
我就开始检查脚本的执行历史,没有发现问题,最后在一个小细节上发现了问题。

在使用ls -l查看文件的时候,有一个很特别的文件引起了我的注意。根据我的印象,这个文件时在用vi编辑的时候,本来退出vi应该为:q ,结果打错了,达成了;q 然后一不留神生成了一个;q的文件。
-rw-r--r-- 1 produser dba    201 Oct  9 23:44 par7_tab_parall.lst
-rw-r--r-- 1 produser dba    208 Oct  9 23:44 par8_tab_parall.lst
-rw-r--r-- 1 produser dba    198 Oct  9 23:44 par9_tab_parall.lst
-rw-r--r-- 1 produser dba    341 Oct  9 23:46 ;q
-rw-r--r-- 1 produser dba 135337 Oct 10 00:34 split_par_10_appendata.log
-rw-r--r-- 1 produser dba 116826 Oct 10 00:26 split_par_11_appendata.log
-rw-r--r-- 1 produser dba 113885 Oct 10 00:56 split_par_12_appendata.log
-rw-r--r-- 1 produser dba 169947 Oct 10 00:39 split_par_1_appendata.log
-rw-r--r-- 1 produser dba 143857 Oct 10 00:09 split_par_2_appendata.log
-rw-r--r-- 1 produser dba 124105 Oct  9 23:59 split_par_3_appendata.log
-rw-r--r-- 1 produser dba 114643 Oct 10 00:49 split_par_4_appendata.log
-rw-r--r-- 1 produser dba 143102 Oct 10 00:18 split_par_5_appendata.log
-rw-r--r-- 1 produser dba 141416 Oct 10 00:32 split_par_6_appendata.log

最后在不经意中查看这个文件的时候却运行了文件的内容。

查看命令历史的时候发现这个命令触发了两次。
  281  nohup ksh  tmp_split_par_6_appendata.sh   > split_par_6_appendata.log    &
  282  nohup ksh  tmp_split_par_7_appendata.sh   > split_par_7_appendata.log    &
  283  ksh check.sh|grep process
...
  295  ksh check.sh|grep process
  296  nohup ksh  tmp_split_par_7_appendata.sh   > split_par_7_appendata.log    &
  297  ksh check.sh|grep process
  298  ksh check.sh|grep process

找到问题的来源了,就可以确定问题的影响范围了,通过错误日志对数据进一步进行了检查,发现数据没有问题了。
对于这个问题的总结由以下几点:
首先尽量不要在生产环境进行脚本的修改,不要在生产环境中随意测试脚本,以免不必要的麻烦。这个需要准备工作要更加的充分。
对于数据的导入中,个人建议还是保留主键和唯一性约束,这样可以避免很多数据的误操作带来的大问题。如果数据导入出现问题,要么是约束无法enable,要么主键无法创建,而且越是大的表在创建索引的时候也是需要一定的时间的,如果涉及的表有上百个,不能保证你的操作完全没有问题。可能几个表出现问题就需要花费较多的时间来修复。
对于日志的记录还是建议能够尽量的全面和完整,有些系统升级甚至有截屏之类的,都可以参考,在发生问题之后,能够很快的定位和总结,避免之后再犯。
在数据的迁移之前,对数据的条数进行一个完整的统计,在数据迁移完成之后再进行一个统计,保证没有数据条数不一致的情况。
不管怎么样,误操作是系统升级成败的关键,在发生误操作之后需要冷静,认真的分析问题的原因。可能有些问题还真不是问题,尽量不要着急开始做决定,以免问题雪上加霜。
最后经过确认,这个问题没有造成影响,数据的条数都是完全匹配的。下次注意。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
定位技术
阿里研究员玄难:如何做电商业务中台
2016 ATF阿里技术论坛于4月15日在清华大学举办,主旨是阐述阿里对世界创新做出的贡献。会上阿里业务平台事业部&淘宝基础平台技术部负责人玄难阐释了淘宝经历13年的发展中,业务平台从零到有,同时又逐步演进为业务中台。
41216 0
|
7月前
|
算法
基于遗传优化算法的风力机位置布局matlab仿真
本项目基于遗传优化算法(GA)进行风力机位置布局的MATLAB仿真,旨在最大化风场发电效率。使用MATLAB2022A版本运行,核心代码通过迭代选择、交叉、变异等操作优化风力机布局。输出包括优化收敛曲线和最佳布局图。遗传算法模拟生物进化机制,通过初始化、选择、交叉、变异和精英保留等步骤,在复杂约束条件下找到最优布局方案,提升风场整体能源产出效率。
141 28
|
7月前
|
安全 网络安全 Android开发
APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
430 11
APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
《AI与NLP:开启元宇宙社交互动新纪元》
元宇宙正从概念走向现实,社交互动成为其核心魅力。AI与NLP技术的迅猛发展,使自然语言交互、个性化体验和情感交流成为可能,打破了沟通壁垒,满足多元需求,并赋予社交温度。实时翻译技术支持跨语言交流,构建全球社交网络。尽管仍面临挑战,未来前景广阔,将带来更加真实、高效的虚拟社交体验。
161 6
有哪些CAD软件支持(国产操作系统)麒麟操作系统
CAD梦想画图是由成都梦想凯德科技自主研发的轻量级CAD软件,专为国产操作系统如麒麟、统信设计。支持AutoCAD所有版本的dwg二维图纸,具备精准显示、测量、标注、绘图修改、文字查找及批注等功能,操作流畅,无需安装字体。用户可通过应用商店轻松安装,适合新手和专业人士使用。
|
7月前
|
机器学习/深度学习 人工智能 算法
DeepSeek-R1论文细节时间线梳理
中国AI初创公司DeepSeek发布了大语言模型R1,该模型在推理任务上媲美OpenAI的ChatGPT,且训练成本仅600万美元。DeepSeek由杭州对冲基金High-Flyer支持,总部位于杭州和北京。R1基于V3-Base,使用监督微调和强化学习训练,针对硬件限制进行了优化。模型在多语言处理、推理风格等方面表现出色,但存在一些局限性,如法语表现欠佳、偶尔切换语言等。DeepSeek的创新技术包括FP8量化、多头潜在注意力和蒸馏方法,引发了广泛关注和讨论。开源社区正积极尝试复现其结果,但面临训练数据和代码未公开的挑战。DeepSeek的低成本高效训练策略为AI领域带来了新的思考方向。
452 2
|
9月前
|
人工智能 自然语言处理 搜索推荐
如何构建一套qwen-max智能体拥有媲美通义千问在线接口的能力
智能系统通过任务识别、决策引擎、工具选择和结果整合,自动选择合适的工具和方法,高效处理查询、生成、翻译、图像处理等任务,提供精准的解决方案。系统支持自然语言理解、任务分类、语义解析与意图识别,确保任务的准确执行和反馈。
290 3
|
监控 Java Spring
Spring Cloud Turbine(集群监控)
简介: Turbine是聚合服务器发送事件流数据的一个工具,Hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过Turbine来监控集群下Hystrix的metrics情况Turbine的github地址:https://github.com/Netflix/Turbine 使用场景 在复杂的分布式系统中,相同服务的结点经常需要部署上百甚至上千个,很多时候,运维人员希望能够把相同服务的节点状态以一个整体集群的形式展现出来,这样可以更好的把握整个系统的状态。
4470 0
LXJ
|
存储 Windows
无影云电脑评测
无影云电脑评测
LXJ
1124 0
无影云电脑评测