replication

“SQL”复制又称为“DB2 复制”,是为 DB2 开发的两种数据复制类型中的一种,它是通过 SQL 进行的复制。在这里简单提一下,DB2 复制中的另一种”Q 复制”是通过 WebSphere MQ 队列进行的。在进行 SQL 复制时,Capture 程序读取 DB2 恢复日志以获取对指定源表的更改。该程序将更改保存到分级表中,Apply 程序并行读取更改并应用于目标事务。见图 1。


图 1. SQL复制的结构
图 1. SQL复制的结构

动机

商业上用复制出于很多原因,可以归纳为:

  • 分散,把数据分散到各个地方
  • 整合,把其他地方的数据联合起来
  • 交换,与其他地方进行双向的数据交换
  • 灵活应用,对上面提到的进行一些改变或者结合

在企业的生产环境中,常常会遇到把分公司的数据汇总到总公司的情况。这些数据可能分别建立在不同的数据库系统之中,也可能只使用 DB2 数据库。无论哪种情况,都可以通过 IBM 的 DB2 ESE 和 Webshpere II 产品进行操作。如果产品只是 DB2 之间的 SQL 复制,那么生产环境中只需安装 DB2 ESE 即可。

假设用户有两台服务器都在使用 DB2 V8。用户想把其中一台 DB2 V8 中的数据复制到另外一台的 DB2 系统中。这种情况下,可以选定任意一台服务器中的 DB2 作为控制平台,为了方便,本例中直接使用了所要复制到的目标所在的 DB2 V8 为控制平台。如图二所示:


图 2. 数据复制目标图
图 2. 数据复制目标图

实现的步骤

首先需要确定本地计算机安装了:DB2 ESE(DB2 Enterprise Server Edition)。

本文把复制的过程分为五步介绍,分别为:

  • DB2 数据库环境及配置
  • 编目(Catalog)DB2 数据库
  • 密码配置
  • 建立 DB2 与 DB2 之间的复制过程及错误分析

DB2 数据库环境及配置

在本例中采用了 Windows 2000 运行环境,具体配置见表 1:


表 1. 操作系统环境与 DB2 版本
描述Server AServer B
主机名WSII155db2repl
主机 IP9.181.139.1559.181.138.233
操作系统Windows 2000 Server SP4 (Eng)Windows 2000 Server SP4 (Eng)
DB2 版本V8V8 fp11
DB2 实例拥有者DB2DB2
DB2 TCP 端口5000050000
数据库服务器别名TARGETISOURCE
远程服务器名称WESTEAST

SQL 复制的配置信息见表 2:


表 2. SQL 复制配置信息
描述Server AServer B
SQL Capture SchemaASNASN
SQL Apply SchemaASNASN
SQL Capture 路径C:\sqlrepC:\sqlrep

建立远程连接

1. 在 DB2 CLP 中利用下面的命令把远程服务器编目(catalog)到当前的服务器。


列表 1. 编目(catalog)远程服务器
				
db2 catalog tcpip node EAST remote 9.181.138.233 server 50000
db2 catalog database ISOURCE at node EAST
db2 terminate
			

2. 在服务器 A 上执行命令 db2 list node direcoty可以检查节点 EAST 是不是成功的被编目了。见图 3:


图 3. 查看节点
图 3. 查看节点

这样就把远程的数据库映射到了本地数据库中。见图 4,参考图 3。


图 4. 远程数据编目到本地
图 4. 远程数据编目到本地

3. 通过在服务器 A 上执行命令 db2 list database directory可以检查数据库 ISOURCE 是不是成功的编目了。见图 4:


图 5. 测试从节点 West 到节点 East 的连接情况
图 5. 测试从节点 West 到节点 East 的连接情况

4. 测试从节点 West 到节点 East 的连接情况:


列表 2. 测试节点连接情况
				
db2 connect to ISOURCE user administrator using ***
db2 terminate
			


图 6. 检查两个系统的连接状况
图 6. 检查两个系统的连接状况

配置密码和连接

在进行 capture/apply 服务器的配置之前,首先需要配置密码和连接。如果不配置密码连接,会影响复制。

1. 配置系统密码

本文中需要配置 IP 地址为 9.181.139.155 的系统 WSII155(WEST)和 IP 地址为 9.181.138.233 的系统 db2Repl(EAST)。需要注意的是,复制控制中心建立在 WSII155 系统中,在配置系统密码和参数的时,属于远程服务器的 db2repl 系统需要用其 IP 地址进行配置,如果用机器名 db2repl 可能会出现配置不成功的状况。

打开复制中心:点击复制中心 > 管理密码和连接,见图 7。


图 7. 打开密码和连接管理
图 7. 打开密码和连接管理

如果要测试两个机器的连接情况,则可以选中所需要测试的服务器,这时对话框右边的 Test 按钮会变化到可点击状态,点击 Test 按钮,则会显示当前的连接状态,见图 8。


图 8. 系统密码配置
图 8. 系统密码配置

测试的结果见图 9。


图 9. 测试服务器的连接情况
图 9. 测试服务器的连接情况

2. 配置数据库的密码

与上面的步骤类似,点击“添加”按钮可以增加一个用作 capture/apply 服务器的数据库。可以通过测试按钮进行数据库之间的连接测试。见图 10,图 11。


图 10. 数据库的密码配置
图 10. 数据库的密码配置

图 11. 数据库连接测试成功
图 11. 数据库连接测试成功

3. 密码文件的配置

创建密码文件的步骤为:

  • 把目录转换到所要创建密码文件的文件夹中,例如:C:\>cd sqlrep
  • 敲入 asnpwd,按回车键可查询与密码文件相关的命令
  • 敲入 asnpwd INIT ENCRYPT PASSWORD, 按回车可创建密码文件
  • 依次键入自己需要访问的数据库到密码文件中,例如:asnpwd ADD ALIAS SAMPLE ID db2admin PASSWORD admindb2
  • 想查看密码文件内容,可用命令:asnpwd LIST

见图 12。


图 12. 创建密码文件过程
图 12. 创建密码文件过程

4. SQL 复制的配置过程

首先介绍SQL复制的实现过程。

a. 建立 SQL capture server (ISOURCE) 和 SQL apply server (TARGET)。


图 13. 建立 capture 和 apply server
图 13. 建立 capture 和 apply server

我们能查看到 ISOURCE capture server 的类型是远程(Remote)。


图 14. ISOURCE capture server 的定义
图 14. ISOURCE capture server 的定义

相应的 TARGET apply server 的类型是本地。


图 15. TARGET apply server 的定义
图 15. TARGET apply server 的定义

b. 注册一个远程服务器中的表 QHDSVT.STUDB559 到 ISOURCE 中。


图 16. 注册表
图 16. 注册表

c. 在 TAEGET apply server 中建立订阅集。


图 17. 建立订阅集
图 17. 建立订阅集

d. 在 capture server 和 apply server 所在的系统上建立 password 文件。具体步骤请参阅“创建密码文件”一节。这里需要注意的是,如果数据库所在的 DB2 是 V8,则必须建立 password 文件,否则复制不会成功。若数据库所在的 DB2 是 V9,则可不必建立 password 文件。在此例中,ISOURCE 所在的 DB2 是 V8,所以必须建立 password 文件。

e. 启动capture server,apply server,检查他们的状态。


图 18. 检查 capture,apply 服务器的状态
图 18. 检查 capture,apply 服务器的状态

f. 启动 capture,apply 服务器之后,检查 QHDSVT.STUDB559。看到表已经复制到 target 数据库中。点开目标数据库中的 TGSTUDB559,可以查到所有的数据已经复制到了目标表中。


图 19. 检查 capture,apply 服务器的状态
图 19. 检查 capture,apply 服务器的状态

至此,数据复制成功,整个复制过程结束。


图 20. 数据复制成功
图 20. 数据复制成功

5. 错误分析

编目远程数据库的过程中,读者可能会碰到如下的错误信息:SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:"SOCKETS"。检测到错误的位置:"9.181.139.155"。检测到错误的通信函数:"connect"。协议特定的错误代码:"10060"、"*"、"*"。 SQLSTATE=08001

原因解析:碰到这种错误可能是由于网络连接的不稳定造成的。

解决方案:检查并保证EAST和WEST两个服务器之间的网络连接是可用的,并且服务器的路径设置正确。此问题也可能由于防火墙的存在而引起。如果服务器有病毒,也可能早晨服务器的网络不能正常工作,因此读者需根据自己的实际情况寻找原因。

读者也可能会碰到如下的错误信息:SQL0332N 没有从源代码页 "1252" 至目标代码页 "1386" 的转换。原因码为 "1"。SQLSTATE=57017

原因解析:这个问题是由于本地和远程服务器之间的 codepage 不同造成的,本例中由于源表服务器和目标表服务器都是英文操作系统,因此不会遇到这一问题。但是客户的环境比较复杂,有可能两个操作系统的语言不同,例如,有中文和英文操作系统等。

解决方案:改变 codepage。用下面的语句检查 codepage:

  • db2 get db cfg for ISOURCE: 检查数据库 ISOURCE 所用的 codepage
  • db2 get db cfg for TARGET: 检查数据库 TARGET 所用的 codepage
  • db2set: 检查当前DB2所在系统的 codepage

用下面的命令改变 DB2 服务器所用的 codepage:

  • db2set db2codepage=serverdb codepage (e.g. "1252")
  • db2 terminate

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24177460/viewspace-696759/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24177460/viewspace-696759/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值