医学 linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

suse15 sp2安装 db2 v11.5

访问量:54 创建时间:2026-04-18
主机 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

创建一个新的 DB2 数据库实例

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工具连的。你可以用其他工具连。

配置hadr

机器 hostname
192.168.72.188 db2pri
192.168.72.189 db2std

配置/etc/hosts

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

配置/etc/services

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同步参数

##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机器操作

备库/home/db2inst1/db2_backup目录下查看

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

配置HADR同步参数

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

启动hadr

先启动备库

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.

查看hadr状态

##主库
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.

注:HADR启停顺序

##停止

主:
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

登陆评论: 使用GITHUB登陆