历史数据迁移分三个步骤进行:

在线库与历史库把需要迁移(或转入)的表都改成分区表

在线库上的历史数据迁移到历史库

在线库上删除已备份的历史数据

其中步骤1只执行一次,步骤2、3可以每月执行一次,即每月清理一次历史数据。

下面是每一步的方案比较:

一. 在线库与历史库需要迁移的表都改成分区表

把需要迁移(或迁入)的表改成分区表,每月一个分区,改成分区表不需要对目前前的程序进行修改,对之前的应用是透明的。

改成分区表后,在做历史数据迁移时,可以做到只读取一个分区的数据,读取速度快;删除历史数据时,可以删除一个分区。

改为分区表的缺点是需要通过job定期新增分区和删除已备份分区,但这两个操作都是ddl操作,可在秒级完成。

下面是建立分区表的三种方案:

方案1. 根据原表建立分区表:

create table sys_visit_log_his_new partition by range(log_date)(

partition sale_2012_01 values less than(to_date('2012-02-01','YYYY-MM-DD')),

partition sale_2012_02 values less than(to_date('2012-03-01','YYYY-MM-DD')),

partition sale_2012_03 values less than(to_date('2012-04-01','YYYY-MM-DD')),

partition sale_2012_04 values less than(to_date('2012-05-01','YYYY-MM-DD')),

partition sale_2012_05 values less than(to_date('2012-06-01','YYYY-MM-DD')),

partition sale_2012_06 values less than(to_date('2012-07-01','YYYY-MM-DD')),

partition sale_2012_07 values less than(to_date('2012-08-01','YYYY-MM-DD')),

partition sale_2012_08 values less than(to_date('2012-09-01','YYYY-MM-DD')))

as select * from sys_visit_log_his;

drop table sys_visit_log_his;

rename sys_visit_log_his_new to sys_visit_log_his;

这种方案只能在业务空闲时实施。

方案2. 在线重定义的方式建立分区表

可以在线对库直接修改,对业务无影响,但实施步骤比较复杂。

方案3. 将原表导出,根据原表建立空分区表,删除原表,然后导入

这种方案也是只能在业务空闲时实施。

经测试,以上三种方案效率:1>2>3

对1千万行的数据进行测试,方案1用时7分多钟,方案2用时14分钟,方案3用时15分钟。

推荐:方案1

二. 在线库上的历史数据迁移到历史库

方案1. 历史库通过dblink直接插入

方案2. 历史库通过dblink直接插入的同时,每1000行一提交

方案3. exp或expdp加where条件,导出一个月的历史数据,传输到历史库,imp或impdp导入到历史库

方案4. 表空间传递+分区交换,每个分区一个表空间,导出分区的表空间,拷到历史库导入。

这四种方案,效率由高到低是:4>3>1>2

方案4虽然最快,但会造成库中出现太多的表空间,管理不便,操作也最复杂。

另外三种方案,把1千万行数据从在线库导入到历史库的测试,方案3用时10分钟,方案2用时18分钟左右,方案1比方案2稍快一点。

推荐:方案3

三. 在线库上删除已备份的历史数据

方案1. 直接delete 已备份的数据 对海量数据来说,delete操作是漫长的等待,删完后,还要处理表碎片,花费时间也很长。

方案2. 把未备份的数据重建一张表,删除原表,重建索引。

方案3. 删除已备份的分区,秒级完成,这也是为什么增加了步骤一,建立分区表的原因。

这三种方案效率由高到低是:3>2>1

推荐:方案3

为者常成,行者常至

mysql 历史数据迁移,MySQL 历史数据表迁移方法相关推荐

  1. mysql大表迁移_MySQL 大表迁移

    一.需求分析 线上100G 大表 table1 迁移,从DB1 迁移到DB2. 二.环境要求: 1.MySQL 使用InnoDB 存储引擎,且开启独立表空间: 2.两个库的MySQL版本一致(未做不同 ...

  2. mysql导vertica_vertica从其他表迁移数据到新表(insertinto语句用法实例)

    #例:迁移微博用户数据. 由于源表weiboFriend与目标表weiboUser的表结构不完全相同,因此在语句不但要严排列字段顺序,而且还要用缺省(如:'' 等)补齐源表中没有的字段 具体SQL语句 ...

  3. MySQL备份和恢复数据表的方法(1)

    备份是最简单的保护数据的方法,本节将介绍多种备份方法.为了得到一个一致的备份,在相关的表上做一个LOCK TABLES,你只需一个读锁定,当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该 ...

  4. mysql查询无主键的表的方法:

    查询无主键的表: SELECTtable_schema,table_name FROMinformation_schema.TABLES WHEREtable_name NOT IN ( SELECT ...

  5. mysql 复制数据_MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库.使用以下方法,可以非常简单地实现. 假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb.步骤如 ...

  6. MySQL中删除所有表的方法

    MySQL删除数据库中所有表的方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 -- 切换到 ...

  7. mysql 用命令行复制表数据到新表

    MySQL用命令行复制表的方法 mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 1 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; ...

  8. mysql 数据转移历史表_mysql 历史数据表迁移方案

    当业务运行一段时间后,会出现有些表数据量很大,可能对系统性能产生不良的影响,常见的如订单表.登录log表等,这些数据很有时效性,比如我们一般很少去查上个月的订单,最多也就是报表统计会涉及到. 在我们的 ...

  9. python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库 ...

  10. mysql 日志表迁移通过存储过程从当前表迁移到历史表

    MySQL存储过程通过游标循环遍历 简单说明 存储过程详情 调试存储过程 简单说明 日志表迁移,从当前表迁移到历史表. 通过存储过程,实现的逻辑:查询符合迁移条件的记录,放入游标中,通过循环遍历游标, ...

最新文章

  1. 详细讲解设计LOGO思维方式和方法【转】
  2. linux nexus bulid
  3. 算法题26 复杂链表的复制
  4. ACM入门之【字典树/Trie】
  5. MySql按字段分组取最大值记录
  6. 从客户端中检测到有潜在危险的request.form值
  7. java xml 反射_java使用dom4j解析xml配置文件实现抽象工厂反射示例
  8. php cdi_Quarkus的其他(非标准)CDI功能
  9. orm java_Java 8 Friday:不再需要ORM
  10. react学习(43)----react中将一个元素渲染为 DOM
  11. 这家共享单车确认已坑12.5万用户 总金额超2512万元
  12. 计算机无法检测更新失败怎么办,Win10电脑更新失败提示你的设备中缺少重要的安全和质量修复如何解决...
  13. Importing the numpy c-extensions failed 解决方案
  14. html5 苹果 风格,[网页设计]8个超炫酷仿苹果应用的HTML5动画
  15. CHD-5.3.6集群安装
  16. ad网络标号设置经验_ad放置网络标号
  17. Web基础——CSS基础概念(2)
  18. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java社团管理系统0gl2e
  19. 2019-4—22爬取头条新闻街拍图片
  20. ionic3保存图片到本地相册

热门文章

  1. androidの读取短信内容
  2. python命名规则数字开头的成语_浅谈Python中带_的变量或函数命名
  3. postman团队人数限制_您的团队需要最低在制品限制吗?
  4. ACM javaIO 快速 读写
  5. 计算机网络——第三章 数据链路层(详细附图)
  6. 李宏毅机器学习课程自测练习题
  7. linux内存管理笔记(十一)---CMA
  8. 飞冰 - ICE Design Pro 使用指南
  9. IT战略规划之流程再造 —2013年中科院计算所培训中心系列公益讲座
  10. MySQL使用group by分组查询每组最新的一笔数据