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標示命令執行成功。

原文鏈接

相關文章
相關標籤/搜索