ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SUSE 10 DB2 V9.6 HADR配置

SUSE 10 DB2 V9.6 HADR配置

原创 Linux操作系统 作者:destined 时间:2012-02-29 22:54:49 0 删除 编辑
1、NFS
主机:
service nfsserver restart
service portmap restart
/etc/exports
/db2bak 192.168.1.245(rw,sync,no_root_squash)
执行 exportfs命令,使将挂载的 NFS客户机能使用配置的/db2bak共享目录
hadr1:/opt/ibm/db2/V9.7/instance # exportfs
/db2bak         hadr2

备机:
/etc/fstab
192.168.1.244:/db2bak  /db2bak     nfs  rw,timeo=300,retrans=5,hard,intr,bg,suid

用以下命令在备机数据库服务器上挂载导出的文件系统:
hadr2:/opt/ibm/db2/V9.7/instance # mount -t nfs 192.168.1.244:/db2bak  /db2bak
或者mount /db2bak
2、创建示例数据库 5.1创建数据库实例
分别在主、备节点完成数据库实例创建,修改参数
hadr1:/opt/ibm/db2/V9.7/instance # ./db2icrt -u db2fenc1 db2inst1
DBI1070I  Program db2icrt completed successfully.

hadr1:/opt/ibm/db2/V9.7/instance # ./db2ilist
db2inst1
hadr1:/opt/ibm/db2/V9.7/instance # su - db2inst1
db2inst1@hadr1:~> db2start
02/29/2012 09:42:07     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
db2inst1@hadr1:~> db2set db2comm=tcpip
db2inst1@hadr1:~> db2set db2codepage=1386
db2inst1@hadr1:~> db2 update dbm cfg using svcename DB2_db2inst1
DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
3、创建管理服务器
分别在主、备节点创建数据库管理服务器
hadr1:/opt/ibm/db2/V9.7/instance # ./dascrt -u dasusr1
SQL4406W  The DB2 Administration Server was started successfully.
DBI1070I  Program dascrt completed successfully.
hadr1:/opt/ibm/db2/V9.7/instance # su - dasusr1
dasusr1@hadr1:~> db2admin start
SQL4409W  The DB2 Administration Server is already active.
4、创建数据库
4.1在主节点创建ympsdb数据库
db2inst1@hadr1:~> db2 create db testdb on '/db2home/db2inst1/testdb ' using codeset gbk territory cn
4.2 修改主数据库参数
b2inst1@hadr1:~> db2 update db cfg for testdb using logprimary 15 LOGSECOND 10 logfilsiz 25000 logbufsz 512 newlogpath '/testdb_log'
b2inst1@hadr1:~>db2 UPDATE DB CFG FOR testdb USING INDEXREC RESTART LOGINDEXBUILD ON logarchmeth1 DISK:/testdb_archive
4.3 在主服务器上备份数据库
在主机上执行脱机备份数据库
db2inst1@hadr1:~> db2 deactivate db testdb
db2inst1@hadr1:~> db2 backup db testdb to /db2bak/ with 2 buffers buffer 1024 parallelism 4 without prompting
db2inst1@hadr1:/db2bak> db2ckbkp TESTDB.0.db2inst1.NODE0000.CATN0000.20120229101752.001
[1] Buffers processed:  ##########################
Image Verification Complete - successful.
5 查看nfs是否配置成功
主机:
db2inst1@hadr1:/db2bak> ls
file  lost+found  TESTDB.0.db2inst1.NODE0000.CATN0000.20120229101752.001
备机:
hadr2:/db2bak # ls
TESTDB.0.db2inst1.NODE0000.CATN0000.20120229101752.001  file  lost+found
 
6  在备用服务器上恢复数据库
通过主数据库备份进行完全恢复,完成备用数据库的创建
hadr2:/db2bak # su - db2inst1
db2inst1@hadr2:~> db2 restore db testdb from /db2bak taken at 20120229101752 replace history file
 
7  修改/etc/services配置文件
分别在主、备服务器上修改服务配置文件,增加用于HADR通讯使用的服务名称和端口。
DB2_HADR_1     55001/tcp
DB2_HADR_2     55002/tcp
DB2_db2inst1    60000/tcp
DB2_db2inst1_1  60001/tcp
DB2_db2inst1_2  60002/tcp
DB2_db2inst1_END        60003/tcp

8   修改主服务器的HADR参数
db2 update db cfg for testdb using HADR_LOCAL_HOST 192.168.1.244
db2 update db cfg for testdb using HADR_LOCAL_SVC DB2_HADR_1
db2 update db cfg for testdb using HADR_REMOTE_HOST 192.168.1.245
db2 update db cfg for testdb using HADR_REMOTE_SVC DB2_HADR_2
db2 update db cfg for testdb using HADR_REMOTE_INST db2inst1
db2 update db cfg for testdb using HADR_SYNCMODE NEARSYNC
db2 update db cfg for testdb using HADR_TIMEOUT 10
db2 update db cfg for testdb using HADR_PEER_WINDOW 120
db2 connect to testdb
db2 quiesce database immediate force connections
db2 unquiesce database
db2 connect reset
9   修改备用服务器的HADR参数
db2 update db cfg for testdb using HADR_LOCAL_HOST 192.168.1.245
db2 update db cfg for testdb using HADR_LOCAL_SVC DB2_HADR_2
db2 update db cfg for testdb using HADR_REMOTE_HOST 192.168.1.244
db2 update db cfg for testdb using HADR_REMOTE_SVC DB2_HADR_1
db2 update db cfg for testdb using HADR_REMOTE_INST db2inst1
db2 update db cfg for testdb using HADR_SYNCMODE NEARSYNC
db2 update db cfg for testdb using HADR_TIMEOUT 10
db2 update db cfg for testdb using HADR_PEER_WINDOW 120
 
10   启动HADR
10.1在备用服务器上启动HADR备用数据库
db2inst1@hadr2:~> db2 deactivate database testdb
SQL1496W  Deactivate database is successful, but the database was not
activated.
db2inst1@hadr2:~> db2 start hadr on database testdb as standby
DB20000I  The START HADR ON DATABASE command completed successfully.
10.2 在主服务器上启动HADR主数据库
db2inst1@hadr1:~> db2 deactivate database testdb
SQL1496W  Deactivate database is successful, but the database was not
activated.
db2inst1@hadr1:~> db2 start hadr on database testdb as primary
DB20000I  The START HADR ON DATABASE command completed successfully.
 
注意:
在启动 HADR时,一定要先在备用服务器上启动 HADR服务,然后在主服务器上启动。同样,在停止 HADR时,要先在主服务器上停止服务,然后是备用服务器。
如果你先启动主数据库服务器HADR,那么你必须保证在HADR_TIMEOUT参数指定的时间内(单位为秒)启动备用数据库服务器HADR。否则将启动失败。

11   查看HADR运行状态 
现在,已经完成了 HADR设置,就应该检查它是否能够正常工作。
在主服务器linux1上执行以下命令:
db2inst1@hadr1:~> db2pd -hadr -db testdb  或者(db2 get snapshot for db on testdb)
Database Partition 0 -- Database TESTDB -- Active -- Up 0 days 00:06:43 -- Date 02/29/2012 10:36:15
HADR Information:
Role    State                SyncMode   HeartBeatsMissed   LogGapRunAvg (bytes)
Primary Peer                 Nearsync 0                  0                  
ConnectStatus ConnectTime                           Timeout  
Connected     Wed Feb 29 10:29:34 2012 (1330482574) 10       
PeerWindowEnd                         PeerWindow
Wed Feb 29 10:38:13 2012 (1330483093) 120      
LocalHost                                LocalService     
192.168.1.244                            DB2_HADR_1       
RemoteHost                               RemoteService      RemoteInstance   
192.168.1.245                            DB2_HADR_2         db2inst1         
PrimaryFile  PrimaryPg  PrimaryLSN       
S0000000.LOG 0          0x0000000002728010
StandByFile  StandByPg  StandByLSN       
S0000000.LOG 0          0x0000000002728010

在备服务器上
db2inst1@hadr2:~> db2pd -hadr -db testdb
Database Partition 0 -- Database TESTDB -- Standby -- Up 0 days 00:08:53 -- Date 02/29/2012 18:52:43
HADR Information:
Role    State                SyncMode   HeartBeatsMissed   LogGapRunAvg (bytes)
Standby Peer                 Nearsync 0                  0                  
ConnectStatus ConnectTime                           Timeout  
Connected     Wed Feb 29 18:45:01 2012 (1330512301) 10       
PeerWindowEnd                         PeerWindow
Wed Feb 29 10:39:15 2012 (1330483155) 120      
LocalHost                                LocalService     
192.168.1.245                            DB2_HADR_2       
RemoteHost                               RemoteService      RemoteInstance   
192.168.1.244                            DB2_HADR_1         db2inst1         
PrimaryFile  PrimaryPg  PrimaryLSN       
S0000000.LOG 0          0x0000000002728010
StandByFile  StandByPg  StandByLSN         StandByRcvBufUsed
S0000000.LOG 0          0x0000000002728010 0% 
 
12   HADR接管测试

 设置过程的最后一步是测试 HADR的故障恢复功能。可以手工在备用服务器上执行普通接管命令
db2inst1@hadr2:~> db2 takeover hadr on database testdb
DB20000I  The TAKEOVER HADR ON DATABASE command completed successfully.
db2inst1@hadr2:~> db2pd -hadr -db testdb
Database Partition 0 -- Database TESTDB -- Active -- Up 0 days 00:10:45 -- Date 02/29/2012 18:54:35
HADR Information:
Role    State                SyncMode   HeartBeatsMissed   LogGapRunAvg (bytes)
Primary Peer                 Nearsync 0                  0                  
ConnectStatus ConnectTime                           Timeout  
Connected     Wed Feb 29 18:45:01 2012 (1330512301) 10       
PeerWindowEnd                         PeerWindow
Wed Feb 29 18:56:34 2012 (1330512994) 120      
LocalHost                                LocalService     
192.168.1.245                            DB2_HADR_2       
RemoteHost                               RemoteService      RemoteInstance   
192.168.1.244                            DB2_HADR_1         db2inst1         
PrimaryFile  PrimaryPg  PrimaryLSN       
S0000000.LOG 0          0x0000000002728010
StandByFile  StandByPg  StandByLSN       
S0000000.LOG 0          0x0000000002728010
 
如果一般的接管不起作用,就需要指定 BY FORCE选项,强迫 db2切换到备用服务器上的HADR(如主数据库主机异常情况下启用备用服务器接管数据库)。

13    配置客户端重新路由
在主服务器linux1上,执行以下命令启用 HADR的自动客户机重路由特性:
db2inst1@hadr1:~> db2 update alternate server for database testdb using hostname 192.168.1.245  port 60000     (主机的ip是192.168.1.244 备机的ip是192.168.1.245)
DB20000I  The UPDATE ALTERNATE SERVER FOR DATABASE command completed
successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.

db2inst1@hadr1:~>db2 terminate
db2inst1@hadr1:~>db2 list db directory
System Database Directory
 Number of entries in the directory = 2
Database 1 entry:
 Database alias                       = TESTDB
 Database name                        = TESTDB
 Local database directory             = /db2home/db2inst1/testdb
 Database release level               = d.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            = 192.168.1.245
 Alternate server port number         = 60000
在备用服务器linux2上,执行以下命令启用 HADR的自动客户机重路由特性:

db2inst1@hadr2:~> db2 update alternate server for database testdb using hostname 192.168.1.244  port 60000
DB20000I  The UPDATE ALTERNATE SERVER FOR DATABASE command completed
successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
db2inst1@hadr2:~> db2 terminate
DB20000I  The TERMINATE command completed successfully.
db2inst1@hadr2:~> db2 list db directory
 System Database Directory
 Number of entries in the directory = 1
Database 1 entry:
 Database alias                       = TESTDB
 Database name                        = TESTDB
 Local database directory             = /db2home/db2inst1
 Database release level               = d.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            = 192.168.1.244
 Alternate server port number         = 60000
 
13  在客户端机器编目

cmd
C:\Users\Administrator>db2cmd
C:\Users\Administrator>db2 catalog tcpip node testhadr remote 192.168.1.244 server 60000
C:\Users\Administrator>db2 catalog db testdb as hadrdb at node testhadr
C:\Users\Administrator>db2 connect to hadrdb user db2inst1 using db2inst1
如果链接不上请停止hadr
主机上运行:
db2 deactivate database testdb
 
停止主数据库:
 
db2 stop hadr on database testdb
备机上运行:
db2 deactivate database testdb
停止备用数据库:
 
db2 stop hadr on database testdb
14  备用服务器正常接管

14.1  在主数据库上创建测试表
C:\Users\Administrator>db2 connect to hadrdb user db2inst1 using db2inst1
   数据库连接信息
 数据库服务器         = DB2/LINUXX8664 9.7.5
 SQL 授权标识         = DB2INST1
 本地数据库别名       = HADRDB

C:\Users\Administrator>db2
(c) Copyright IBM Corporation 1993,2003
DB2 SDK 8.2.0 的命令行处理器
可从命令提示符处发出数据库管理器命令和 SQL 语句。例如:
    db2 => connect to sample
    db2 => bind sample.bnd
要获得一般帮助,输入:?。
要获得命令帮助,输入:? command,其中 command 可以是
数据库管理器命令的前几个关键字。例如:
 ? CATALOG DATABASE 用于关于 CATALOG DATABASE 命令的帮助
 ? CATALOG          用于关于所有 CATALOG 命令的帮助。
要退出 db2 交互方式,在命令提示符处输入
QUIT。在非交互方式下,所有命令必须以“db2”作前缀。
要列出当前命令选项设置,输入 LIST COMMAND OPTIONS。
要获取更详细的帮助,请参阅 Online Reference Manual。
db2 => CREATE TABLE HADRTEST(ID INTEGER NOT NULL WITH DEFAULT,NAME VARCHAR(10),PRIMARY KEY (ID)) 
RIMARY KEY (ID))
DB20000I  SQL 命令成功完成。
db2 => INSERT INTO HADRTEST (ID,NAME) VALUES (1,'张三')
DB20000I  SQL 命令成功完成。
db2 => INSERT INTO HADRTEST (ID,NAME) VALUES (2,'李四')
DB20000I  SQL 命令成功完成。
db2 => select * from hadrtest
ID          NAME
----------- ----------
          1 张三
          2 李四
  2 条记录已选择。
db2 =>

14.2 在备用服务器上接管主数据库

db2inst1@hadr2:~> db2 takeover hadr on database testdb
DB20000I  The TAKEOVER HADR ON DATABASE command completed successfully.
db2inst1@hadr2:~> db2pd -hadr -db testdb
Database Partition 0 -- Database TESTDB -- Active -- Up 0 days 00:06:46 -- Date 02/29/2012 19:34:09
db2inst1@hadr1:~> db2pd -hadr -db testdb
Database Partition 0 -- Database TESTDB -- Standby -- Up 0 days 00:07:12 -- Date 02/29/2012 11:19:19

14.3  客户端应用程序验证

客户端程序无法连原主数据库后,会自动重新路由连接到备用数据库,不用客户端重新连库。
C:\Users\Administrator>db2cmd
C:\Users\Administrator>db2 "select * from hadrtest"
SQL30108N  连接失败,但是已经重新建立了连接。主机名或 IP
地址为"192.168.1.244",服务名称或端口号为
"60000"。可能会也可能不会重新尝试专用寄存器(原因码 = "1")。  SQLSTATE=08506
C:\Users\Administrator>db2 "select * from hadrtest"
ID          NAME
----------- ----------
          1 张三
          2 李四
  2 条记录已选择。

重新在原主服务器上接管数据库,恢复最初主备数据库服务器状态,验证客户程序的连接,也自动完成重新路由。
 
15  主数据库异常时接管
在主数据库宕库,主数据库主机故障,网络故障等异常情况下导致主数据库问题是的接管测试。

15.1 用db2_kill命令手工关闭主服务器
db2inst1@hadr1:~> db2_kill
ipclean: Removing DB2 engine and client's IPC resources for db2inst1.
15.2  看备机状态
db2inst1@hadr2:~> db2pd -hadr -db testdb
Database Partition 0 -- Database TESTDB -- Standby -- Up 0 days 00:14:51 -- Date 02/29/2012 19:42:14

15.3  在备用服务器上接管HADR主数据库
db2inst1@hadr2:~> db2 takeover hadr on database sample
SQL1770N Takeover HADR cannot complete. Reason code = "1".
db2inst1@hadr2:~>  db2 takeover hadr on database sample by force
DB20000I The TAKEOVER HADR ON DATABASE command completed successfully.
 
 

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

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2012-02-29

  • 博文量
    1
  • 访问量
    3833