概述
Linux™、UNIX® 和 Windows® 上的 DB2 Universal Database 的几大优点之一就是它的可伸缩性。您可以很容易地启动单个分区上的小型 DB2 UDB Enterprise Server Edition(ESE)数据库,然后在需求增加时,迁移到多分区的环境中。
扩展到多台服务器需要 DB2 UDB V8.2 ESE 的数据库分区功能(Database Partitioning Feature,DPF),这是一个独立授权的功能。DPF 为在多个分区(逻辑的或物理的)上分布大型数据库提供了必要的可伸缩性,并利用了一个无共享(shared-nothing)结构。DPF 可以使独立的 SMP 服务器和包含多台服务器的环境都受益。通过 DPF“分治”的处理,可伸缩性可在单一服务器(纵向扩展)或跨服务器集群(横向扩展)中获得增强。
使用 DPF 最显而易见的理由之一就是提高查询工作负载和 INSERT/UPDATE/DELETE 操作的性能。DPF 还可以克服部分 DB2 的架构限制。例如,在 DB2 中,对 4 KB 的页面大小而言,表的最大大小是 64 GB;对于 8 KB 的页面大小而言,表的最大大小是 128 GB;对于 16 KB 的页面大小而言,表的最大大小是 256 GB;对于 32 KB 的页面大小而言,表的最大大小是 512 GB。在 DB2 中,表和表空间的大小限制是根据每个分区进行规定的。跨多个分区划分数据库将允许您根据环境中分区数目的因数来增加表的最大大小。
本文的目标就是提供简单而又详细的指导,向您展示如何将数据库从 DB2 UDB ESE V8.2 单个分区环境迁移到 DPF(逻辑分区)环境。我们将演示如何在脱机情况下划分数据库,以及如何将数据库从 ESE 迁移到 DPF 逻辑节点(纵向扩展)环境。我们已经为初学用户准备好了一些信息,但这些信息对于已经熟悉 DPF 架构的 IT 架构师和专家也同样有用。
按照下面的步骤,您可以将数据库从单个分区(DB2 ESE)迁移到 1000 个分区(DB2 DPF)。虽然在这个实例中,我们只使用一台IBM eServer pSeries 630 机器将数据库迁移到两个逻辑分区上。
注意:下列易于遵循的详细指导是于 2005 年 2 月 18 日进行技能交流期间在业务合作伙伴的站点上测试的。在本文中,我们将用一个表作为例子,演示如何将数据库从 DB2 ESE 迁移到 DB2 DPF 环境中。在进行技能交流期间,我们将 15 个表划分成两个逻辑节点,将 4 个 IBM FAStT100 磁盘用于节点 0,并将 4 个 IBM FAStT100 磁盘用于节点 1。
图 1 说明了这个 DPF 环境。
图 1. 跨两台机器的分区数据库
注意:在技能交流的练习中,我们在一台机器上设置了两个逻辑节点。
实例环境
操作系统:AIX® 5.2 ML4
硬件:IBM eServer™ pSeries® 模型 p630:
- HS20 Blade Server
- 8 GB RAM
- 4 × 1 GHz POWER4™ 处理器
- 4 个内部磁盘
存储子系统:IBM FAStT100 磁盘 —— 8 个磁盘
IBM 中间件:用于 AIX 的IBM DB2 UDB Enterprise Server Edition V8.2 Fixpak 7a(带有 DPF 功能)
迁移步骤
以下是将数据库从 DB2 UDB ESE 环境成功迁移到 DB2 UDB DPF 环境所遵循的步骤:
- 备份 ESE 数据库
- 收集当前实例和数据库环境
- 生成 DDL
- 导出表
- 设置逻辑节点环境
- 在两个逻辑节点中创建>系统临时表空间
- 在节点 0 和节点 1 上创建数据库分区组
- 创建缓冲池
- 在节点 0 和节点 1 上创建表空间
- 在 DPF 环境中创建和装入您的表
- 在 DPF 环境中检查表的分布
- 新节点上的数据库配置参数
- 备份数据库 — DPF 环境
步骤 1. 备份 ESE 数据库
首先要备份数据库,确保在发生错误时,可以恢复到前面的环境。从命令行输入下列命令。在本例中,“ABCDB”是数据库名,而/db2backup 是存储该备份的路径。
db2stop force
db2start
db2 backup database ABCDB to /db2backup
|
步骤 2. 收集当前实例和数据库环境
从 DB2 命令行执行下列命令,以便搜集并存储当前环境的所有细节。
db2 connect to ABCDB
db2 get dbm cfg > dbm.out
db2 get db cfg for ABCDB > db.out
db2set –all > db2set.out
db2 "select * from syscat.bufferpools" > bp.out
db2 list tablespaces show detail > tblsp.out
db2look –d ABCDB –e –l –a –o db2look.out
|
步骤 3. 生成 DDL
接下来是生成数据定义。
- 从命令行执行db2look 命令,以生成 DDL:
db2look -d ABCDB -t S_OPTY_POSTN -e -l -a -o S_OPTY_POSTN.ddl
|
- 将 ddl文件复制到不同的文件中:
cp S_OPTY_POSTN.ddl S_OPTY_POSTN_tbl.sql
|
- 将 S_OPTY_POSTN_tbl.sql 修改为只保存表 ddl。
- 再次重复前面的操作,将这个 ddl 文件复制到不同的文件中:
cp S_OPTY_POSTN.ddl S_OPTY_POSTN_idx.sql
|
- 将 S_OPTY_POSTN_idx.sql 修改为只保存索引和约束条件 ddl。
- 再一次执行同样的操作,将这个 ddl 文件复制到用于视图的不同文件中:
cp S_OPTY_POSTN.ddl S_OPTY_POSTN_vw.sql
|
- 修改 S_OPTY_POSTN_vw.sql 来保存视图 ddl。
步骤 4. 导出表
下一步就是以 DEL 格式导出表。
注意:无法使用 IXF 文件将导出表装入哈希分区数据库中定义的表。因此,请确保使用分隔的 ASCII(DEL)格式来导出表。
db2 "export to /dpf_staging/EXPORT_DPF/V8INST1.
S_OPTY_POSTN of del select * from V8INST1. S_OPTY_POSTN"
|