扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
本文介绍了基于“SQL复制”的 DB2 与 DB2 之间的远程复制。很多读者反映,对于初学者,由于对 DB2 的复制概念不是很清楚,在实践中或多或少遇到了入手难的问题。本文通过对远程 DB2 之间的复制的介绍,力求为初学者对 DB2 的掌握提供一个参考步骤。
“SQL”复制又称为“DB2 复制”,是为 DB2 开发的两种数据复制类型中的一种,它是通过 SQL 进行的复制。在这里简单提一下,DB2 复制中的另一种”Q 复制”是通过 WebSphere MQ 队列进行的。在进行 SQL 复制时,Capture 程序读取 DB2 恢复日志以获取对指定源表的更改。该程序将更改保存到分级表中,Apply 程序并行读取更改并应用于目标事务。见图 1。
商业上用复制出于很多原因,可以归纳为:
在企业的生产环境中,常常会遇到把分公司的数据汇总到总公司的情况。这些数据可能分别建立在不同的数据库系统之中,也可能只使用 DB2 数据库。无论哪种情况,都可以通过 IBM 的 DB2 ESE 和 Webshpere II 产品进行操作。如果产品只是 DB2 之间的 SQL 复制,那么生产环境中只需安装 DB2 ESE 即可。
假设用户有两台服务器都在使用 DB2 V8。用户想把其中一台 DB2 V8 中的数据复制到另外一台的 DB2 系统中。这种情况下,可以选定任意一台服务器中的 DB2 作为控制平台,为了方便,本例中直接使用了所要复制到的目标所在的 DB2 V8 为控制平台。如图二所示:
首先需要确定本地计算机安装了:DB2 ESE(DB2 Enterprise Server Edition)。
本文把复制的过程分为五步介绍,分别为:
在本例中采用了 Windows 2000 运行环境,具体配置见表 1:
描述 | Server A | Server B |
---|---|---|
主机名 | WSII155 | db2repl |
主机 IP | 9.181.139.155 | 9.181.138.233 |
操作系统 | Windows 2000 Server SP4 (Eng) | Windows 2000 Server SP4 (Eng) |
DB2 版本 | V8 | V8 fp11 |
DB2 实例拥有者 | DB2 | DB2 |
DB2 TCP 端口 | 50000 | 50000 |
数据库服务器别名 | TARGET | ISOURCE |
远程服务器名称 | WEST | EAST |
SQL 复制的配置信息见表 2:
描述 | Server A | Server B |
---|---|---|
SQL Capture Schema | ASN | ASN |
SQL Apply Schema | ASN | ASN |
SQL Capture 路径 | C:\sqlrep | C:\sqlrep |
1. 在 DB2 CLP 中利用下面的命令把远程服务器编目(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:
这样就把远程的数据库映射到了本地数据库中。见图 4,参考图 3。
3. 通过在服务器 A 上执行命令 db2 list database directory
。可以检查数据库 ISOURCE 是不是成功的编目了。见图 4:
4. 测试从节点 West 到节点 East 的连接情况:
db2 connect to ISOURCE user administrator using *** db2 terminate |
在进行 capture/apply 服务器的配置之前,首先需要配置密码和连接。如果不配置密码连接,会影响复制。
1. 配置系统密码
本文中需要配置 IP 地址为 9.181.139.155 的系统 WSII155(WEST)和 IP 地址为 9.181.138.233 的系统 db2Repl(EAST)。需要注意的是,复制控制中心建立在 WSII155 系统中,在配置系统密码和参数的时,属于远程服务器的 db2repl 系统需要用其 IP 地址进行配置,如果用机器名 db2repl 可能会出现配置不成功的状况。
打开复制中心:点击复制中心 > 管理密码和连接,见图 7。
如果要测试两个机器的连接情况,则可以选中所需要测试的服务器,这时对话框右边的 Test 按钮会变化到可点击状态,点击 Test 按钮,则会显示当前的连接状态,见图 8。
测试的结果见图 9。
2. 配置数据库的密码
与上面的步骤类似,点击“添加”按钮可以增加一个用作 capture/apply 服务器的数据库。可以通过测试按钮进行数据库之间的连接测试。见图 10,图 11。
3. 密码文件的配置
创建密码文件的步骤为:
见图 12。
4. SQL 复制的配置过程
首先介绍SQL复制的实现过程。
a. 建立 SQL capture server (ISOURCE) 和 SQL apply server (TARGET)。
我们能查看到 ISOURCE capture server 的类型是远程(Remote)。
相应的 TARGET apply server 的类型是本地。
b. 注册一个远程服务器中的表 QHDSVT.STUDB559 到 ISOURCE 中。
c. 在 TAEGET apply server 中建立订阅集。
d. 在 capture server 和 apply server 所在的系统上建立 password 文件。具体步骤请参阅“创建密码文件”一节。这里需要注意的是,如果数据库所在的 DB2 是 V8,则必须建立 password 文件,否则复制不会成功。若数据库所在的 DB2 是 V9,则可不必建立 password 文件。在此例中,ISOURCE 所在的 DB2 是 V8,所以必须建立 password 文件。
e. 启动capture server,apply server,检查他们的状态。
f. 启动 capture,apply 服务器之后,检查 QHDSVT.STUDB559。看到表已经复制到 target 数据库中。点开目标数据库中的 TGSTUDB559,可以查到所有的数据已经复制到了目标表中。
至此,数据复制成功,整个复制过程结束。
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的推广,国内越来越多的企业选择使用了DB2产品。但是由于缺乏实践经验,入门往往比较难,本文针对初学DB2的客户:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者