DB2的HADR的搭建

article/2025/11/11 7:26:06

整理这篇文档主要记录复制搭建过程中遇到的问题,被其中一个搞了好久才突然一下子明白过来。。。。

1.备份恢复的时候报错:SQL0970N The system attempted to write to a read-only file. SQLSTATE=55009
2.SQL1768N Unable to start HADR. Reason code = “5”.
3.没有复制。。。

辅助工具: db2diag
db2diag -level Error
在一台机器上安装了两个实例db2inst1,db2inst2,然后将HADR_LOCAL_SVC 和HADR_REMOTE_SVC设置的与实例的运行端口一致,所以,一直在报“SQL1768N Unable to start HADR. Reason code = “5””的错误,实际上在这里有个误解,我们配置MySQL的复制时,要使用端口号3306,但是这里的复制监听端口跟MySQL的端口不一样的,因为DB2的进程实际上就是Linux的进程,所以在这里需要另行开端口,也就是我们随意指定一个监听端口,当启动HADR后,这个端口就会打开,负责复制的通信。

如图:
这里写图片描述

2017-09-01-16.28.54.340565+480 I908211E796           LEVEL: Error
PID     : 36456                TID : 139973198079744 PROC : db2sysc
INSTANCE: db2inst2             NODE : 000            DB   : KILO
APPHDL  : 0-17                 APPID: *LOCAL.db2inst2.170901082853
AUTHID  : DB2INST2             HOSTNAME: db22.com
EDUID   : 22                   EDUNAME: db2agent (KILO)
FUNCTION: DB2 UDB, High Availability Disaster Recovery, hdrValidateLocalServiceDbCfg, probe:21210
MESSAGE : ZRC=0x87800142=-2021654206=HDR_ZRC_CONFIG_LOCAL_SVC"HADR_LOCAL_SVC configuration parameter is an invalid service name"
DATA #1 : <preformatted>
HADR_LOCAL_SVC cannot be same port as SVCENAME or SVCENAME +1  
HADR_LOCAL_SVC 54001,  Port # 54001  
SVCENAME       54001,  Port # 54001  
SVCENAME + 1   54002

诊断日志中说HADR_LOCAL_SVC cannot be same port as SVCENAME or SVCENAME +1 ,所以突然就想到应该是要另开端口的。

2.db2inst1上的备份,db2inst2上恢复时报SQL0970N :read-only的错误

[db2inst2@a18 ~]$ db2 restore db kilo taken at 20170904100841
SQL0970N  The system attempted to write to a read-only file.  SQLSTATE=55009
2017-09-04-10.12.50.228929+480 I169707E3155          LEVEL: Error (OS)
PID     : 4096                 TID : 140640650258176 PROC : db2sysc
INSTANCE: db2inst2             NODE : 000            DB   :         
APPHDL  : 0-13                 APPID: *LOCAL.db2inst2.170904020959
AUTHID  : DB2INST2             HOSTNAME: a18.mysql.iso0.lfk.com
EDUID   : 21                   EDUNAME: db2agent (instance)
FUNCTION: DB2 Common, OSSe, ossErrorIOAnalysis, probe:100
CALLED  : OS, -, open                             OSERR: EACCES (13)
DATA #1 : String, 157 bytes
A total of 2 analysis will be performed :- User info- Path access permission
[db2inst2@a18 ~]$ db2 restore db kilo taken at 20170904100841 on /home/db2inst2
DB20000I  The RESTORE DATABASE command completed successfully.

3.在primary上建表并插入数据,standby上没有收到。

db2diag -level Error
... ... ...
2017-09-01-17.08.55.963065+480 E3711665E645          LEVEL: Error
PID     : 39151                TID : 140330070435584 PROC : db2sysc
INSTANCE: db2inst1             NODE : 000            DB   : KILO    
HOSTNAME: db22.com
EDUID   : 41                   EDUNAME: db2hadrp.0.1 (KILO)
FUNCTION: DB2 UDB, High Availability Disaster Recovery, hdrEduAcceptEvent, probe:20200
MESSAGE : Did not receive anything through HADR connection for the duration of HADR_TIMEOUT. Closing connection.
DATA #1 : String, 30 bytes
hdrCurrentTime/hdrLastRecvTime
DATA #2 : unsigned integer, 4 bytes
1504256935
DATA #3 : unsigned integer, 4 bytes
15042564172017-09-01-18.18.58.511765+480 E3720982E514          LEVEL: Error (OS)
PID     : 39151                TID : 140330070435584 PROC : db2sysc
INSTANCE: db2inst1             NODE : 000            DB   : KILO    
HOSTNAME: db22.com
EDUID   : 41                   EDUNAME: db2hadrp.0.1 (KILO)
FUNCTION: DB2 UDB, oper system services, sqloPdbQuerySocketErrorStatus, probe:15
MESSAGE : ZRC=0x810F001C=-2129723364=SQLO_NO_CONNECTION "No connection"
CALLED  : OS, -, getsockopt                       OSERR: ECONNRESET (104)2017-09-01-18.19.19.039294+480 I3721497E557          LEVEL: Error
PID     : 39151                TID : 140330070435584 PROC : db2sysc
INSTANCE: db2inst1             NODE : 000            DB   : KILO    
HOSTNAME: db22.com
EDUID   : 41                   EDUNAME: db2hadrp.0.1 (KILO)
FUNCTION: DB2 UDB, High Availability Disaster Recovery, hdrSendRedirectMsgToOneAddress, probe:31070
MESSAGE : ZRC=0xFFFFFFFF=-1
DATA #1 : <preformatted>
The HADR primary was not able to form a TCP connection with the standby: [0000:0000:0000:0000:0000:0000:0000:0001]:54001.... ... ...
2017-09-04-11.13.22.594229+480 I445495E514           LEVEL: Error
PID     : 11131                TID : 140677660796672 PROC : db2sysc
INSTANCE: db2inst2             NODE : 000            DB   : KILO    
HOSTNAME: a18.mysql.iso0.lfk.com
EDUID   : 90                   EDUNAME: db2hadrs.0.0 (KILO)
FUNCTION: DB2 UDB, High Availability Disaster Recovery, hdrEduAcceptEvent, probe:20280
MESSAGE : ZRC=0x810F0019=-2129723367=SQLO_CONN_REFUSED "Connection refused"
DATA #1 : <preformatted>
Failed to connect to primary.


The HADR primary was not able to form a TCP connection with the standby: [0000:0000:0000:0000:0000:0000:0000:0001]:54001.

4.备库设置可读

[db2inst2@a18 ~]$ db2 connect to kilo
SQL1776N  The command cannot be issued on an HADR database. Reason code = "1".

启用“在备用数据库上读取”
将 DB2_HADR_ROS 注册表变量设置为 ON。

[db2inst2@a18 ~]$ db2set DB2_HADR_ROS=ON
#重启一下db2实例,重启一下复制
[db2inst2@a18 ~]$ db2 connect to kiloDatabase Connection InformationDatabase server        = DB2/LINUXX8664 11.1.2.2SQL authorization ID   = DB2INST2Local database alias   = KILO

5.设置了可读,如果用户不一致,还是会因为没有权限报SQL0551N的错误呢

SQL0551N
authorization-ID does not have the required authorization or privilege to perform operation operation on object object-name.
SELECT AUTHORITY, D_USER, D_GROUP, D_PUBLIC, ROLE_USER, ROLE_GROUP, ROLE_PUBLIC, D_ROLE  FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('ALICE', 'U') ) AS T   ORDER BY AUTHORITY


在备份之前进行授权。

授权后备份恢复后又遇到一个问题:

执行select时报错:SQL1773N,
查找参考官文:

SQL1773N
该语句或命令失败,因为其需要使用允读的 HADR 备用数据库上不支持的功能。原因码:原因码。
说明与原因码对应的解释是:1使用了除 UR 之外的隔离级别,并且已关闭 DB2_STANDBY_ISO 注册表变量。
db2set  DB2_STANDBY_ISO=UR


终于正确读出来了~

https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.1.0/com.ibm.db2.luw.admin.ha.doc/doc/t0011725.html

操作步骤

本次搭建采用一机两个实例搭建:

HADR角色hostsvcnameinstname数据库版本数据库名称
主库localhostba5oltp110.5ST
备库localhostdb2inst110.5

1).主机上设置循环日志

2).主机上连接到授权

db2 connect to st
db2 "grant DATAACCESS ON DATABASE TO DB2INST1"

3).主机上备份数据库

db2 backup database to /tmp

4).root更改备份文件所有者

chown db2inst1 /tmp/ST*

5).备库上恢复

db2 restore db st from /tmp taken at 20170920112008 on /home/db2inst1

6).编辑/etc/services文件,添加与SVCENAME不同的服务名和端口号

#ba5oltp1
$db2 get dbm cfg | grep SVCTCP/TP Service name              (SVCENAME)=DB2cbaoltp1
#主库所在的实例服务
DB2cba5oltp1    50110/tcp
#添加主库HADR的端口号
DB2_ba5oltp1_1  60071/tcp#备库所在的实例服务
DB2_db2inst1    60011/tcp
#备库HADR的端口号
DB2_db2inst1_1  60013/tcp

7).根据配置执行更新

#主库上:
db2 update db cfg for ST using HADR_LOCAL_HOST localhost HADR_LOCAL_SVC DB2_ba5oltp1_1  HADR_REMOTE_HOST localhost HADR_REMOTE_SVC DB2_db2inst1_1 HADR_REMOTE_INST db2inst1#备库上:
db2 update db cfg for ST using HADR_LOCAL_HOST localhost HADR_LOCAL_SVC DB2_db2inst1_1 HADR_REMOTE_HOST localhost HADR_REMOTE_SVC DB2_ba5oltp1_1    HADR_REMOTE_INST ba5oltp1

启动HADR

备库上:

http://chatgpt.dhexx.cn/article/nT3cD3Gy.shtml

相关文章

gaussDB安装

1、用winSCP连接弹性服务器&#xff0c;将windows下的gaussDB安装包复制到linux下 2、将GaussDB安装包从root目录下复制一份到/gs目录下 3、在当前目录解压缩 4、打开配置文件 vi /etc/profile 添加如下命令 ulimit -c unlimited 5、打开系统配置文件 vi /etc/sysctl.c…

redis 如何切换db

文章来源&#xff1a;http://www.ttlsa.com/redis/redis-database/ redis默认有db0~db15之多。 一台服务器上都快开启200个redis实例了&#xff0c;看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开。 那么&#xff0c;redis有没有什么方法使不同…

PostgreSQL安装+TimescaleDB安装(Windows)

PostgreSQL安装TimescaleDB安装&#xff08;Windows&#xff09; 一、安装环境1.系统2.PostgreSQL安装包3.TimescaleDB安装包4.Visual Studio Community 2019 二、PostgreSQL安装1.安装PostgreSQL2.配置环境变量3.验证是否安装成功 三、TimescaleDB安装1.安装TimescaleDB2.验证…

springboot连接redis并动态切换database(db0到db15)

redis redis db0到db15springboot连接redis添加配置文件application.properties测试是否连接成功redis动态切换database redis db0到db15 可以理解为数据库表这是redis默认提供的16个表 我们可以把不同的数据存在不同的db上 取得时候可以在不同的db拿到不同类型数据 springb…

各种接口

一、DB9与DB25 九针串口 串口是计算机主要的外部接口之一&#xff0c;通过九针串口连接的设备有很多&#xff0c;像串口鼠标、MODEM、手写板等等&#xff0c;九针串口的示意图如上&#xff0c;其各脚的定义如下&#xff1a; 1 DCD 载波检测 2 RXD 接收数据 3 TXD 发送数据…

Altium designer--DB接口DB9/DB15/DB25/DB37/DB50

使用Altium designer软件绘制DB接口封装图如下所示&#xff1a; 具体获取方式见文末链接 &#xff08;1&#xff09;DB9针 &#xff08;2&#xff09;DB15针 &#xff08;3&#xff09;DB25针 &#xff08;4&#xff09;DB37针 &#xff08;5&#xff09;DB50针 AD封装库链接…

常用接口定义02——DB与DR系列端口

&#xfeff;&#xfeff; DB系列与DR系列端子是设计PCB时经常会遇到的&#xff0c;直到前两天才专门找时间总结了一下两个系列接口的区别并从淘宝上找到实物图与之对应。 DB系列&#xff1a; 1.DB9 2.DB15&#xff08;三排&#xff09; 母头尺寸图&#xff1a; 3.DB15&#x…

pixhawk罗盘校准进度条没有反应

可能还是得把GPS加上才能校准罗盘。 https://blog.csdn.net/LockeDr/article/details/89320593 https://wenku.baidu.com/view/1b5c56114a2fb4daa58da0116c175f0e7cd11968.html

电子罗盘详解之地磁场和航向角

地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而异。地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而…

倾斜补偿的电子罗盘(2):磁传感器的误差来源、硬磁干扰的校准(3个参数)、实验验证

电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&#xff09;、实验验证 文章目录 理想情况误差来源内部外部误差模型 硬磁干扰的校准&#xff08;3个参数&#xff09;使用的模型最小二乘法 实测结果总结代码和资料MATLAB代码参考资料样机 理想…

倾斜补偿的电子罗盘(3):椭球拟合,磁传感器软磁干扰和硬磁干扰的9参数校准

倾斜补偿的电子罗盘(3)&#xff1a;椭球拟合&#xff0c;磁传感器软磁干扰和硬磁干扰的9参数校准 背景 之前提到磁传感器的误差来源&#xff0c;并介绍了消除硬磁干扰的3参数校准。倾斜补偿的电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&…

地磁传感器_磁感应计_电子罗盘(compass)原理

ref: http://www.360doc.com/content/14/0724/23/9152906_396847920.shtml https://wenku.baidu.com/view/8fcb6f94284ac850ad024244.html 原文链接&#xff1a;https://blog.csdn.net/weixin_43614541/article/details/104818380 1.利用旋转矩阵推导倾斜补偿公式 电子罗盘的…

电子罗盘全详解

目前, 导航系统在汽车、航海、航空等领域已经得到广泛的应用。电子罗盘是导航系统不可缺少的重要组成部分。 GPS导航定位的缺陷 1、虽然GPS在导航、定位、测速、定向方面有着广泛的应用&#xff0c;但由于其信号常被地形、地物遮挡&#xff0c;导致精度大大降低,其信号可用性仅…

电子罗盘详解之原理和特点

电子罗盘的原理 三维电子罗盘由三维磁阻传感器、双轴倾角传感器和MCU构成。 三维磁阻传感器用来测量地球磁场,倾角传感器是在磁力仪非水平状态时进行补偿;MCU处理磁力仪和倾角传感器的信号以及数据输出和软铁、硬铁补偿。 三维磁阻传感器采用三个互相垂直的磁阻传感器,每个…

大疆无人机飞行感知技术中各传感器作用

无人机的飞行感知技术主要有两个用途&#xff1a; 其一是提供给飞行控制系统&#xff0c;由于飞行控制系统的主要功能是控制飞机达到期望姿态和空间位置&#xff0c;所以这部分的感知技术主要测量飞机运动状态相关的物理量&#xff0c;涉及的模块包括陀螺仪、加速度计、磁罗盘、…

看完这个,让你分分钟搞定罗盘与加计校准!

看完这个&#xff0c;让你分分钟搞定罗盘与加计校准&#xff01; 罗盘和加计的校准是日常开发中最基础的工作&#xff0c;特邀Echo老师对罗盘和加速度计校准的工程方法进行总结&#xff0c;为小伙伴你们解惑&#xff0c;是有此文。 作者信息 Echo&#xff0c;本名邹佳池&…

android 磁场传感器 罗盘,Android开发获取重力加速度和磁场强度的方法

本文实例讲述了Android开发获取重力加速度和磁场强度的方法。分享给大家供大家参考,具体如下: Android获取重力加速度和磁场强度主要依靠: Sensor.getRotationMatrix (float[] R, float[] I, float[] gravity, float[] geomagnetic) 输入数据: gravity为重力传感器测得的重…

一文读懂电子罗盘的原理、校准和应用

1 概述及应用 基本介绍 电子罗盘&#xff0c;也叫数字指南针&#xff0c;是利用地磁场来定北极的一种方法&#xff0c;作为导航仪器或姿态传感器已被广泛应用。古代称为罗经&#xff0c;现代利用先进加工工艺生产的磁阻传感器为罗盘的数字化提供了有力的帮助。现在一般由用磁阻…

C#Winform程序制作仿真地平仪,磁罗盘飞行仪表盘

因为项目需要做一个电子飞行仪表盘包括地平仪和磁罗盘&#xff0c;网上找了很久&#xff0c;没有找到一个合适的控件&#xff0c;就学习了一些图形处理的开源代码做一个简陋的仪表盘来使用&#xff0c;希望对其他人有帮助&#xff0c;如果有好的建议不妨留言 源程序代码https:…

不能解锁且地面站显示Preflight Fail:Compass Sensors inconsistent,就把传感器部分全部重新校准一遍就可以解锁了,单单只校准磁罗盘是不够的。

不能解锁且地面站显示Preflight Fail:Compass Sensors inconsistent&#xff0c;就把传感器部分全部重新校准一遍就可以解锁了(今天遇到两次都是这样解决的&#xff09;&#xff0c;单单只校准磁罗盘是不够的。今天在某院飞遇到的。 因为可能我不是第一次遇到这个报错&#xff…