Oracle 技术嘉年华:数据迁移最佳实践

  • InfoQ 中文站

2012 年 11 月 22 日

话题:架构文化 & 方法

2012 年 11 月 9 日 -10 日,第二届“Oracle 技术嘉年华”将在北京国宾酒店隆重举行,届时国内外数据库界大师将齐聚北京,为大家奉上两天的技术“大餐”! 本届大会是由 ACOUG、ITPUB、IT168 和云和恩墨共同主办的,会议主题为“数据库技术企业应用最佳实践”。

今天是 Oracle 技术嘉年华 2012 的第二天,在上午举办的分会场中,来自云和恩墨技术总监,Oracle ACE 总监,ACOUG 发起人张乐奕老师,为我们带来了关于《数据迁移最佳实践——从小机到 PC》的话题分享。

▲Data Amount

在迁移前想要数据库回滚问题

在本次演讲中,张乐奕老师特别提到了数据库回滚的问题。“在了解了数据库迁移方法以及相关的方法论后,还有一个问题需要大家要特别考虑,也是在进行数据库迁移之前就要考虑的——怎么样去回滚。”回滚意味着什么? 意味着我们的数据库迁移失败了,因为做任何事都有可能失败,所以我们需要提前考虑合理的解决方案。

▲云和恩墨技术总监,Oracle ACE 总监,ACOUG 发起人张乐奕老师

关于数据库回滚,张乐奕老师介绍了两种情况下的回滚。一种是在迁移的过程中失败了,这种情况比较好处理,因为大家一般都会想到 ; 第二种情况是我们迁移成功了,系统已经成功的运行了一段时间,但之后由于一些原因导致新系统无法使用 (比如数据和应用层之间有无法调和的矛盾,应用不支持数据库),而这时候有一些新的数据,已经在新系统里面,那我们该怎么办?

▲如何进行 rollback?

这里我们分析这两种情况,针对第一种情况,如果我们在迁移过程中失败了,那么最好的解决方法就是不要回滚,如果在迁移过程中,我们没有碰原数据库,那么我们将原数据库重启就好了,不要进行回滚操作。特别是,目前我们遇到的大部分场景,在迁移过程中,都没有必要碰原数据库。

针对第二种情况,如果我们在迁移成功后,要发生回滚,这时我们一定要想要一个同步的机制。无论是用 Goldengate、刷新或者其他方式,包括 Dataguard,一定要有一个同步的机制。同时,这个同步的机制要保持多长时间,都是我们要事先计划好的。

实际案例分析

在本次演讲中,张乐奕老师讲到了一个实际案例,来阐述他们是如何在短时间内成功迁移一个数据量庞大的数据库的。据介绍,本次迁移共有 10TB 的数据量,共在五个小时完成。

▲相关的 Case

其中,针对这 10TB 的数据,我们将其中 99% 的数据,放在几张大的表里面,并且不是分析表,是单表 ; 原平台是 IBM AIX,目标平台是 RHEL x86-64; 原平台是 10.2.0.4 RAC,目标平台是 10.2.0.4 RAC,这是整个项目的一个大概情况。

具体方法

首先,我们将所有的大表用 Goldengate 做同步,这项工作大概需要一周的时间,并且在这段时间内,是不需要停机的。这里需要说明的是,可能大家看起来这个方法很简单,但实际并不是这样。因为这里的数据表非常大,一个将近 8TB 的单表,做 Goldengate 做同步并不是很容易。根据以往的例子看,同步这一张大表,需要一个月的时间,而我们只用了一个星期,完成这张表的初始化以及数据同步。

其次,是多种方法并在一起用。首先,针对剩余的 60GB 的数据量,我们做 Datapump 的到处和导入,其中我们用到了自己的并行。这个步骤,我们一共用了 80 分钟的时间,这也是数据库停机的所有时间。其中,我们用了 15 分钟做 expdp、10 分钟做 scp、55 分钟做 impdp。

查看原文地址http://tech.it168.com/a2012/1110/1420/000001420194_all.shtml

架构文化 & 方法