SQL Replication基础教程:Windows DB2[翻译]

SQL Replication基础教程:Windows DB2

经过本教程学习使用Replication Center,Capture和Apply程序。html

按照本教程的步骤来设置你的SQL Replication环境,将SQL Replication源的更改复制到DB2®for Windows Enterprise Server Edition(ESE)或Workgroup Server Edition(WSE)上的数据库中的目标表,并监视 Capture和Apply程序的活动。sql

1.环境准备

在开始教程前,须要安装你的环境。数据库

经过如下步骤完成环境的安装:服务器

  1. 安装DB2到你的Windows电脑。
  2. 建立默认的DB2实例。这个教程使用全部数据库在同一个实例上。
  3. 确认你有SAMPLE数据库的权限。这个数据库将被做为source sever和Capture control server。可使用First Steps来建立SAMPLE数据库:
    1. 选择 开始 > 全部程序 >IBM DB2 > DB2_copy > Set-up Tools > First Steps.
    2. 点击Create Sample Database。建立完SAMPLE数据库后关闭First Steps程序。
      若是你没有安装First Steps程序, 能够Windows命令行中使用db2cmd打开DB2命令行(DB2 CLP)。输入db2sampl命令来建立SAMPLE数据库。
  4. 使用DB2 Control Center来建立一个新的数据库COPYDB,它将做为target server和Apply contorl server。右击All Databases目录,选择Create Database > Standard使用默认设置来建立一个新的数据库。 数据库名和别名使用COPYDB。

教程使用SAMPLE数据的DEPARTMENT表。全名是schema.DEPARTMENT;schema是你建立SAMPLE数据库的用户ID。app

对于剩下的教程,确保你使用的用户ID是你建立SAMPLE和COPYDB数据的用户。这个用户ID有权限(DBADM或SYSADM)来使用replication task。ide

2.SQL Replication教程计划

你想复制哪些数据,你须要设置哪些选项学习

假设你的组使用程序来产生报告。这个程序须要SAMPLE数据库DEPARTMENT表种的数据。相对于从数据源表直接获取数据, 你更但愿程序能够复制数据源表的修改到目标表, 而这些目标表只有报告产生程序能够读取。为了便于管理, 你能够把目标表和数据源表放到同一台机器上。测试

您须要简单的数据分发配置,包括将更改从一个复制源复制到单个只读副本。 下一个主题描述在执行任何复制任务以前须要考虑的设计和规划问题。ui

复制选项

您能够选择复制选项,例如,肯定change-data(CD)表,目标表和控制表的存储位置,复制发生的频率以及哪些记录(根据您指定的条件)您 想要在每一个复制周期后从IBMSNAP_APPLYTRAIL表中删除。加密

为了本教程学习的目的,请将CD表,目标表和控制表存储在各自的默认表空间中,如表1所示。尽管SAMPLE和COPYDB数据库存在于同一台计算机中,但它们的表空间在不一样的容器中。

表1. 表和表空间

| Database | Tables | Table spaces | Contents | | - | - | - | - | | SAMPLE | schema.DEPARTMENT | USERSPACE1 | Source table | || schema.CDDEPARTMENT | TSCDDEPARTMENT | The CD table for the DEPARTMENT table | || Capture control tables | TSASNCA and TSASNUOW | The control tables for the Capture program | | COPYDB | schema.TGDEPTCOPY | TSTGDEPTCOPY | Target table | || Apply control tables | TSASNAA | The control tables for the Apply program | || Monitor control tables | REPLMONTS1, REPLMONTS2, and REPLMONTS3 | The control tables for the Replication Alert Monitor |

一般,您能够在与表空间(USERSPACE1)分离的表空间中建立CD表,以减小表空间级的潜在竞争。 为此,请接受复制控制表的表空间的默认值(或在复制中心内定义配置文件)。 在生产环境中,请确保在单独的设备上建立每一个表空间,以减小潜在的争用。

对于本教程,计划SQL Replication以每分钟检查源表中的任何更改,而后将更改复制到目标表。 虽然报表生成应用程序不须要这次检查频率,但对于本教程,您但愿可以测试复制环境并验证全部操做是否正常。

此外,您决定在每一个复制周期以后,要删除IBMSNAP_APPLYTRAIL表中超过一周(七天)的记录。 这种设置防止表增加太大。

复制源

复制源是数据库中你须要复制到目标源的表。 在设置环境以前,您必须肯定须要从表中复制哪些内容。

此场景和教程的复制源是SAMPLE数据库中的schema.DEPARTMENT表。 您决定register和subscribe全部列。

复制目标源

复制目标源是要从复制源复制数据到目标数据库的表。 您能够在目标数据库中建立一个新表,或者使用现有的目标表。 对于本教程,您将建立一个新表。

复制目标源将是您建立的新数据库COPYDB中的表。 目前,该数据库中没有目标表,您能够根据您的实际需求决定是否建立目标表。 自动生成目标表的方式是首选,由于它能够确保对复制源的正确映射。 您可使用现有的目标表,但本教程假定目标表不存在。

假设你想要的COPYDB的目标表的列如表1所是:

表1. COPYDB表的列

Column | Description

  • | - DEPTNO | Information from the DEPTNO column in the replication source table. This column will be the primary key of the target table. DEPTNAME | Information from the DEPTNAME column in the replication source table. MGRNO | Information from the MGRNO column in the replication source table. ADMRDEPT| Information from the ADMRDEPT column in the replication source table. LOCATION | Information from the LOCATION column in the replication source table.

由于目标表中的列只是反映源表中的数据,而且由于源表中每行在目标表中只有一行,您可使用user copy类型的目标表。

3.设置复制环境

在完成复制计划以后,下一步就须要完成复制环境的设置

如下全部的步骤须要使用Replication Center, 经过下面步骤运行:开始菜单 > 全部程序 > IBM DB2 > DB2_copy > General Administration Tools > Replication Center. 或在DB2命令行使用db2rc启动

步骤1:为Capture程序建立control表

配置复制环境第一步,建立Capture程序须要的control表

关于本步骤

Capture程序读取control表的注册信息,而后将其状态存储在这些表中。 任何充当Capture控制服务器的数据库都必须包含Capture control表。

操做步骤

建立Capture control表:

  1. 展开SQL Replication目录
  2. 展开Definitions目录
  3. 右击Capture Control Servers目录选择Create Capture Control Tables > Quick。(你也能够定制Capture control表经过选择Create Capture Control Tables > Custom)
  4. 在Select a Server窗口, 选择SAMPLE数据库。这个数据库将成为你的Capture控制服务器。点击OK
  5. 在Create Control Tables - Quick - Server Information窗口,选择Host sources for replication and capture changes to those sources。而后点击Next
  6. 在Create Control tables - Quick - Replication Details窗口,点击Next。你不须要作在这个窗口作任何操做。
  7. 在Create Control tables - Quick - Table Spaces窗口,输入TSASNCA表空间表空间规范。例如,设置buffer pool为IBMDEFAULTBP。 本教程点击OK使用默认的control表schema ASN
  8. 在Create Control tables - Quick - Table Spaces窗口, 输入TSASNUOW表空间的表空间规范
  9. 在Create Control tables - Quick - Table Spaces窗口中设置完2个表空间信息后点击OK
  10. 在Messages and SQL Scripts窗口点击Close。若是没有错误这个窗口会显示建立Capture control表生成的SQL脚本
  11. 在Run Now or Save SQL窗口输入正确的用户id和密码点击OK来当即执行SQL脚本。你会在DB2信息窗口看到运行成功的消息
  12. 点击Close
  13. 展开Capture Control Servers目录。SAMPLE数据库将显示在该目录下

步骤2:启用源数据库进行复制

下一步是启用源数据库进行复制。 Capture程序读取DB2®日志,以记录反映registered表更改的记录。 日志必须是archive log类型(而不是circular log类型),以免日志在Capture程序能够读取以前被DB2覆盖。

关于本步骤

对于Linux,Unix和Windows环境,DB2默认使用circular日志。使用如下步骤修改日志类型为archive日志

操做步骤

启用源数据库进行复制:

  1. 展开Capture Control Servers目录
  2. 右击SAMPLE数据库选择Enable Database for Replication
  3. 在 Enable Database for Replication窗口点击OK来使用archive日志,而且初始化一个数据库的备份
  4. 在Backup窗口,指定备份信息点击Bcakup Now

在备份完数据库后,你能够启动Capture程序。对于本教程还不须要启动。

步骤3:注册一个复制源

在建立Capture control表和启用复制数据库以后,你须要注册你的数据库的表做为复制源。

关于本步骤

使用如下步骤将SAMPLE数据库中的DEPARTMENT表注册为复制源。 注册表时,将自动建立名为CDDEPARTMENT的change-data(CD)表,以从注册的源表接收更改。 而后Apply程序从CD表中获取更改

操做步骤

注册一个表做为复制源:

  1. 展开SQL Replication目录
  2. 展开Definitions目录
  3. 展开Capture Control Servers目录
  4. 展开SAMPLE数据库
  5. 展开Capture Schemas目录
  6. 展开ASN schema
  7. 右击Registered Tables目录选择Register Tables
  8. 在Add Registerable Tables窗口,点击Retrieve All来列出SAMPLE数据库的全部能够注册为数据源的表。选择DEPARTMENT表点击OK。Register Tables窗口如图1显示。

图1.Register Tables窗口
Register Tables窗口

  1. 在Register Tables窗口,点击CD Table标签。为CD表空间指定如下信息:
  • 在Specification for the table space区域点击Container name值为TSCDDEPARTMENT表空间。
  • 在Specification for the table space区域修改Size值为1。
  • 在Specification for the table space区域修改Unit值为MB。
  • 为这个新的表空间指定其它信息;例如,设置buffer pool到IBMDEFAULTBP。
  1. 输入完table-space信息后点击OK。
  2. 在Run Now or Save SQL窗口点击OK来当即执行SQL脚本。你将看到脚本运行成功的提示。
  3. 点击Close。
  4. 在SAMPLE数据库目录的内容面板会显示DEPARTMENT表为注册表。看图2所示。

图2. DEPARTMENT表在注册表列表中 DEPARTMENT表在注册表列表中

DEPARTMENT表如今被定义为复制源了。以前运行SQL脚本时,Replication Center已经为这个复制源建立了CD表和CD表索引,以及更新Capture control表。

步骤4:为Apply程序建立control表

在为Capture建立完control表后,你须要为Apply程序也建立control表。

关于本步骤

Apply程序为subscription-set信息,读取和保存状态到这些control表。任何做为Apply control server的数据库都须要有Apply control表。

操做步骤

建立Apply contrl表:

  1. 展开SQL Replication目录
  2. 展开Definitions目录
  3. 右击Apply Control Servers目录选择Create Apply Control Tables > Quick。同时你也能够经过Create Apply Control Tables > Custom定制你的Apply control表。
  4. 在Select a Server窗口,选择COPYDB数据库。这个数据库将做为你的Apply control server,点击OK。
  5. 在Create Control Tables - Quick - Server Information窗口,选择Apply captured changes to target tables点击Next。
  6. 在Create Control Tables - Quick - Replication Details窗口,点击Next,你不须要在这个窗口修改任何信息。
  7. 在Create Control Tables - Quick - Table Spaces窗口,为TSASNAA表空间输入表空间规范。例如设置buffer pool为IBMDEFAULTBP。点击OK。
  8. 在Messages and SQL Scripts窗口点击Close。这个窗口显示建立Apply control tables生成的SQL脚本,若是有错误也会显示。
  9. 在Run Now or Save SQL输入用户id和密码,点击OK来当即执行SQL脚本。你将看到脚本执行成功的消息。
  10. 点击Close。
  11. 展开Apply Control Servers目录。COPYDB数据库将显示在目录下面。

步骤5: 建立subscription set和subscription-set member

在你注册完数据源表后,你须要建立subscription set和subscription-set member来定义源数据库到目标数据库的关系已经复制源表和多个目标表的关系。

关于本步骤

一个subscription set定义了复制源数据库(SAMPLE)和目标数据库(COPYDB)的关系。 一个subscription-set member定义了复制源表(DEPARTMENT)和多个目标表(DEPTCOPY)的关系。

操做步骤

建立subscription set和subscription-set member

  1. 展开SQL Replication目录

  2. 展开Definitions目录

  3. 展开Apply Control Servers目录

  4. 展开COPYDB数据库

  5. 右击Subscription Sets目录选择Create
    你也能够经过选择SAMPLE数据库的Registered Tables目录来建立subscription set。

  6. 在Create Subscription Set窗口设置如下信息:

    1. 设置Set name为DEPTSUB。这个值标识subscription set且对于Apply qualifier必须时惟一的。
    2. 设置Apply qualifier为DEPTQUAL。这个值标识replication definitions, 它对于运行这个subscription set的Apply程序时惟一的。
      Apply qualifier时大小写敏感的。若是你想 Apply qualifier使用小写,你必须在你输入时限定为小写;例如,"deptqual"。若是你简单的输入deptqual,Replication Center会默认转化为大写。
    3. 在Capture control server alias框点击浏览按钮 [...] 。选择SAMPLE数据库点击OK。
    4. 在Target server alias框点击浏览按钮 [...]。选择COPYDB数据库点击OK。COPYDB数据库同时是Apply control server和target server。
    5. 选择Activate the subscription set选择框。
      你不须要修改其它设置。Create Subscription Set窗口相似图1所示。
      图1. Create Subscription Set窗口
      Create Subscription Set窗口
  7. 在Create Subscription Set窗口的Source-to-Target Mapping标签输入如下信息:

    1. 点击Add来添加一个注册源到subscription-set member
    2. Add Registered Sources窗口点击Retrieve All来显示全部SAMPLE数据库的注册源。
    3. 在Add Registered Sources窗口,选择DEPARTMENT表点击OK。
    4. 在Create Subscription Set窗口的Source-to-Target Mapping标签修改目标表TGDEPARTMENT为TGDEPTCOPY;在Subscription-set members表的列 Target Name选择TGDEPARTMENT, 输入TGDEPTCOPY做为默认名。
      不要修改目标类型,由于你想要建立一个user copy的目标表
    5. 点击Change来打开Member Propertie窗口。在这个窗口,你能够定义subscription-set member的属性。
      由于本教程你想要复制全部列和在目标表中建立相同的列,你不须要对Member Properties窗口的Column Selection或Column Mapping标签作任何修改。默认目标表包含注册源的全部列。

    联邦数据提示:
    若是你的公司的复制配置映射一个数据源表到一个存在的目标表且至少有一个表是来自非DB2数据库,能够查看Federated Systems Guide获取更多信息,怎么映射数据源列到存在的目标表的列。

    Member Properties 窗口的一个例子如图2.

    图2. Member Properties 窗口
    Member Properties 窗口

  8. 在Member Properties窗口的Target-Table Index标签:

    1. 点击Create your own index
    2. 从Available columns in the target列表选择DEPTNO
    3. 点击move按钮 (>) 来移动DEPTNO列到Columns used in the index列表
    4. 确认Use selected columns to create primary key被选择使用DEPTNO列做为目标表的主健
  9. 在Member Properties窗口的Row Filter标签,在WHERE statement框输入:
    DEPTNO >='E00'
    这个where显示哪些你想复制知足条件的行,只有哪些department number大于等于E00的行。选在目标表将保护8行而不是14行记录

  10. 在Member Properties窗口的Target-Table Table Space标签,为新的TSTGDEPTCOPY表空间指定如下信息:

    1. 在Specification for table space区间点击Container name框为TSTGDEPTCOPY表空间指定容器名。
    2. 在Specification for table space区间设置Size为1
    3. 在Specification for table space区间修改Unit为MB
    4. 为新的表空间指定其它信息;例如设置buffer pool为IBMDEFAULTBP
  11. 点击OK关闭Member Properties窗口。本教材你还不须要对Target load options标签作任何设置

  12. 在Create Subscription Set窗口的Schedule标签,修改minutes为1,Apply程序将每分钟处理这个subscription set。保留Start date, Start time, Time-based, 和 Use relative timing为默认值

  13. 在Create Subscription Set窗口的Statements标签,点击Add来打开Add SQL Statement or Procedure Call窗口。使用这个窗口来定义处理subscription set时运行的SQL。在Add SQL Statement or Procedure Call窗口输入如下信息:

  14. 在SQL Statement框输入:
    DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS)
    这个语句将删除IBMSNAP_APPLYTRAIL表超过7天的数据
    Apply程序在处理subscription set以后执行您在目标服务器上添加的SQL语句。 因为Apply control server 和target server位于同一位置,而且IBMSNAP_APPLYTRAIL表位于Apply control server上,因此SQL语句必须在目标服务器上运行。

Tip  
Apply程序运行在每一个subscription周期中添加到subscription set的SQL语句或过程。 这个例子是无效的,由于Apply程序每分钟都会执行这个语句,尽管这个语句只能从IBMSNAP_APPLYTRAIL表中删除数据,最多每隔24小时删除一次。
2. 设置SQLSTATE值为02000点击Add。这个SQL state标示”行找不到“错误,Apply程序会忽略这些错误。

Tip  
你的Apply程序能够为subscription set设置10个SQL state
3. 点击OK来关掉Add SQL Statement or Procedure Call窗口
  1. 点击OK关闭Create Subscription Set窗口

  2. 在Messages and SQL Scripts窗口点击Close。窗口将显示更新Apply control tables 和 create the target table的SQL脚本。若是有错误也会在这个窗口显示。

  3. 在Run Now or Save SQL窗口点击OK来当即处理SQL脚本。或者,将SQL脚本保存到文件以备未来使用,如今也能够运行它:

    1. 选择Save to file
    2. 设置Save specifications信息,如文件名
    3. 点击Apply来保存文件。若是脚本有多部分,你没有选择Save multiple scripts in one file选项,每部分保存到文件,文件名使用你指定的文件名加上一个数字。Run Now or Save SQL窗口保持打开。
    4. 选择Run now
    5. 点击OK来运行脚本而且关闭Run Now or Save SQL窗口

    你会收到成功失败的消息

  4. 点击Close

  5. 展开COPYDB数据库的Apply Control Servers目录,点击Subscription Sets目录。Subscription Sets目录的内容面板会显示DEPTSUB subscription set。 如图3

图3. COPYDB数据库列出DEPTSUB subscription set COPYDB数据库列出DEPTSUB subscription set

步骤6:建立一个Apply password file

由于Apply程序须要链接Capture control server,Apply control server和 the target server,你必须建立一个password file来为用户受权。由于password file的内容是加密的,尽管你能够修改这个文件,但只有Apply程序能够读取这个文件。

操做

建立Apply password file:

  1. 打开Windows命令行,修改的C:..\sqllib\bin目录。
  2. 输入如下命令来建立一个默认password file:
asnpwd init using "path"

path是你建立password file指定的完整目录和文件名。你会看到信息ASN1981I,确保命令行成功运行。
例如,若是你想保存password file到c:\sqllib\repl目录,文件名为asnpwd.aut,输入如下命令:

asnpwd init using "c:\sqllib\repl\asnpwd.aut"

c:\sqllib\repl\asnpwd.aut是password file的完整路径和文件名

Tip
在您启动Apply程序的目录中建立密码文件。 当您启动Apply程序时,您能够指定password file的文件名(使用PWDFILE关键字)以及Apply程序将存储其日志和工做文件(使用APPLY_PATH关键字)的目录的值。 password file是Apply程序的工做文件之一。 3. 输入如下命令为每一个Apply程序须要链接的数据库添加用户ID和密码信息:

asnpwd add alias SAMPLE id userid password password using "path"

userid须要拥有权限来更新Capture和Apply control表,password是这个用户的密码,path是你建立的password file的完整路径。当你看到ASN1981I标示命令执行成功。

原文链接

相关文章
相关标签/搜索