Heim  >  Artikel  >  Datenbank  >  Linux DB2 HADR 双机搭建

Linux DB2 HADR 双机搭建

WBOY
WBOYOriginal
2016-06-07 17:12:591638Durchsuche

搞了好几天总算是把HADR弄好啦,下面分享下 系统环境: OS:SUSE 11sp1-64bit DB: db29.7.0.5 DB2server1:192.168.5.151 db2in

搞了好几天总算是把HADR弄好啦,,下面分享下

系统环境:

OS:SUSE 11sp1-64bit

DB: db29.7.0.5

 

DB2server1:192.168.5.151  db2inst1

DB2server2:192.168.5.152 db2inst2

步骤:

DB2server1上操作:

db2inst1@DB2server1:~> db2 create database oga;

db2inst1@DB2server1:~> db2 get dbm cfg | grep SVC

db2inst1@DB2server1:~> db2set db2comm=tcpip

db2inst1@DB2server1:~> db2 update dbm cfg usingSVCENAME 50001

db2inst1@DB2server1:~> db2 update db cfg for ogausing logretain on

db2inst1@DB2server1:~> db2 update db cfg for ogausing trackmod on;

db2inst1@DB2server1:~> db2 update db cfg for ogausing logindexbuild on;

db2inst2@DB2server1:~> db2 backup db oga

db2inst1@DB2server1:~> db2 "create tablecert(OrgID int not null,EntId int not null,certnum char(20) not null primarykey,issuedate date)"

db2inst1@DB2server1:~> db2 "alter table certdata capture changes"

db2inst1@DB2server1:~> db2 "create tableorg(OrgId int not null primary key, OrgName char(20)) date capturechanges"

 

db2inst1@DB2server1:~> db2 "insert into orgvalues(1, 'org1')"

db2inst1@DB2server1:~> db2 "insert into orgvalues(2, 'org2')"

db2inst1@DB2server1:~> db2 "insert into orgvalues(3, 'org3')"

db2inst1@DB2server1:~> db2 "insert into certvalues(1, 2, 'cert1','2009-12-5')"

db2inst1@DB2server1:~> db2 "insert into certvalues(2, 2, 'cert2','2010-3-5')"

db2inst1@DB2server1:~> db2 "insert into certvalues(3, 2, 'cert3', current date)"

db2inst1@DB2server1:~> db2 update db cfg for ogausing hadr_local_svc 44455

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst1@DB2server1:~> db2 update db cfg for ogausing hadr_remote_host 192.168.5.152

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst1@DB2server1:~> db2 update db cfg for ogausing hadr_local_host 192.168.5.151

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst1@DB2server1:~> db2 update db cfg for ogausing hadr_remote_svc 33344

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst1@DB2server1:~> db2 update db cfg for ogausing hadr_remote_inst db2inst2

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst1@DB2server1:~> db2 update db cfg for ogausing hadr_syncmode nearsync

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2 UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USINGHOSTNAME 192.168.5.151 PORT 50001

db2inst1@DB2server1:~> db2 get db cfg for oga | grep-i hadr

 

DB2server2上的操作

db2inst1@DB2server2:~> db2 create database oga;

db2inst1@DB2server2:~> db2 get dbm cfg | grep SVC

db2inst1@DB2server2:~> db2set db2comm=tcpip

db2inst1@DB2server2:~> db2 update dbm cfg usingSVCENAME 50001

db2inst1@DB2server2:~> db2 update db cfg for ogausing logretain on

db2inst1@DB2server2:~> db2 update db cfg for ogausing trackmod on;

db2inst1@DB2server2:~> db2 update db cfg for ogausing logindexbuild on;

db2inst1@DB2server1:/opt/bak> db2 backup db oga to/opt/bak

 

 

db2inst1@DB2server2:~> db2 "create tablecert(OrgID int not null,EntId int not null,certnum char(20) not null primarykey,issuedate date)"

db2inst1@DB2server2:~> db2 "alter table certdata capture changes"

db2inst1@DB2server2:~> db2 "create tableorg(OrgId int not null primary key, OrgName char(20)) date capturechanges"

db2inst2@DB2server2:~> db2 update db cfg for ogausing hadr_local_host 192.168.5.152

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst2@DB2server2:~> db2 update db cfg for ogausing hadr_local_svc 44455

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst2@DB2server2:~> db2 update db cfg for ogausing hadr_remote_host 192.168.5.151

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst2@DB2server2:~> db2 update db cfg for ogausing hadr_remote_svc 33344

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst2@DB2server2:~> db2 update db cfg for ogausing hadr_syncmode nearsync

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2inst2@DB2server2:~> db2 update db cfg for ogausing HADR_REMOTE_INST db2inst1

DB20000I  TheUPDATE DATABASE CONFIGURATION command completed successfully.

db2 UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USINGHOSTNAME 192.168.5.152 PORT 50001

db2inst1@DB2server2:~> db2 get db cfg for oga | grep-i hadr

db2inst2@DB2server2:/opt/bak> cd /opt/bak/

 

 

重定向恢复

db2 restore db oga on /data_inst2/db2inst2/oga/ dbpathon /data_inst2/db2inst2/ into oga

db2 rollforward db oga stop  ——这个不需要执行,否则在启动备库的时候会提示SQL1767N  Start HADR cannot complete. Reason code ="1".

将表恢复到了db2inst1下面,保证db2inst2可以看到这些表

db2inst2@DB2server2:~> db2 connect to sample userdb2inst1 using db2inst

db2inst2@DB2server2:/opt/bak> db2 connect to sample

b2inst1@DB2server1:/opt/bak> db2 grant dbadm ondatabase to db2inst2

DB20000I  The SQLcommand completed successfully.

db2inst1@DB2server1:/opt/bak> db2 grant secadm ondatabase  to db2inst2

DB20000I  The SQLcommand completed successfully.

db2inst2@DB2server2:~> db2 "select * from db2inst1.cert"

 

ORGID      ENTID       CERTNUM              ISSUEDATE

----------- ----------- -------------------- ----------

          1           2 cert1                12/05/2009

          2           2 cert2                03/05/2010

          3           2 cert3                03/23/2012

启动standby

db2inst2@DB2server2:~>db2 deactivate database sample

SQL1496W Deactivate database is successful, but the database was not

activated.是断开关闭数据库

db2inst2@DB2server2:~> db2 start hadr on db oga asstandby

SQL1032N  Nostart database manager command was issued.

注意:此时standby不可以连接数据库,否则会造成主库不一致的。

db2inst2@DB2server2:~> db2 get snapshot for db onoga | grep Role

  Role                   = Standby

db2inst2@DB2server2:~>

启动主机

db2inst1@DB2server1:/opt/bak> db2 activate db oga

DB20000I  TheACTIVATE DATABASE command completed successfully.

db2inst2@DB2server1:~> db2 start hadr on db oga as primary

db2inst1@DB2server1:~> db2 get snapshot for db onsample | grep Role

  Role                   = Primary

 

验证两台机的状态:

db2inst1@DB2server1:~> db2 get snapshot for db onoga | grep state

Commit statements attempted                = 16

Rollback statements attempted              = 0

Dynamic statements attempted               = 479

Static statements attempted                = 30

Failed statement operations                = 0

Select SQL statements executed             = 152

Xquery statements executed                 = 0

Update/Insert/Delete statements executed   = 9

DDL statements executed                    = 0

 

 

停止

db2inst2@DB2server2:~> db2 deactivate database oga

DB20000I  TheDEACTIVATE DATABASE command completed successfully.

db2inst2@DB2server2:~> db2 stop hadr on database oga

DB20000I  TheSTOP HADR ON DATABASE command completed successfully.

db2inst2@DB2server1:~> db2 stop hadr on database oga

DB20000I  TheSTOP HADR ON DATABASE command completed successfully.

测试:

db2inst1@DB2server1:~> db2 "insert into orgvalues (5,'org5')"

DB20000I  The SQLcommand completed successfully.

备库查看

db2inst2@DB2server2:/opt/bak> db2 get snapshot fordb on oga | grep -i file

Database files closed                      = Not Collected

File number of first active log            = Not applicable

File number of last active log             = Not applicable

File number of current active log          = 12

File number of log being archived          = Not applicable

Rollforward log file being processed       = 7

  Primary logposition(file, page, LSN) = S0000012.LOG, 76, 0000000005374584

  Standby logposition(file, page, LSN) = S0000012.LOG, 76, 0000000005374584

接管主库

原来的主库可以停掉也可以不停

db2inst2@DB2server2:/opt/bak> db2 takeover hadr ondatabase oga user db2inst1 using db2inst1

DB20000I  TheTAKEOVER HADR ON DATABASE command completed successfully.

db2inst2@DB2server2:/opt/bak> db2 connect to oga userdb2inst1 using db2inst1

db2inst2@DB2server2:/opt/bak> db2 "select *from org"

 

ORGID      ORGNAME            

----------- --------------------

          1org1               

          2org2               

          3org3               

          4 org4               

          5org5               

 

  5 record(s)selected.

查看原来主机的状态

db2inst1@DB2server1:~> db2 get snapshot for db onoga | more

 

             Database Snapshot

 

Database name                              = OGA

Database path                              =/data_inst1/db2inst1/db2inst1/NODE0000/SQL00001/

Input database alias                       = OGA

Database status                            = Standby

Catalog database partition number          = 0

Catalog network node name                  =

Operating system running at database server= LINUXAMD64

Location of the database                   = Local

First database connect timestamp           = 2012-03-28 15:21:16.354049

Last reset timestamp                       =

Last backup timestamp                      = 2012-03-2715:20:54.000000

Snapshot timestamp                         = 2012-03-2816:26:47.497005

 

Number of automatic storage paths          = 1

原来备库的状态

db2inst2@DB2server2:/opt/bak> db2 get snapshot fordb on oga | more

 

             Database Snapshot

 

Database name                              = OGA

Database path                              =/data_inst2/db2inst2/db2inst2/NODE0000/SQL00001/

Input database alias                       = OGA

Database status                            = Active

Catalog database partition number          = 0

Catalog network node name                  =

Operating system running at database server= LINUXAMD64

Location of the database                   = Local

First database connect timestamp           = 03/28/2012 15:20:41.342208

Last reset timestamp                       =

Last backup timestamp                      =

Snapshot timestamp                         = 03/28/201216:27:38.538201

 

Number of automatic storage paths          = 1

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Oracle中rownum和rowid的理解Nächster Artikel:探索Oracle之ASM