| 主机 | hostname |
|---|---|
| 192.168.72.189 | db2std |
db2std:~ # cd /hndata/
db2std:/hndata # ll
total 1877684
-rw-r--r-- 1 root root 1922745800 Apr 14 16:03 v11.5_linuxx64_dec.tar.gz
db2std:/hndata # tar xf v11.5_linuxx64_dec.tar.gz
db2std:/hndata # ll
total 1877684
drwxr-xr-x 1 root root 240 Jun 11 2019 server_dec
-rw-r--r-- 1 root root 1922745800 Apr 14 16:03 v11.5_linuxx64_dec.tar.gz
db2std:/hndata # cd server_dec/
(可以检查,但是suse sp2会检查失败)
db2std:/hndata/server_dec # ./db2_install -f sysreq
##输入以下内容自动安装
yes
yes
SERVER
no
###...省略部分输出,可以看到有告警warnings ,可以查看安装日志
Task #59 start
Description: Updating global profile registry
Estimated time 3 second(s)
Task #59 end
The execution completed with warnings.
For more information see the DB2 installation log at
"/tmp/db2_install.log.7045".
db2std:/hndata/server_dec # cd /opt/ibm/db2/V11.5/adm
db2std:/opt/ibm/db2/V11.5/adm # chmod -R 775 *
db2std:/opt/ibm/db2/V11.5/adm # ./db2licm -a /hndata/server_dec/db2/license/db2dec.lic
LIC1402I License added successfully.
LIC1426I This product is now licensed for use as outlined in your License Agreement. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V11.5/license/en_US.iso88591"
###查看许可
db2std:/opt/ibm/db2/V11.5/adm # /opt/ibm/db2/V11.5/adm/db2licm -l
Product name: "IBM DB2 Developer-C Edition"
License type: "Community"
Expiry date: "Permanent"
Product identifier: "db2dec"
Version information: "11.5"
Max amount of memory (GB): "16"
Max number of cores: "4"
Max amount of table space (GB): "100"
groupadd -g 2000 db2iadm1
groupadd -g 2001 db2fadm1
useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1
useradd -m -g db2fadm1 -d /home/db2fenc1 db2fenc1
passwd db2inst1 ##设置db2inst1用户密码
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: password updated successfully
db2std:/opt/ibm/db2/V11.5/adm # cd ../instance/
db2std:/opt/ibm/db2/V11.5/instance # ./db2icrt -p 60000 -u db2fenc1 db2inst1
DBI1446I The db2icrt command is running.
DB2 installation is being initialized.
Total number of tasks to be performed: 4
Total estimated time for all tasks to be performed: 309 second(s)
Task #1 start
Description: Setting default global profile registry variables
Estimated time 1 second(s)
Task #1 end
Task #2 start
Description: Initializing instance list
Estimated time 5 second(s)
Task #2 end
Task #3 start
Description: Configuring DB2 instances
Estimated time 300 second(s)
Task #3 end
Task #4 start
Description: Updating global profile registry
Estimated time 3 second(s)
Task #4 end
The execution completed successfully.
For more information see the DB2 installation log at "/tmp/db2icrt.log.44321".
DBI1070I Program db2icrt completed successfully.
切换到用户db2inst1 下创建(如果是为了搭建hadr,创建测试数据库与测试数据库连接 ,这两步可以跳过)
db2std:/opt/ibm/db2/V11.5/instance # su -l db2inst1
##########创建样本数据库命令db2sampl
db2inst1@db2std:~> db2sampl
Starting the DB2 instance...
Creating database "SAMPLE"...
Connecting to database "SAMPLE"...
Creating tables and data in schema "DB2INST1"...
Creating tables with XML columns and XML data in schema "DB2INST1"...
Stopping the DB2 instance...
'db2sampl' processing complete.
#########启动数据库db2start
db2inst1@db2std:~> db2start
04/14/2026 16:26:10 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
####查看监听端口
db2inst1@db2std:~> ss -tunlp | grep 6000
tcp LISTEN 0 128 0.0.0.0:60000 0.0.0.0:* users:(("db2sysc",pid=60006,fd=6))
我用DataGrip工具连的。你可以用其他工具连。

| 机器 | hostname |
|---|---|
| 192.168.72.188 | db2pri |
| 192.168.72.189 | db2std |
db2std:~ # vim /etc/hosts
192.168.72.188 db2pri
192.168.72.189 db2std
确保hostname 解析
192.168.72.189机器
db2std:~ # hostname
db2std
192.168.72.188机器
db2pri:~ # hostname
db2pri
2个机器都配置
vim /etc/services
db2_hadr01 63001/tcp
db2_hadr02 63002/tcp
su - db2inst1
db2set DB2COMM=TCPIP
db2set -all
188机器下执行
root用户下执行
db2pri:~ # mkdir -p /db2/db2inst1/data/testdb
db2pri:~ # mkdir -p /db2/db2inst1/arch
db2pri:~ # mkdir /db2/db2inst1/data/testdb/tbs
db2pri:~ # chown db2inst1:db2iadm1 -R /db2
##创建数据库
su - db2inst1
db2 "create db testdb on /db2/db2inst1/data/testdb using codeset utf8 territory CN"
db2 connect to testdb
##创建缓冲区(索引与数据在一个缓冲区,一个表空间方便管理)
db2 "create bufferpool BP_MIX_8k size 10000 pagesize 8k"
##创建表空间
db2 "create regular tablespace TS_MIX_8k pagesize 8k managed by automatic storage bufferpool BP_MIX_8k"
##创建表
db2 connect to testdb
db2 'create table product(id integer,name varchar(10)) IN TS_MIX_8k'
##新增表数据
db2 "insert into product values(1,'drm')"
db2 'select * from product'
ID NAME
----------- ----------
1 drm
1 record(s) selected.
db2 update db cfg for testdb using logarchmeth1 disk:/db2/db2inst1/arch
###告警是需要重启数据库生效
mkdir -p /home/db2inst1/db2_backup
chown db2inst1:db2iadm1 -R /home/db2inst1/db2_backup
db2 force applications all
db2 backup database testdb to "/home/db2inst1/db2_backup"
db2inst1@db2pri:~> db2stop
04/14/2026 17:00:29 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
db2inst1@db2pri:~> db2start
04/14/2026 17:00:39 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
db2inst1@db2pri:~> db2 archive log for db testdb
db2set DB2_HADR_ROS=ON
db2set DB2_STANDBY_ISO=UR
##HADR_LOCAL_* 为当前机器参数 HADR_REMOT_* 为对方的参数(主或者备) HADR_REMOTE_INST 为示例名
db2 update db cfg for testdb using HADR_LOCAL_HOST db2pri
db2 update db cfg for testdb using HADR_LOCAL_SVC db2_hadr01
db2 update db cfg for testdb using HADR_REMOTE_HOST db2std
db2 update db cfg for testdb using HADR_REMOTE_SVC db2_hadr02
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 120
db2 update db cfg for testdb using LOGINDEXBUILD ON
db2inst1@db2pri:~> scp /home/db2inst1/db2_backup/TESTDB.0.db2inst1.DBPART000.20260414170000.001 db2inst1@db2std:/home/db2inst1/db2_backup/
Password:
TESTDB.0.db2inst1.DBPART000.20260414170000.001 100% 176MB 91.4MB/s 00:01
189机器操作
db2inst1@db2std:~> ll /home/db2inst1/db2_backup/
total 180300
-rw------- 1 db2inst1 db2iadm1 184627200 Apr 14 17:22 TESTDB.0.db2inst1.DBPART000.20260414170000.001
mkdir -p /db2/db2inst1/data/testdb
mkdir -p /db2/db2inst1/arch
mkdir /db2/db2inst1/data/testdb/tbs
chown db2inst1:db2iadm1 -R /db2
db2inst1用户下执行
db2 restore database testdb from "/home/db2inst1/db2_backup"
db2set DB2_HADR_ROS=ON
db2set DB2_STANDBY_ISO=UR
db2inst1@db2std:~> db2 get db cfg for testdb | grep Rollforward
Rollforward pending = DATABASE
db2inst1@db2std:~> db2 rollforward db testdb query status
Rollforward Status
Input database alias = testdb
Number of members have returned status = 1
Member ID = 0
Rollforward status = DB pending
Next log file to be read = S0000000.LOG
Log files processed = -
Last committed transaction = 2026-04-14-09.00.00.000000 UTC
db2inst1@db2std:~> db2 get db cfg for testdb | grep -i HADR
HADR database role = STANDARD
HADR local host name (HADR_LOCAL_HOST) =
HADR local service name (HADR_LOCAL_SVC) =
HADR remote host name (HADR_REMOTE_HOST) =
HADR remote service name (HADR_REMOTE_SVC) =
HADR instance name of remote server (HADR_REMOTE_INST) =
HADR timeout value (HADR_TIMEOUT) = 120
HADR target list (HADR_TARGET_LIST) =
HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC
HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(0)
HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0
HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0
HADR SSL certificate label (HADR_SSL_LABEL) =
############################# 执行以下命令
db2 update db cfg for testdb using HADR_LOCAL_HOST db2std
db2 update db cfg for testdb using HADR_LOCAL_SVC db2_hadr02
db2 update db cfg for testdb using HADR_REMOTE_HOST db2pri
db2 update db cfg for testdb using HADR_REMOTE_SVC db2_hadr01
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 120
db2 update db cfg for testdb using LOGINDEXBUILD ON
db2inst1@db2std:~> db2 start hadr on database testdb as standby
DB20000I The START HADR ON DATABASE command completed successfully.
db2inst1@db2pri:~> db2 start hadr on database testdb as primary
DB20000I The START HADR ON DATABASE command completed successfully.
##主库
db2inst1@db2pri:~> db2pd -db testdb -hadr
Database Member 0 -- Database TESTDB -- Active -- Up 0 days 00:01:06 -- Date 2026-04-14-17.36.18.249731
HADR_ROLE = PRIMARY
REPLAY_TYPE = PHYSICAL
HADR_SYNCMODE = NEARSYNC
STANDBY_ID = 1
LOG_STREAM_ID = 0
HADR_STATE = PEER
HADR_FLAGS = TCP_PROTOCOL
PRIMARY_MEMBER_HOST = db2pri
PRIMARY_INSTANCE = db2inst1
PRIMARY_MEMBER = 0
STANDBY_MEMBER_HOST = db2std
STANDBY_INSTANCE = db2inst1
STANDBY_MEMBER = 0
HADR_CONNECT_STATUS = CONNECTED
HADR_CONNECT_STATUS_TIME = 04/14/2026 17:35:15.892031 (1776159315)
HEARTBEAT_INTERVAL(seconds) = 30
HEARTBEAT_MISSED = 0
HEARTBEAT_EXPECTED = 2
HADR_TIMEOUT(seconds) = 120
TIME_SINCE_LAST_RECV(seconds) = 2
PEER_WAIT_LIMIT(seconds) = 0
LOG_HADR_WAIT_CUR(seconds) = 0.000
LOG_HADR_WAIT_RECENT_AVG(seconds) = 0.001020
LOG_HADR_WAIT_ACCUMULATED(seconds) = 0.002
LOG_HADR_WAIT_COUNT = 2
SOCK_SEND_BUF_REQUESTED,ACTUAL(bytes) = 0, 87040
SOCK_RECV_BUF_REQUESTED,ACTUAL(bytes) = 0, 131072
PRIMARY_LOG_FILE,PAGE,POS = S0000002.LOG, 0, 61531922
STANDBY_LOG_FILE,PAGE,POS = S0000002.LOG, 0, 61531922
HADR_LOG_GAP(bytes) = 0
STANDBY_REPLAY_LOG_FILE,PAGE,POS = S0000002.LOG, 0, 61531922
STANDBY_RECV_REPLAY_GAP(bytes) = 0
PRIMARY_LOG_TIME = 04/14/2026 17:35:39.000000 (1776159339)
STANDBY_LOG_TIME = 04/14/2026 17:35:39.000000 (1776159339)
STANDBY_REPLAY_LOG_TIME = 04/14/2026 17:35:39.000000 (1776159339)
STANDBY_RECV_BUF_SIZE(pages) = 4300
STANDBY_RECV_BUF_PERCENT = 0
STANDBY_SPOOL_LIMIT(pages) = 25600
STANDBY_SPOOL_PERCENT = 0
STANDBY_ERROR_TIME = NULL
PEER_WINDOW(seconds) = 0
READS_ON_STANDBY_ENABLED = Y
STANDBY_REPLAY_ONLY_WINDOW_ACTIVE = N
##备库
db2inst1@db2std:~> db2pd -db testdb -hadr
Database Member 0 -- Database TESTDB -- Active Standby -- Up 0 days 00:02:44 -- Date 2026-04-14-17.37.15.063998
HADR_ROLE = STANDBY
REPLAY_TYPE = PHYSICAL
HADR_SYNCMODE = NEARSYNC
STANDBY_ID = 0
LOG_STREAM_ID = 0
HADR_STATE = PEER
HADR_FLAGS = TCP_PROTOCOL
PRIMARY_MEMBER_HOST = db2pri
PRIMARY_INSTANCE = db2inst1
PRIMARY_MEMBER = 0
STANDBY_MEMBER_HOST = db2std
STANDBY_INSTANCE = db2inst1
STANDBY_MEMBER = 0
HADR_CONNECT_STATUS = CONNECTED
HADR_CONNECT_STATUS_TIME = 04/14/2026 17:35:15.056011 (1776159315)
HEARTBEAT_INTERVAL(seconds) = 30
HEARTBEAT_MISSED = 0
HEARTBEAT_EXPECTED = 3
HADR_TIMEOUT(seconds) = 120
TIME_SINCE_LAST_RECV(seconds) = 6
PEER_WAIT_LIMIT(seconds) = 0
LOG_HADR_WAIT_CUR(seconds) = 0.000
LOG_HADR_WAIT_RECENT_AVG(seconds) = 0.001020
LOG_HADR_WAIT_ACCUMULATED(seconds) = 0.002
LOG_HADR_WAIT_COUNT = 2
SOCK_SEND_BUF_REQUESTED,ACTUAL(bytes) = 0, 87040
SOCK_RECV_BUF_REQUESTED,ACTUAL(bytes) = 0, 131072
PRIMARY_LOG_FILE,PAGE,POS = S0000002.LOG, 0, 61531922
STANDBY_LOG_FILE,PAGE,POS = S0000002.LOG, 0, 61531922
HADR_LOG_GAP(bytes) = 0
STANDBY_REPLAY_LOG_FILE,PAGE,POS = S0000002.LOG, 0, 61531922
STANDBY_RECV_REPLAY_GAP(bytes) = 65
PRIMARY_LOG_TIME = 04/14/2026 17:35:39.000000 (1776159339)
STANDBY_LOG_TIME = 04/14/2026 17:35:39.000000 (1776159339)
STANDBY_REPLAY_LOG_TIME = 04/14/2026 17:35:39.000000 (1776159339)
STANDBY_RECV_BUF_SIZE(pages) = 4300
STANDBY_RECV_BUF_PERCENT = 0
STANDBY_SPOOL_LIMIT(pages) = 25600
STANDBY_SPOOL_PERCENT = 0
STANDBY_ERROR_TIME = NULL
PEER_WINDOW(seconds) = 0
READS_ON_STANDBY_ENABLED = Y
STANDBY_REPLAY_ONLY_WINDOW_ACTIVE = N
##主库新增数据
db2inst1@db2pri:~> db2 connect to testdb
Database Connection Information
Database server = DB2/LINUXX8664 11.5.0.0
SQL authorization ID = DB2INST1
Local database alias = TESTDB
db2inst1@db2pri:~> db2 'select * from product'
ID NAME
----------- ----------
1 drm
1 record(s) selected.
db2inst1@db2pri:~> db2 "insert into product values(2,'up')"
DB20000I The SQL command completed successfully.
db2inst1@db2pri:~> db2 'select * from product'
ID NAME
----------- ----------
1 drm
2 up
2 record(s) selected.
##备库查看
db2inst1@db2std:~> db2 connect to testdb
Database Connection Information
Database server = DB2/LINUXX8664 11.5.0.0
SQL authorization ID = DB2INST1
Local database alias = TESTDB
db2inst1@db2std:~> db2 'select * from product'
ID NAME
----------- ----------
1 drm
2 up
2 record(s) selected.
##停止
主:
db2 stop hadr on db testdb
备:
db2 deactivate db testdb
db2 stop hadr on db testdb
##启动
备:
db2 start hadr on db testdb as standby
主:
db2 start hadr on db testdb as primary
db2 takeover hadr on database testdb
db2 takeover hadr on database testdb by force
参考:https://blog.csdn.net/qq_44233566/article/details/134684526