暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

db2_hadr搭建

原创 sunset 2022-03-21
1468

第一章 环境规划

操作系统

CentOS Linux release 7.6.1810 (Core)

处理器

2

内存

2G

硬盘

20G

主机名称

db2_primaty,db2_standby

IP地址

192.168.157.140 / 141

数据库

v10.5fp8_linuxx64_server_t.tar.gz

 

第二章 主机配置

2.1、修改主机名

vi /etc/hostname

#主

db2_primaty

 

#备

db2_standby

注意:改完重启主机

reboot

2.2配置静态ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33

#主

BOOTPROTO=static         # 使用静态IP地址,默认为dhcp

IPADDR=192.168.157.140   # 设置的静态IP地址

NETMASK=255.255.255.0    # 子网掩码

GATEWAY=192.168.157.2    # 网关地址

DNS1=192.168.157.2       # DNS服务器

 

#备

BOOTPROTO=static         # 使用静态IP地址,默认为dhcp

IPADDR=192.168.157.141   # 设置的静态IP地址

NETMASK=255.255.255.0    # 子网掩码

GATEWAY=192.168.157.2    # 网关地址

DNS1=192.168.157.2       # DNS服务器

 

注意:配置完需要重启网卡

service network restart

 

2.3配置ip映射

vi /etc/hosts

#主备都需要添加

192.168.157.140  db2_primaty

192.168.157.141  db2_standby

 

2.4、配置端口号

2.4.1 查看端口使用情况

 

 

2.4.2 添加端口

vi /etc/services

#主备都需要添加

DB2_HADR_P      50031/tcp

DB2_HADR_S      50032/tcp

 

2.5、关闭防火墙

#查看 firewall状态

firewall-cmd --state

#停止firewall

systemctl stop firewalld.service

#禁止firewall开机启动

systemctl disable firewalld.service

 

第三章 DB2数据库搭建

3.1解压安装包

tar -zxvf v10.5fp8_linuxx64_server_t.tar.gz

 

 

3.2 检查环境是否满足安装要求

 

 

3.2.1 缺少依赖的包

/lib/libpam.so*

kernel-devel

gcc-c++

cpp

gcc

 

 

3.2.2 安装相应依赖包

yum install cpp –y

yum install gcc gcc-c++ -y

yum install libstdc++.so.5 –y

yum install "kernel-devel-uname-r == $(uname -r)"

yum install -y glibc* libstdc*

 

3.2.3 解决缺少libpam.so*错误

[root@db2_primary server_t]# find / -name libpam.so*

/usr/lib64/libpam.so.0

/usr/lib64/libpam.so.0.83.1

/usr/lib64/libpam.so

[root@db2_primary server_t]# rpm -qf /usr/lib64/libpam.so.0

pam-1.1.8-22.el7.x86_64

[root@db2_primary server_t]# rpm -qf /usr/lib64/libpam.so.0.83.1

pam-1.1.8-22.el7.x86_64

[root@db2_primary server_t]# rpm -qf /usr/lib64/libpam.so

pam-devel-1.1.8-22.el7.x86_64

[root@db2_primary server_t]# yum install -y pam*

 

 

3.3 关闭selinux

vi /etc/selinux/config

#添加

SELINUX=disabled

注意:修改完需要重启

reboot

 

3.4 db2数据库安装

./db2_install

安装完成

 

 

3.5 创建实例

使用root 用户进行操作

3.5.1 主机添加相应的用户和组

groupadd -g 2000 db2iadml

groupadd -g 2001 db2fadml

useradd -m -g db2iadml -d /home/db2instl db2instl

useradd -m -g db2fadml -d /home/db2fencl db2fencl

 

3.5.2 创建实例

切换到db2数据库安装目录进行实例的创建

cd /opt/ibm/db2/V10.5/instance

db2icrt -u db2fencl db2instl

 

 

切换到相应目录进行 lic 注册

cd /opt/ibm/db2/V10.5/adm

./db2licm -a /tmp/DB2_tmp_pck/db2aese_c.lic

 

3.5.3 启动实例

#切换到相应实例用户

su – db2instl

#启动实例

db2start

#创建样板数据库

db2sampl

 

第四章 Hadr 搭建

4.1、开启归档日志

db2 update db cfg using LOGARCHMETH1 DISK:/home/db2instl/log

 

设置完归档后,建议重新激活数据库使参数生效,同时必须对数据库进行一次备份(设置归档后,数据库处于backup pending状态)

db2 deactivate db <dbname>

db2 terminate

db2 backup db <dbname>

db2 activate db <dbname>

 

4.2主数据库参数配置

#配置主数据库参数

db2 update db cfg for SAMPLE using HADR_LOCAL_HOST db2_primaty

db2 update db cfg for SAMPLE using HADR_LOCAL_SVC DB2_HADR_P

db2 update db cfg for SAMPLE using HADR_REMOTE_HOST db2_standby

db2 update db cfg for SAMPLE using HADR_REMOTE_SVC DB2_HADR_S

db2 update db cfg for SAMPLE using HADR_REMOTE_INST db2instl

db2 update db cfg for SAMPLE using HADR_TIMEOUT 60

db2 update db cfg for SAMPLE using hadr_peer_window 0

db2 update db cfg for SAMPLE using HADR_SYNCMODE NEARSYNC

db2 update db cfg for SAMPLE using LOGINDEXBUILD on

db2 update db cfg for SAMPLE using INDEXREC RESTART

4.3、脱机备份数据库

4.3.1 脱机备份

db2 force applications all     --强制退出所有连接

db2 deactivate db sample

db2 backup db sample to ~/bak

db2 activate db sample

 

 

20190417020435

 

4.3.2 将备份镜像传送到备机服务器上

scp bak/SAMPLE.0.db2instl.DBPART000.20190417020435.001 db2instl@db2_standby:~/bak/

 

4.3.3 备机恢复数据库镜像

修改备机注册变量

#启用数据库可读功能

db2set DB2_HADR_ROS=on

#设置活动备用数据库上的隔离级别

db2set DB2_STANDBY_ISO=UR

 

进行镜像恢复

db2 restore database SAMPLE from ~/bak taken at 20190417020435 WITHOUT PROMPTING

 

4.3.4 查看数据库状态

db2 get db cfg for sample | grep -i rollforward

 

注释:恢复完成后首先确保备机数据库状态是rollforward-pending 状态,再启动hadr

 

 

4.3.5 备数据库参数修改

#修改备库参数

db2 update db cfg for SAMPLE using HADR_LOCAL_HOST db2_standby

db2 update db cfg for SAMPLE using HADR_LOCAL_SVC DB2_HADR_S

db2 update db cfg for SAMPLE using HADR_REMOTE_HOST db2_primaty

db2 update db cfg for SAMPLE using HADR_REMOTE_SVC DB2_HADR_P

db2 update db cfg for SAMPLE using HADR_REMOTE_INST db2instl

 

4.3.6 启hadr

#先从从备机启动hadr

db2 start hadr on database SAMPLE as standby

 

#在启动主机hadr

db2 start hadr on database SAMPLE as primary

 

 

4.3.7 查看hadr状态

#查看状态

db2pd -d SAMPLE -hadr

 

主数据库现实的内容

 

 

备数据库显示的内容

 

 

第五章 测试

 

5.1 hadr切换

db2 takeover hadr on db sample

上述命令只能从standby端执行切换,进行切换前需要查看hadr的是否处于peer状态,如果是怎可以正常切换。

除了上面命令实现正常切换之外,还可以通过使用 by force强制切换来完成角色的切换。但是此命令将原来的standby端切换为primary ,而原来的primary端并不会切换为standby ,而是出于非活跃状态,此时db2_primaty服务器上的数据库,则不能直接启动成为standby角色,需要从主数据 备份镜像重新初始化数据库然后才能启动成为standby角色。如下图所示。注意:如果hadr处于非peer状态时,如果使用强制命令进行切换,非常可能会造成数据的丢失。

db2 takeover hadr on db sample by force

 

 

5.2 db2 primaty故障hadr切换

5.2.1 第一步

 

 

模拟主库故障,停止db2_primaty

 

 

5.2.2 第二步

1、备数据库db2_standby 进行接管

 

 

2、查看db2_standby角色,是否成功接管

 

 

3、查看数据是否同步成功

 

 

5.2.3 第三步

1、b2_primary 以standby角色进行启动hadr

 

 

2、重新接管primary角色(注释:可按照需求是否重新接管primary角色)

 

重新接管完毕,查看db2_primaty 状态

 

 

查看db2_standby 状态

 

 

 

 

 

 

 

 

 

 

 

 

5.3 db2_standby宕机恢复

 

 

步骤1,停止db2_primaty 的hadr

db2 stop hadr on db sample

 

步骤2,重启激活db2_standby数据库,并起hadr

db2 deactivate db sample

db2 activate db sample

db2 start hadr on db sample as standby

 

步骤3,起db2_primaty 的hadr

db2 start hadr on db sample as primary

 

恢复成功,查看状态

 

 

5.4 备注

日志前滚的时候发生了下面的LSN错误,对HADR环境造成了不可修复的破坏,因此HADR需要重建。

FUNCTION: DB2 UDB, High Availability Disaster Recovery, hdrEduP, probe:20485

MESSAGE : HADR Pair validation failed. Standby is ahead of Primary. Standby

LSN: 000000000D80F390 Primary LSN: 000000000D79FFFF

 

DB2_HADR_BUF_SIZE此变量指定备用日志接收缓冲区大小(以日志页为单位)

如果 STANDBY_RECV_BUF_PERCENT(它指示已使用的备用数据库日志接收缓冲区的百分比)的值接近 100,那么您应该增大 DB2_HADR_BUF_SIZE。如果无论如何都不能影响 primary 的性能时,当 STANDBY_RECV_BUF_PERCENT值为50以上时,应该选择停止standby 的hadr线程。

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论