数据迁移 订阅
数据迁移(又称分级存储管理,hierarchical storage management,hsm)是一种将离线存储与在线存储融合的技术。它将高速、高容量的非在线存储设备作为磁盘设备的下一级设备,然后将磁盘中常用的 数据按指定的策略自动迁移到磁带库(简称带库)等二级大容量存储设备上。当需要使用这些数据时,分级存储系统会自动将这些数据从下一级存储设备调回到上一 级磁盘上。对于用户来说,上述数据迁移操作完全是透明的,只是在访问磁盘的速度上略有怠慢,而在逻辑磁盘的容量上明显感觉大大提高了。数据迁移是将很少使用或不用的文件移到辅助存储系统(如磁带或光盘)的存档过程。这些文件通常是需在未来任何时间可进行方便访问的图像文档或历史信息。迁移工作与备份策略相结合,并且仍要求定期备份。还包括电脑数据迁移,迁移旧电脑(旧系统)中的数据、应用程序、个性化设置等到新电脑(新系统),在系统升级后很有必要。 展开全文
数据迁移(又称分级存储管理,hierarchical storage management,hsm)是一种将离线存储与在线存储融合的技术。它将高速、高容量的非在线存储设备作为磁盘设备的下一级设备,然后将磁盘中常用的 数据按指定的策略自动迁移到磁带库(简称带库)等二级大容量存储设备上。当需要使用这些数据时,分级存储系统会自动将这些数据从下一级存储设备调回到上一 级磁盘上。对于用户来说,上述数据迁移操作完全是透明的,只是在访问磁盘的速度上略有怠慢,而在逻辑磁盘的容量上明显感觉大大提高了。数据迁移是将很少使用或不用的文件移到辅助存储系统(如磁带或光盘)的存档过程。这些文件通常是需在未来任何时间可进行方便访问的图像文档或历史信息。迁移工作与备份策略相结合,并且仍要求定期备份。还包括电脑数据迁移,迁移旧电脑(旧系统)中的数据、应用程序、个性化设置等到新电脑(新系统),在系统升级后很有必要。
信息
外文名
Data Migration
别    称
分级存储管理
中文名
数据迁移
数据迁移数据迁移的技术准备
数据迁移的实现可以分为3个阶段:数据迁移前的准备、数据迁移的实施和数据迁移后的校验。由于数据迁移的特点,大量的工作都需要在准备阶段完成,充分而周到的准备工作是完成数据迁移的主要基础。具体而言,要进行待迁移数据源的详细说明(包括数据的存储方式、数据量、数据的时间跨度);建立新旧系统数据库的数据字典;对旧系统的历史数据进行质量分析,新旧系统数据结构的差异分析;新旧系统代码数据的差异分析;建立新老系统数据库表的映射关系,对无法映射字段的处理方法;开发、部属ETL工具,编写数据转换的测试计划和校验程序;制定数据转换的应急措施。其中,数据迁移的实施是实现数据迁移的3个阶段中最重要的环节。它要求制定数据转换的详细实施步骤流程;准备数据迁移环境;业务上的准备,结束未处理完的业务事项,或将其告一段落;对数据迁移涉及的技术都得到测试;最后实施数据迁移。数据迁移后的校验是对迁移工作的检查,数据校验的结果是判断新系统能否正式启用的重要依据。可以通过质量检查工具或编写检查程序进行数据校验,通过试运行新系统的功能模块,特别是查询、报表功能,检查数据的准确性。数据转换与迁移通常包括多项工作:旧系统数据字典整理、旧系统数据质量分析、新系统数据字典整理、新旧系统数据差异分析、建立新旧系统数据之问的映射关系、开发部署数据转换与迁移程序、制定数据转换与迁移过程中的应急方案、实施旧系统数据到新系统的转换与迁移工作、检查转换与迁移后数据的完整性与正确性。数据转换与迁移的过程大致可以分为抽取、转换、装载三个步骤。数据抽取、转换是根据新旧系统数据库的映射关系进行的,而数据差异分析是建立映射关系的前提,这其中还包括对代码数据的差异分析。转换步骤一般还要包含数据清洗的过程,数据清洗主要是针对源数据库中,对出现二义性、重复、不完整、违反业务或逻辑规则等问题的数据进行相应的清洗操作;在清洗之前需要进行数据质量分析,以找出存在问题的数据,否则数据清洗将无从谈起。数据装载是通过装载工具或自行编写的SQL程序将抽取、转换后的结果数据加载到目标数据库中。 [1]  对数据的检查包括以下6个方面。(1)数据格式检查。检查数据的格式是否一致和可用,目标数据要求为number型。(2)数据长度检查。检查数据的有效长度,对于char类型的字段转换到varchar类型中,需要特别关注。(3)区间范围检查。检查数据是否包含在定义的最大值和最小值的区间中。例如年龄为300或录入日期为4000—1—1显然有问题。(4)空值、默认值检查。检查新旧系统定义的空值、默认值是否相同,不同数据库系统对空值的定义可能不同,需要特别关注。(5)完整性检查。检查数据的关联完整性。如记录引用的代码值是否存在,特别需要注意的是有些系统在使用一段时间后,为了提高效率而去掉了外键约束。(6)一致性检查。检查逻辑上是否存在违反一致性的数据,特别是存在分别提交操作的系统。
收起全文
精华内容
参与话题
问答
  • 数据迁移

    2019-08-16 19:20:49
    1、数据迁移分类: 平迁:不需要调整表结构的数据迁移,即为了性能扩展需要从一台服务器迁移到另外一台服务器上,用数据库的导出导入或备份恢复工具处理即可,当然也要考虑迁移后的一些序列字段的初始值。 拆表...

    1、数据迁移分类:

    • 平迁:不需要调整表结构的数据迁移,即为了性能扩展需要从一台服务器迁移到另外一台服务器上,用数据库的导出导入或备份恢复工具处理即可,当然也要考虑迁移后的一些序列字段的初始值。
    • 拆表迁移:数据迁移的过程中发生了拆表行为
      • 垂直拆表:例如:1、增加附件管理以统一管理文件、图片、音频和视频的url地址等信息导致的拆表行为,
      • 水平拆表:单表数据量达到千万级别时为了提高查询效率而将数据以一定的规律分散不同的表存储
    • 合表迁移:数据迁移的过程中发生了合表行为,将不同维度的描述信息表统一为标签表
    • 增表迁移:数据迁移的过程中发生了新增表行为,为满足业务需求而增加的业务表
    • 字段转换:数据迁移的过程中发生了新增字段是由老字段转换过来的行为,外键由id改为name
    • 新增字段:默认值或值的填写规则
    • 库表模型重构:表结构及表关系发生变化,即由以上多种类型的数据迁移混合而成。
      • 了解新老系统各自数据库的表间关系
      • 了解新老系统旧表和新表的对应关系
      • 了解新老系统的字段含义
      • 了解新老系统的旧字段和新字段的对应关系
    • 异构数据迁移,即从一个数据库平台迁移到另外一个数据库平台,用ETL工具或SQL均可实现,不过要注意业务逻辑的迁移,即存储过程、函数、触发器之类的

    2、系统分析:提高数据迁移的准确性和完整性,有利于分清主次数据(核心数据和非核心数据,一般越基础的数据越核心),有助于了解用户对历史数据的需求避免盲目地全部性的迁移,有助于确定工作量和工作进度。

    • 旧系统:理清功能模块,业务处理流程
    • 新系统:理清功能模块,业务处理流程

    3、旧系统数据的处理规则

    • 基础数据,通常这一类不会发生结构性变化容易迁移,但是会影响所有的相关业务数据,关注点为数据的主键和唯一键的方式。
    • 业务数据
      • 库表结构未变化:这一类数据处理起来会比较容易,一次性导入即可,后续采用增量数据导入。
      • 流程性:这一类数据只有在记录完全关闭后才能结束,需要进行增量导入和数据更新,同时还要进行相关查询界面的开发,以保证旧有数据能够在新系统中查询的到。
      • 库表结构重构,这一类数据的工作量是最重的,就需要仔细去研究新老业务系统的数据结构了。
        • 尽量通过甲方单位来收集齐全相关原系统的相关设计文档,这一点对数据分析很有帮助,通过人的感觉和对数据的观察来分析毕竟不太靠谱。
        • 在原系统上进行相关数据的观察,了解数据的变化和数据表数据的关系(对于比较难以理解的相关字段很有帮助)
        • 比较新老系统数据的差异,如果实在很不靠谱的话,建议按流程数据去处理。

    4、技术:数据迁移分为两个过程:导入和导出,平迁:数据量少的话选择navicat等客户端的导入导出方式,数据量多话选择mysql自带sql语句导入/导出,异构数据迁移:选择ETL工具(kittle等),库表模型重构:使用开发语言+sql控制

    • 导出:
      • 导出对于字段较少/字段内容较少的数据,通过客户端方式可以采用navicat等工具导出,我这里本次导出三个字段,都是11位数字以内的值,用navicat导出每分钟大约250万数据,
      • MySQL自带的导出语句:select into outfile语句;
      • 用MySQL自带导出/导入优点是速度极快,缺点是:只能导出文件是在服务器主机所在的本机地址,对于bi之类拿到不数据库主机权限的同事这个方式可能奢望了。
      • 不过好在对于字段/内容较少的报表第三方客户端工具导出速度也不算特别慢;
    • 导入:
      • 重点记录导入,导入主要是dba做数据迁移了,方式也分客户端和MySQL自带方式:
      • 这里极度推荐用MySQL导入方式load data infile语句,原因是我之前要迁移1.3亿数据,用navicat客户端导入数据要22小时,耗时太长且不确定太多,本身navicat等工具就会有假死风险的存在,
      • 所不建议超过1万以上的数据通过navicat导入;
      • 提高效率的方法:
        • 去除索引
        • 更改引擎:不同引擎load机制不一样,myisam更快,使用myisam可以调整session的参数扩大读取内存,导入前可以关闭唯一校验,导入后再打开。
        • 使用服务器本地读取
        • 查看服务器上mysql对cpu的占用率

    5、注意事项:

    • 先迁移基础数据表,再迁移业务表及业务关系表
    • 不管哪种类型迁移都要关注字段的类型、大小、是否非空和默认值规则
    • 对业务数据的分析最为关键,需要不断的尝试在新系统上不断的测试

    6、参考文档

    https://blog.csdn.net/qq_21108311/article/details/82559119 mysql亿级数据导入导出

    https://blog.csdn.net/qq_26334813/article/details/80503973 大批量数据如何快速的数据迁移

    https://www.cnblogs.com/wayne-ivan/p/3821649.html 关于数据迁移的方法、步骤和心得

    https://www.jianshu.com/p/9f6253e6fcc3?from=timeline

    7、附加:我的数据迁移计划(流程及技术):

    1. 根据数据迁移类型确定迁移计划
    2. 理解业务逻辑保证业务的完整性和一致性
    3. 确定迁移范围:涉及的表、字段以及记录的数据量
    4. 确定表及字段的对应关系,
    5. 技术选型
    6. 原始数据的保存
    7. 确定迁移流程
    8. 新老数据对比:数据量的一致性
    9. 测试

    展开全文
  • 企业云之旅的第一步通常是将数据迁移到云上。 AWS提供多种数据存储服务,并提供多样的将数据迁移到云端的方法。可能你会想,将数据进行备份还原,收集转移设备数据流,一次性转移大量数据,或者使用专线直连,然后想...
  • 数据迁移&数据同步

    千次阅读 2018-12-17 11:22:22
    文章目录历史数据迁移实时数据同步 由于老系统满足不了业务需求,因此需要开发新系统,并且使用新的语言和架构,老系统的数据库数据肯定是不能弃掉,需要平滑迁移。而且还由于老系统的开发人员不在和严重不足,无法...


    由于老系统满足不了业务需求,因此需要开发新系统,并且使用新的语言和架构,老系统的数据库数据肯定是不能弃掉,需要平滑迁移。而且还由于老系统的开发人员不在和严重不足,无法配合新旧系统迁移。基于这个环境有以下方案。

    分为两部分:静态数据的数据迁移和动态数据的数据同步。

    历史数据迁移

    数据迁移部分,主要完成的是静态数据,可以理解为历史数据的迁移,实际业务不要求很高的实时性,有很多方案,比如使用新旧库中的中间表,copy表,停机迁移、使用迁移工具sqlload等。可以线下调试完毕,然后上线,也可以在用户访问低峰期访问只读库的方式迁移。网上有很多方案,在这里不再赘述。

    实时数据同步

    现状最大的问题是,我们的老系统没有人维护,只能是新系统驱动的模式进行mapping。但是业务的实时性还得保证。因此提出使用以下方案保证实时性。

    1. 创建实时同步表
      DDL如下
    CREATE TABLE `table_action_log` (
      `id` bigint(22) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
      `table_name` varchar(100) DEFAULT NULL COMMENT '被操作表名称column_value',
      `table_id_value` bigint(100) DEFAULT NULL COMMENT '设定的被比对的列值,最好是主键',
      `action_type` tinyint(1) DEFAULT NULL COMMENT '操作类型(1、insert 2、update 3、delete)',
      `create_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    具体里面有备注,这个表记录的是各个表的操作明细,insert,update,delete操作。

    1. 为每个需要实时同步的表增加触发器,记录修改记录

    插入

    CREATE DEFINER=`root`@`%` TRIGGER `insert` AFTER INSERT ON `t_order` FOR EACH ROW
    BEGIN
    
    INSERT INTO
     table_action_log
     (table_name,table_id_value,`action_type`)
    VALUES
     ("t_order",new.id,1);
     
    END;

    更新

    CREATE DEFINER=`root`@`%` TRIGGER `update` AFTER UPDATE ON `t_order` FOR EACH ROW BEGIN
    BEGIN
    
    INSERT INTO
     table_action_log
     (table_name,table_id_value,`action_type`)
    VALUES
     ("t_order",new.id,2);
    
    END;

    删除

    CREATE DEFINER=`root`@`%` TRIGGER `delete` AFTER DELETE ON `t_order` FOR EACH ROW 
    BEGIN
    
    INSERT INTO
     table_action_log
     (table_name,table_id_value,`action_type`)
    VALUES
     ("t_order",old.id,3);
    
    END;
    1. 在新系统中建立定时同步任务,每隔30秒(看公司对实时性的要求进行自己设定)进行mapping业务逻辑。

    通过以上三步,相信大家也对这个同步方法有一个了解了,就是通过需要实时同步的表建立触发器的方式,把修改过的表以及字段保存table_action_log中,然后根据该log进行实时同步,避免了扫库。

    以上为自己的一点心得,如果有什么不合理的地方,欢迎大家指正,或者大家有什么更好的方案,请指教。

    展开全文
  • MySQL 亿级数据导入导出/数据迁移笔记

    万次阅读 多人点赞 2018-09-09 17:10:49
    数据迁移,工作原理和技术支持数据导出、BI报表之类的相似,差异较大的地方是导入和导出数据量区别,一般报表数据量不会超过几百万,而做数据迁移,如果是互联网企业经常会涉及到千万级、亿级以上的数据量。...

    最近MySQL的笔记有点多了,主要是公司Oracle比较稳定维护较少,上周被安排做了一个MySQL亿级数据的迁移,趁此记录下学习笔记;

     

    数据迁移,工作原理和技术支持数据导出、BI报表之类的相似,差异较大的地方是导入和导出数据量区别,一般报表数据量不会超过几百万,而做数据迁移,如果是互联网企业经常会涉及到千万级、亿级以上的数据量。

    导入和导出是两个过程,即使做数据迁移我们也要分开来看,同时,导入/导出方式又分为:

    1、MySQL自带导入/导出方式

    2、各类客户端导入/导出方式

     

    先总结下导出:

    1、导出对于字段较少/字段内容较少的数据,通过客户端方式可以采用navicat等工具导出,我这里本次导出三个字段,都是11位数字以内的值,用navicat导出每分钟大约250万数据,

    2、MySQL自带的导出语句:select into outfile语句;

    SELECT ... FROM TABLE_A --可以加where条件
    INTO OUTFILE "/path/to/file" --导出文件位置
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' -- 字段分割符和包含符
    LINES TERMINATED BY '\n';--换行符

    这里fields之前很简单都可看懂,不做说明,讲下fields之后的:

    FIELDS TERMINATED BY ',' 代表我字段和字段之间用 逗号 分开 ,如:字段 A 字段 B,导出时候显示格式为:A,B

    OPTIONALLY ENCLOSED BY '"' 代表字段内容用双引号包含,导出格式如: "A","B"

    LINES TERMINATED BY '\n';每条数据换行区分,导出格式如:

    "A","B"

    "A1","B1"

     

    当然,字段区分和包含符号可以自行定义,定义为:'    #  都可以

     

    用MySQL自带导出/导入优点是速度极快,缺点是:只能导出文件是在服务器主机所在的本机地址,对于bi之类拿到不数据库主机权限的同事这个方式可能奢望了。不过好在对于字段/内容较少的报表第三方客户端工具导出速度也不算特别慢;

     

    导入:

    重点记录导入,导入主要是dba做数据迁移了,方式也分客户端和MySQL自带方式:

    这里极度推荐用MySQL导入方式,原因是我之前要迁移1.3亿数据,用navicat客户端导入数据要22小时,耗时太长且不确定太多,本身navicat等工具就会有假死风险的存在,所不建议超过1万以上的数据通过navicat导入;

     

    MySQL自带导入方式:

    --官方文档定义如下,注释是我自己理解添加的:

    LOAD DATA 、
    [LOW_PRIORITY | CONCURRENT]--无人使用数据库再执行/立即执行
    [LOCAL]--带这个参数指服务端即不是服务器主机上读取文件,不带这个参数是默认在服务器主机上读取文件
    INFILE 'file_name' --读取文件地址、文件名
        [REPLACE | IGNORE]--遇到重复数据是:替换/重复写入,建议使用ignore重复写入
        INTO TABLE tbl_name --导入到那个表
        [PARTITION (partition_name [, partition_name] ...)]--这行参数可以不要,建议用后面的fields
        [CHARACTER SET charset_name]--设定导入内容字符格式,utf-8还是GBK等都可以指定
    
    
        [{FIELDS | COLUMNS}  --fields标识符
            [TERMINATED BY 'string'] --系统字段通过什么符号区分
            [[OPTIONALLY] ENCLOSED BY 'char']--系统字段本身的起始和结束用什么符号区分
            [ESCAPED BY 'char']--转义符,如果是文本文件,在文本字段中有特殊字符如双引号,可通过定义转义符忽略文本文件特殊字符
        ]
        [LINES  --lines标识符
            [STARTING BY 'string'] --定义行开头的字符串,如果行开头没有字符标识,一般可以不写
            [TERMINATED BY 'string']--行结束字符串标识,通过定义字符来区分行与行的数据
        ]
        [IGNORE number {LINES | ROWS}]--忽略文件中前面多少行,一般都不写
    --后面都是指定插入到哪些字段
        [(col_name_or_user_var
            [, col_name_or_user_var] ...)]
        [SET col_name={expr | DEFAULT},
            [, col_name={expr | DEFAULT}] ...]

    原文上说的用load data能速度极快的导入数据到数据库中,但是如果要使用fields和lines参数,则必须要带一个参数值且fields必须在lines参数之前;

    本次我使用的语句是:

    load data infile '/data/files/T_CUST_INFO.txt' --默认指定服务器文件夹
    ignore into table t_dq_user --允许重复记录插入
    fields terminated by ','  --判断字段通过逗号标识来分隔开
    lines terminated by '\n'(CustID,DeviceNo,logintype);--通过换行标识来解析成为每一条数据和插入到我指定的字段

    插入是很简单的语句,这里我不做具体举例操作,我要分享的是如何提高插入效率;

     

    因为在我第一次用语句插入的时候,从晚上12点开始执行,到第二天11点还没有执行完。所以不是说用了load不配置其他的就一定很快;

     

    本次我插入的数据格式如图:

     

    文本格式如下:

     

    一共有1亿4千万条数据,以文本文档的形式导出的,有4.3G大小;通过ftp软件上传到服务器/data/files文件夹中;

     

     

    吐槽点1:

    由于项目要求三个字段都要有索引,所以我在建表的时候就加了索引,导致耗时遥遥无期;

    原因:

    索引是要占空间的,如果导入三个字段都要加索引,代表了我要每个字段都写入索引一次,耗时比不加索引多了几倍;

    优化方法:

    导入前把表的索引去掉留自增id一个,等导入完之后再添加

    吐槽点2:

    engine的选择:

    MySQL的engine对如load写入是不一样的,特别是有master-slave主从备份的机制:

          对MyISAM引擎: 
              (1)对master服务器进行  ‘load’ 操作, 
              (2)在master上所操作的load.txt文件,会同步传输到slave上,并在tmp_dir 目录下生成 load.txt文件 
                   master服务器插入了多少,就传给slave多少 
              (3)当master上的load操作完成后,传给slave的文件也结束时, 
                   即:在slave上生成完整的 load.txt文件 
                   此时,slave才开始从 load.txt 读取数据,并将数据插入到本地的表中 

          对innodb引擎: 
              (1)主数据库进行  ‘Load’ 操作 
              (2)主数据库操作完成后,才开始向slave传输 load.txt文件, 
                   slave接受文件,并在 tmp_dir 目录下生成 load.txt 文件 
                   接受并生成完整的load.txt 后,才开始读取该文件,并将数据插入到本地表中 

     

    所以追求极致速度,几十亿数据的,可以考虑选择myisam引擎,MySQL默认应该是innodb;不过本次我并没有更改引擎,本人不推荐更改默认的innodb引擎,毕竟Oracle官方主推引擎,综合性最强,除非有特殊性,不推荐使用myisam。如果用了myisam,注意一下两点:

    用了myisam,可以调整几个session值扩大读取内存,提高读取数据,语句如下:

    SET SESSION BULK_INSERT_BUFFER_SIZE = 256217728 ;
    SET SESSION MYISAM_SORT_BUFFER_SIZE = 256217728 ; 

    对于MyISAM引擎,导入前的唯一校验可以先关闭,之后再打开:

    SET UNIQUE_CHECKS=0 --关闭

    SET UNIQUE_CHECKS=1 --打开

     

    吐槽点3:

    虽然MySQL支持本地客户端读取文件,但是由于各种网络原因,在几十几百条数据的情况下没有什么影响,但是到了亿级数据量,即使1毫秒的影响也会放的特别大,所以建议用ftp传到服务器上进行读取

     

    吐槽点4:

    经验分享,导入之后看看服务器状态:top 命令看看主机cpu MySQL占用情况,理论上会占用较多cpu,我的第一次耗时贼长的那次,cpu占用10%,这是极度不正常的导入,第二次正常导入cpu占用到了110%,这才是再急速写入的状态;最后1.4亿数据只耗时:7分多中,所以一定要在执行语句后监控下服务器,否则语句不一定在正常执行。

    cpu占用:

     

    注意:load和insert最大的区别是:load只操作语法一次,之后就是一直是数据批量插入,而insert 是每一个数据操作一次,也遍历一次字段索引,所以insert本身对于大数据来说是极慢的。

     

    总结:

    本次优化我感觉最大最明显的变化是,去除索引后,导入速度极快,索引,重要的事情再说一遍:

    导入时候可以先去掉索引,导入完之后再添加。

     

    --------------------------------------------------------------------------------------------------------------------------------

    2020.7.3更新

    MySQL导入大数据时一定要注意max最大事物限制,前几个月在做数据迁移时,在MySQL8.0 MGR集群上发生了大事物限制导致实例出问题重启了MySQL,默认配置应该是一亿五千万的事物限制,当时导入的数据比较大也没做参数扩展同时也没做数据切分导入或者限流导入,导致数据库堵塞重启,按照公司要求7*24*365机制,这算是事故了,如果高要求的公司,建议导入的时候注意MySQL本身配置或者导入进行事物提交限制;

    展开全文
  • Oracle数据迁移

    千次阅读 2018-08-24 07:09:00
    本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移: 一、数据迁移工具 1、数据迁移工具 (1)数据泵 (2)外部表:external table (3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载...

    本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移:

    一、数据迁移工具

    1、数据迁移工具

    (1)数据泵

    (2)外部表:external table

    (3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载到ORACLE数据库中

    (4)数据库备份工具:rman,recover manager恢复管理器

    2、逻辑导入导出工具

    (1)exp:逻辑导出工具

    (2)imp:逻辑导入工具

    3、数据泵

    (1)expdp:数据泵逻辑导出工具export data pump

    (2)impdp:数据泵逻辑导入工具import data pump

    4、数据库导出模式

    (1)全库导出

    (2)导出用户

    (3)导出表空间

    (4)导出表(数据泵)

    二、数据迁移实例

    使用exp,imp导入导出数据

    1、全库导出

    mkdir -p /home/oracle/backup/exp创建导出目录

    exp system/oracle file=all.dmp log=all_exp.log full=y

    2、导出用户

    select username from dba_users;先查看当前数据库拥有哪些用户

    (1)单用户hr导出

    单用户hr导入,在目标库中进行,导入库中需要提前创建用户hr,并赋予相应权限

    (2)多用户导出

    多用户导入

    3、导出表

    (1)单表导出

    导入

    (2)多表导出,导入

    使用数据泵导入导出数据

    通过调用dbms_datapump系统包来完成导入导出操作

    1、需要数据库创建目录对象,要把目录对象的读写权限授予相应的用户。

    (1)在操作系统中创建目录

    mkdir -p /home/oracle/backup/dir

    (2)在数据库中创建目录对象,指向上一步创建的目录

    create directory dbpump_dir as ‘/home/oracle/backup/dir’;

    (3)给相应用户读写权限,用到什么用户就赋予它读写权限

    grant read,write on directory dbpump_dir to system;

    (4)开始导入导出

    2、普通导入导出

    3、通过参数文件导入导出数据

    创建pfile.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_exp.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT.LOG

    TABLES=

    (

     HR.EMPLOYEES,HR.DEPARTMENTS

     )

    QUERY=

    (

     "EMPLOYEES:WHERE DEPARTMENT_ID > 10",

     "DEPARTMENTS:WHERE DEPARTMENT_NAME LIKE '%IT%'"

    )

    导入同样需要在目标库建立数据库目录对象

    create directory dbpump_dir as ‘/home/oracle/backup/dir1’;

    4、通过参数文件导入导出用户

    pfile_user.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_USER.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT_USER.LOG

    SCHEMAS=U2,U1

    导入用户

    5、通过参数文件导入导出表空间

    pfile_tbs.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_TBS.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT_TBS.LOG

    TABLESPACES=TBS1,TBS2,TBS3

    (1)要把目标库的表空间创建好

    (2)把表空间所属对象创建好

    (3)赋予相应对象权限

    导入

    三、外部表

    ORACLE外部表用来存取数据库以外的文本文件(test file)或ORACLE专属格式文件。因此,建立外部表时不会产生段,区,块等数据结构,只有与表相关的定义放在数据字典中,外部表,就是存储在数据库外的表,当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容修改。

    1、创建目录对象并授权,从9i开始,ORACLE数据库若要存取文件系统,就必须使用目录对象,以相对路径方式存取路径,强化数据库的安全性。

    2、从数据库导出数据到外部表

    create table ext_emp_query

    (first_name,last_name,department_name)

    organization external

    (type oracle_datapump

    default directory tab_dir

    location('emp1.exp','emp2.exp','emp3.exp')

    )

    parallel

    as

    select e.first_name,e.last_name,d.department_name

    from employees e,departments d

    where e.department_id=d.department_id and

    d.department_name in ('Marketing','Purchaing')

    3、外部插入数据

    create table hr.ext_tab2

    (id number,name varchar2(20))

    organization external

    (type oracle_loader

    default directory tab_dir

    location

    (tab_dir:'ext_tab1',

    tab_dir:'ext_tab2')

    );

    创建完成后需要自己到指定目录创建文件,如果文件提前存在,那么将无法查询到文件内容

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1

    展开全文
  • Redis数据迁移-键迁移

    万次阅读 2017-07-04 19:01:01
    Redis数据迁移-键迁移 一.数据迁移 1.1 键迁移 有时候我们想将一个redis的数据迁移到另一个redis中,redis提供了三种方式来满足数据迁移的需求,分别是move、dump+restore、migrate 1.1.1 move key db Redis...
  • zookeeper数据迁移

    2019-05-10 16:58:50
    1.zookeeper自带命令实现数据迁移 2.使用第三方jar实现拷贝迁移 zookeeper原生命令行实现数据迁移 原生命令不需要第三方参与,直接把它的最新数据和日志拷贝到另一台服务器的数据目录下重启即可。 找到服务器上的...
  • Exchange数据迁移

    2018-12-06 12:03:31
    常规的Exchange数据迁移分为以下几种:1、组织内部不同数据库之间的迁移:这种通过创建移动请求就可以完成比较简单2、不同组织之间(跨域)的迁移:相对较为复杂由于域名不一样所以操作起来会比较复杂今天重点跟各位...
  • 我们在开发或者产品升级的时候经常会遇到托管模型的结构化修改(也就是表的结构改变),那么我们就需要数据迁移到新的模型中。 轻量级迁移方式 默认的迁移方式 迁移管理器迁移方式 现在记录一下最后一种迁移方式,...
  • hive数据迁移

    千次阅读 2018-09-14 16:25:57
    HIve 数据迁移 1.跨Hadoop平台之间的Hive表迁移操作 1.1 分析 实现两个hadoop平台之间的数据迁移,需要将原平台的Hive表元数据文件使用export导出到HDFS文件系统。通过Distcp命令将导出的元数据文件迁移到新集群...
  • 在线数据迁移

    千次阅读 2018-06-19 16:43:41
     在线数据迁移,是指将正在提供线上服务的数据,从一个地方迁移到另一个地方,整个迁移过程中要求不停机,服务不受影响。根据数据所处层次,可以分为cache迁移和存储迁移;根据数据迁移前后的变化,又可以分为平移...
  • ArcSDE数据迁移

    2017-09-12 13:50:52
    Arc SDE 数据迁移 题记 这篇文章主要是利用ArcGIS桌面、ArcSDE命令提供的多种ArcGIS数据导入导出数据(可以理解为数据迁移)的方式和数据库迁移的方式(以Oracle数据库为例),来介绍一下ArcGIS不同迁移方式、数据库...
  • greenplum数据迁移记录

    千次阅读 2017-09-07 18:28:07
    greenplum数据迁移 gptransfer数据迁移
  • 【Hbase数据迁移】使用hbase org.apache.hadoop.hbase.mapreduce.Export 实现跨集群数据迁移描述数据导出数据导入后记 描述 工作中,有时会碰到进行两个物理隔离的Hbase集群间数据迁移的需求,如果Hbase表足够大,...
  • hadoop 数据迁移

    千次阅读 2018-11-18 13:19:36
    数据迁移使用场景 冷热集群数据分类存储,详见上述描述. 集群数据整体搬迁.当公司的业务迅速的发展,导致当前的服务器数量资源出现临时紧张的时候,为了更高效的利用资源,会将原A机房数据整体迁移到B机房的,原因可能是...
  • redis数据迁移

    千次阅读 2017-11-14 17:38:04
    redis数据迁移有三种方式: 因为migrate操作流程简单且操作具有原子性,因此redis数据的迁移一般采用这种方式 语法: migrate IP 端口 待迁移的键 redis库的索引 迁移的超时时间 [copy] [replace] 可选参数:copy ...
  • 数据迁移总结

    千次阅读 2016-10-17 16:15:10
    1.复杂数据迁移时,涉及到单数据源读,单数据源写,并且在写数据源中读的情况,那么在迁移程序必须设置多数据源对数据读写处理.尤其在数据结构比较混乱的时候!  最关键的是在数据迁移错误时,进行程序补救措施,这可以...
  • Redis数据迁移

    2018-09-20 11:22:19
    最近需要迁移服务器数据,需要将A服务器的redis数据迁移到B服务器,不能覆盖B服务器数据。如果不考虑数据覆盖问题直接拷贝A服务器rdb文件就可以了。 1.开启A服务器AOF功能 由于之前没有开启AOF功能,如果开启了...
  • HBase数据迁移方案

    2019-09-25 15:32:11
    HBase2.1.0数据迁移方案 文章目录HBase2.1.0数据迁移方案步骤一、迁移HFile数据步骤二、迁移表的region步骤三、bulkload数据 业务要求:将数据从旧的集群HBase1.2迁移到HBase2.1.0中去。每个表的数据量级10TB左右 ...
  • 数据迁移测试

    千次阅读 2016-09-05 10:09:34
    数据迁移测试的关注点
  • 数据迁移实施方案

    万次阅读 多人点赞 2017-09-03 19:10:27
    最近经历了一场大型的数据迁移测试,因为以前对数据迁移测试研究甚少,所以对测试实施方案的制定非常的棘手,在网上也查询了很多,发现相关资料很少,并且大部分都是一些理论指导,没有讲到具体的如何去做的方法,...
  • 数据迁移方法

    千次阅读 2015-12-29 15:08:02
    数据迁移方法 对于业务数据的迁移,目前主要采用如下五种方法: 1) 基于磁盘阵列之间的数据复制技术的数据迁移。 对于两套同系列的磁盘阵列,可以通过阵列之间的数据复制技术来实现数据的迁移,如目前的HDS的...
  • 数据迁移的几种方式 - MySQL数据库

    千次阅读 多人点赞 2020-05-12 00:16:34
    本文关键字:MySQL、数据库、数据迁移、导入、导出。开始和数据库玩耍以后,我们将一直与SQL和数据打交道。在日常的操作中,我们只需要对指定的数据库进行操作,执行增删改查,权限管理等。但有些时候由于项目的升级...
  • Pymongo 数据迁移

    千次阅读 2019-04-06 10:47:49
    Pymongo安装完毕,环境变量确定没问题: mongodump -h localhhost:27017 -d dbName(数据库名称) -o dir(保存输出的路径) Pymongo是绿色版: cd dirpymongo(Pymongo的路径) ...不过,数据迁移的话,...

空空如也

1 2 3 4 5 ... 20
收藏数 37,067
精华内容 14,826
关键字:

数据迁移