Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1065892
  • 博文数量: 239
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 3618
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-12 13:17
文章分类

全部博文(239)

文章存档

2021年(1)

2016年(1)

2015年(30)

2014年(91)

2013年(116)

分类: LINUX

2013-06-08 21:35:34

        HADR( 高可用性 ) 是 DB2 数据库的一个组件,是 DB2 提供给用户的一种高可用性和灾难恢复的解决方案。组成 HADR 需要一对机器,一个和一个备机(DB2 10.0目前最多可以支持三个备机)。它的基本原理是将数据库产生的日志通过到备机,然后备机将这些日志重新应用,整个过程类似于前滚恢复。从而保证和备机数据库的一致。当发生意外停机以后,例如停电或者灾难等,备机可以很快的接替主机继续工作。从 DB2 V97FP1 开始,HADR 开始支持 ROS(Read On Standby),备机除了做备份数据库以外,还可以接收连接,执行读操作。通过对 HADR 的监控,可以更清楚的了解当前和备机的配置以及运行情况,可以根据监控的结果做出优化或者相应的管理措施。 通过计算 HADR 对整个数据库交易的影响,可以作出相应的调优方案,例如改进 IO 性能,网络性能,修改 HADR 的同步模式等等。


DB2 Version:V9.7.0.4

OS Version:RHEL 6.1




安装DB2的过程就不说了,分别在两台机器上安装DB2,

假设Primary的ip:192.168.1.121

假设Standby的ip:192.168.1.120

安装DB2需要的补丁包:


libaio

包含 DB2 数据库服务器所需的异步库。

compat-libstdc++

包含 libstdc++.so.5Linux on POWER 不需要此项)

libstdc++

包含 libstdc++.so.6

/System Environment/Shell

pdksh ksh93

Korn Shell

/Applications/Internet

openssh

此程序包中包含一组客户机程序,它们允许用户通过安全 shell 在远程计算机上运行命令。如果将 DB2 数据库系统的缺省配置与 rsh 配合使用,那么不需要此程序包。

/System Environment/Daemons

openssh-server

此程序包中包含一组服务器程序,它们允许用户通过安全 shell 运行来自远程计算机的命令。如果将 DB2 数据库系统的缺省配置与 rsh 配合使用,那么不需要此程序包。

/System Environment/Daemons

rsh-server

此程序包包含一组程序,它们允许用户在远程计算机上运行命令。分区数据库环境中需要此程序包。如果将 DB2数据库系统配置为使用 ssh,那么不需要此程序包。

/System Environment/Daemons

nfs-utils

网络文件系统支持程序包。它允许远程计算机访问本地文件。



在两台服务器分别执行:vi /etc/sysctl.conf

加入

kernel.shmmni = 1073741824
kernel.sem = 1024
kernel.msgmni = 1024
kernel.msgmax = 65536
kernel.msgmnb = 65536
vm.swappiness = 0
vm.overcommit_memory = 0
kernel.randomize_va_space = 0


#sysctl -l使刚才修改的内核参数生效


首先,说明几个需要注意的问题:

(1). HADR pair不可以使用circular logging。大家可以参照db2 infocenter,阅读以下DB2log方式

(2). HADR的从机是由主机的备份镜像恢复而成的

(3). 启动HADR的时候应该首先启动standby,然后在启动primary

(4). StandbyPrimary上和HADR相关的参数一定要一致,否则会在系统握手校验的时候失败

现在我们假设HADR Pair部署在主机hostp和从机hosts


第一步,分别在主机和从机上创建数据库:

db2 create db hadrdb


第二步,设置主数据库配置参数:

db2 update db cfg for hadrdb using logretain on

db2 update db cfg for hadrdb using trackmod on

db2 update db cfg for hadrdb using logindexbuild on

db2 update db cfg for hadrdb using indexrec restart


db2 update db cfg for hadrdb using HADR_LOCAL_HOST 192.168.1.121

db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321

db2 update db cfg for hadrdb using HADR_REMOTE_HOST 192.168.1.120

db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321

db2 update db cfg for hadrdb using HADR_REMOTE_INST db2inst1

db2 update db cfg for hadrdb using HADR_TIMEOUT 120

db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10

db2 update db cfg for hadrdb using HADR_SYNCMODE sync


第三步,备份主数据库,生成一个备份文件

db2 backup db hadrdb

这里需要注意一下,如果你是第一次将日志的方式设置为retain方式,这次备份会使数据库跳出backup pending方式。当从数据库恢复时,不要使用这个备份文件,而是需要重新备份一次,使用第二次备份的文件。假设文件名是: HADRDB.0.db2inst1.NODE0000.CATN0000.20130530132023.001


第四步,将刚才备份的数据库日志文件拷贝到一个从机可以使用的文件系统里面

#scp HADRDB.0.db2inst1.NODE0000.CATN0000.20130530132023.001 192.168.1.120:/home/db2inst1


第五步,在从数据库上恢复数据库:

db2 restore db hadrdb from /home/db2inst1


第六步,配置从数据库的参数:

db2 update db cfg for hadrdb using HADR_LOCAL_HOST 192.168.1.120

db2 update db cfg for hadrdb using HADR_REMOTE_HOST 192.168.1.12

其实,对于这一步,你只要更新HADR_LOCAL_HOSTHADR_REMOTE_HOST就可以了,因为其他的参数在restore db的时候都会恢复出来。


第七步,启动从数据库:

db2 start hadr on db hadrdb as standby


第八步,启动主数据库:

db2 start hadr on db hadrdb as primary


第九步,在主数据库:

[db2inst1@portal02 ~]$ db2pd -hadr -db hadrdb

Database Partition 0 -- Database HADRDB -- Active -- Up 0 days 00:00:43 -- Date 05/30/2013 13:31:33

HADR Information:
Role State SyncMode HeartBeatsMissed LogGapRunAvg (bytes)
Primary Peer Sync 0 0

ConnectStatus ConnectTime Timeout
Connected Thu May 30 13:30:52 2013 (1369891852) 120

PeerWindowEnd PeerWindow
Thu May 30 13:31:43 2013 (1369891903) 10

LocalHost LocalService
192.168.1.121 54321

RemoteHost RemoteService RemoteInstance
192.168.1.120 54321 db2inst1

PrimaryFile PrimaryPg PrimaryLSN
S0000000.LOG 0 0x0000000002328010

StandByFile StandByPg StandByLSN
S0000000.LOG 0 0x0000000002328010

看到

HADR Information:
Role State SyncMode HeartBeatsMissed LogGapRunAvg (bytes)
Primary Peer Sync 0 0

则说明db2 hadr执行成功

db2 get db cfg for cusdb | grep -i hadr


阅读(1346) | 评论(0) | 转发(0) |
0

上一篇:linux NTP搭建

下一篇:U盘备份Linux系统脚本

给主人留下些什么吧!~~