注册
DM8 数据守护(Data Watch)搭建
专栏/培训园地/ 文章详情 /

DM8 数据守护(Data Watch)搭建

001 2024/03/13 792 0 0
摘要

1 应用场景
硬件再好,也可能有故障;软件再好,也可能由于的BUG从而导致业务不能正常运行。
解决的方法:数据库守护集群---->功能类似于Oracle的data guard。

2 环境说明
此次搭建的主备集群紧紧为测试,搭建的监视器为非确认监视器,故障手动切换。
实际生产环境为保证高可用性,建议搭建确认监视器,需要将确认监视器放到第三台服务器上;主备机器资源配置高点,监视器不怎么耗费资源,可以配置度不那么高;内外网分离。

前期一定要把IP号和端口号规划好,后期出现问题好改。

配置环境说明:
注意:搭建主备集群的时候,主库和备库的系统要一致。
image.png

MAL 系统是基于TCP协议实现的一种内部通信机制,DM通过MAL 系统实现Redo日志传输,以及其他一些实例间的消息通讯。

守护进程(dmwatcher)是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息接收本地守护进程的消息和命令;

监视器(dmmonitor)接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消息交互;

守护进程解析并执行监视器发起的各种命令(Switchover/Takeover/Openforce等),并在必要时通知数据库实例执行相应的操作。

MAL DW PORT: 守护进程监听端口,其他守护进程或监视器使用 ( MAL_HOST+ MAL_DW_PORT ) 创建TCP连接。监视器配置文件 dmmonitor.ini中,MON_DW_IP就是一组MAL HOSTMAL DW PORT。

MAL_INST_DW_PORT:实例对守护进程的监听端口,守护进程使用MAL_HOST+MAL_INST_DW PORT 创建到实例的TCP 连接。
3 配置主库:
3.1 数据准备

  1. 初始化主库
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-12-30
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log


log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log

write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2022-10-12 17:02:13

  1. 启动服务
version info: develop
DM Database Server x64 V8 1-2-98-21.12.30-154539-10040-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-12-30
file lsn: 0
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
iid page's trxid[1002]
NEXT TRX ID = 1003
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
iid page's trxid[2004]
NEXT TRX ID = 3006.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
trx: 3006 purged 1 pages
trx: 3025 purged 1 pages
trx: 3026 purged 1 pages
trx: 3027 purged 1 pages
trx: 3028 purged 1 pages
trx: 3029 purged 1 pages
trx: 3039 purged 1 pages
trx: 3159 purged 1 pages
trx: 3172 purged 1 pages
trx: 3173 purged 1 pages
trx: 3174 purged 1 pages
trx: 3175 purged 1 pages
trx: 3176 purged 1 pages
trx: 3178 purged 1 pages
trx: 3179 purged 1 pages
trx: 3181 purged 1 pages
trx: 3183 purged 1 pages
trx: 3190 purged 1 pages
trx: 3196 purged 1 pages
trx: 3206 purged 1 pages
trx: 3219 purged 1 pages
trx: 3220 purged 1 pages
trx: 3221 purged 1 pages
trx: 3222 purged 1 pages
trx: 3234 purged 1 pages
trx: 3236 purged 1 pages
trx: 3237 purged 1 pages
trx: 3238 purged 1 pages
trx: 3283 purged 6 pages
trx: 3310 purged 1 pages
trx: 3311 purged 1 pages
trx: 3312 purged 1 pages
trx: 3313 purged 1 pages
trx: 3319 purged 1 pages
trx: 3321 purged 1 pages
trx: 3323 purged 1 pages
trx: 3328 purged 1 pages
trx: 3333 purged 1 pages
trx: 3338 purged 1 pages
trx: 3340 purged 1 pages
trx: 3343 purged 1 pages
trx: 3345 purged 1 pages
trx: 3351 purged 1 pages
trx: 3352 purged 1 pages
trx: 3501 purged 1 pages
trx: 3513 purged 1 pages
trx: 3518 purged 1 pages
trx: 3523 purged 1 pages
trx: 3542 purged 8 pages
trx: 3567 purged 1 pages
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.

  1. 开启归档

服务器[192.168.164.7:5235]:处于普通打开状态
登录使用时间 : 1.153(ms)
disql V8
SQL> ALTER DATABASE MOUNT;
操作已执行
已用时间: 3.295(毫秒). 执行号:0.
SQL> ALTER DATABASE ARCHIVELOG;
操作已执行
已用时间: 3.159(毫秒). 执行号:0.
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
操作已执行
已用时间: 2.802(毫秒). 执行号:0.
SQL> ALTER DATABASE OPEN;
操作已执行
已用时间: 15.579(毫秒). 执行号:0.

  1. 备份数据
操作已执行
已用时间: 00:00:01.411. 执行号:700.

3.2 配置dm.ini

DMSQL 过程已成功完成
已用时间: 4.566(毫秒). 执行号:800.
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 3.153(毫秒). 执行号:801.
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
DMSQL 过程已成功完成
已用时间: 5.335(毫秒). 执行号:802.
SQL>  SP_SET_PARA_VALUE (2,'MAL_INI',1);
DMSQL 过程已成功完成
已用时间: 3.126(毫秒). 执行号:803.
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
DMSQL 过程已成功完成
已用时间: 3.064(毫秒). 执行号:804.

3.3 配置dmarch.ini


#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY      = 0

[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL
ARCH_DEST            = /opt/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE       = 1024
ARCH_SPACE_LIMIT     = 51200
ARCH_FLUSH_BUF_SIZE  = 0
ARCH_HANG_FLAG       = 1

[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME  #实时归档类型
ARCH_DEST                = CATHY_S  #实时归档目标

3.4 创建 dmmal.ini
如果前期端口和Ip 都规划得很好的话,后期配置就比较容易


MAL_CHECK_INTERVAL         = 10  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 10  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /opt/dmdbms/data/malpath/  #临时文件目录
MAL_BUF_SIZE               = 512  #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩

[MAL_INST1]
MAL_INST_NAME            = CATHY_P  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.164.7 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5238  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.164.7  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5235  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5239  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5237  #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME            = CATHY_S  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.164.9 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5238  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.164.9  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5235  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5239  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5237  #实例监听守护进程 TCP 连接的端口

3.4 创建 dmwatcher.ini
OGUID可以设置成任意值,但是需要记住,后期启动数据库的时候需要用到这个值。


DW_TYPE                  = GLOBAL  #全局守护类型
DW_MODE                  = MANUAL  #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
INST_ERROR_TIME          = 20  #本地实例故障认定时间
INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
INST_OGUID               = 45331  #守护系统唯一 OGUID 值
INST_INI                 = /opt/dmdbms/data/DAMENG/dm.ini  #dm.ini 文件路径
INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
INST_STARTUP_CMD         = /home/dmdba/dm8_20220304/bin/dmserver  #命令行方式启动
RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

3.5 注册服务
注意:注册的启动方式为以mount启动书库

注册实例启动服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCATHY_P.service → /usr/lib/systemd/system/DmServiceCAPTY_P_01.service.
创建服务(DmServiceCAPTY_P_01)完成

注册守护进程服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service → /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成

4 配置备库
4.1 数据准备

  1. 初始化实例:
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-03-04
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log


 log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log

write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2022-10-13 13:20:35

  1. 还原数据库:
dmrman V8
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.301

RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[37017], file_lsn[37017]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.526

RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[37799], file_lsn[37799]
recover successfully!
time used: 00:00:01.014

  1. 开启归档:
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;

4.2 配置dm.ini



DMSQL 过程已成功完成
已用时间: 7.224(毫秒). 执行号:1700.
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 3.744(毫秒). 执行号:1701.
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
DMSQL 过程已成功完成
已用时间: 3.731(毫秒). 执行号:1702.
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
DMSQL 过程已成功完成
已用时间: 3.732(毫秒). 执行号:1703.
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
DMSQL 过程已成功完成
已用时间: 3.779(毫秒). 执行号:1704.
SQL> ALTER DATABASE MOUNT;
操作已执行
已用时间: 2.793(毫秒). 执行号:0.
SQL> ALTER DATABASE ARCHIVELOG;
操作已执行
已用时间: 3.780(毫秒). 执行号:0.
SQL>  ALTER DATABASE OPEN;

4.3 配置dmarch.ini



[ARCHIVE_LOCAL]
ARCH_TYPE                = LOCAL  #本地归档类型
ARCH_DEST                = /opt/dmdbms/data/DAMENG/arch/  #本地归档存放路径
ARCH_FILE_SIZE           = 1024  #单个归档大小,单位 MB
ARCH_SPACE_LIMIT         = 51200  #归档上限,单位 MB

[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME  #实时归档类型
ARCH_DEST                = CATHY_P  #实时归档目标实例名


4.4 配置dmmal.ini
将主库的配置dmmal.ini内容复制


MAL_CONN_FAIL_INTERVAL     = 10  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /opt/dmdbms/data/malpath/  #临时文件目录
MAL_BUF_SIZE               = 512  #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩

[MAL_INST1]
MAL_INST_NAME            = CATHY_P  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.164.7 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5238  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.164.7  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5235  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5239  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5237  #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME            = CATHY_S  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.164.9 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5238  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.164.9  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5235  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5239  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5237  #实例监听守护进程 TCP 连接的端口

4.5 创建 dmwatcher.ini


DW_TYPE                  = GLOBAL  #全局守护类型
DW_MODE                  = MANUAL  #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
INST_ERROR_TIME          = 20  #本地实例故障认定时间
INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
INST_OGUID               = 45331  #守护系统唯一 OGUID 值
INST_INI                 = /opt/dmdbms/data/DAMENG/dm.ini  #dm.ini 文件路径
INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
INST_STARTUP_CMD         = /home/dmdba/dm8_20220304/bin/dmserver  #命令行方式启动
RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

4.6 注册服务
注册实例服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCATHY_S.service → /usr/lib/systemd/system/DmServiceCATHY_S.service.
创建服务(DmServiceCATHY_S)完成

注册守护进程服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service → /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成

5 配置监视器
手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。

自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。

确认监视器只能启一个,非确认监视器可以启用多个。确认监视器要一直开着,保证高可用性。

注意: 监视器所在的服务上,也需要安装大梦数据库软件,可以不新建实例。

此次配置的为手动切换

5.1 创建主库dmmonitor.ini


MON_LOG_PATH               = ../log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位 MB

[GRP1]
MON_INST_OGUID           = 45331  #组 GRP1 的唯一 OGUID 值
MON_DW_IP   = 192.168.164.7:5239  #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP                = 192.168.164.9:5239

5.2 创建备库dmmonitor.ini

MON_LOG_PATH               = ../log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位 MB

[GRP1]
MON_INST_OGUID           = 45331  #组 GRP1 的唯一 OGUID 值
MON_DW_IP      = 192.168.164.7:5239  #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP                = 192.168.164.9:5239

5.3 注册服务
主库:

Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitor.service → /usr/lib/systemd/system/DmMonitorServiceMonitor.service.
创建服务(DmMonitorServiceMonitor)完成

备库:

Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitor.service → /usr/lib/systemd/system/DmMonitorServiceMonitor.service.
创建服务(DmMonitorServiceMonitor)完成

6 启动集群服务

  1. 启动主库 :设置oguid、设置数据库为primary
-rwxr-xr-x 1 dmdba dinstall 16479 10月 13 13:12 DmServiceCAPTY_P_01
-rwxr-xr-x 1 root  root     16477  6月 29 16:02 DmServiceT1
-rwxr-xr-x 1 dmdba dinstall 16474  6月 28 09:53 DmServiceTEST
[dmdba@192-168-164-7 bin]$ ./DmServiceCAPTY_P_01 start
Starting DmServiceCAPTY_P_01:                              [ OK ]
[dmdba@192-168-164-7 bin]$ ./disql SYSDBA/SYSDBA@192.168.164.7:5235

服务器[192.168.164.7:5235]:处于普通配置状态
登录使用时间 : 1.053(ms)
disql V8
SQL>
SQL> SP_SET_OGUID(45331);
DMSQL 过程已成功完成
已用时间: 12.310(毫秒). 执行号:0.
SQL> ALTER DATABASE PRIMARY;
操作已执行
已用时间: 12.502(毫秒). 执行号:0.

2 启动备库 :设置oguid、设置数据库为standby

-rwxr-xr-x 1 dmdba dinstall 16479 10月 13 13:12 DmServiceCAPTY_P_01
-rwxr-xr-x 1 root  root     16477  6月 29 16:02 DmServiceT1
-rwxr-xr-x 1 dmdba dinstall 16474  6月 28 09:53 DmServiceTEST
[dmdba@192-168-164-7 bin]$ ./DmServiceCAPTY_P_01 start
Starting DmServiceCAPTY_P_01:                              [ OK ]
[dmdba@192-168-164-7 bin]$ ./disql SYSDBA/SYSDBA@192.168.164.7:5235

服务器[192.168.164.7:5235]:处于普通配置状态
登录使用时间 : 1.053(ms)
disql V8
SQL>
SQL> SP_SET_OGUID(45331);
DMSQL 过程已成功完成
已用时间: 12.310(毫秒). 执行号:0.
SQL> ALTER DATABASE STANDBY;
操作已执行
已用时间: 12.502(毫秒). 执行号:0.

3 启动守护进程
分别启动主库和备库的守护进程

Starting DmWatcherServiceWatcher:                          [ OK ]



4启动监视器
分别启动主库和备库的监视器

Starting DmMonitorServiceMonitor:                          [ OK ]


7 监视器查看主备集群状态
7.1 主备集群状态一直为mount,并且FLSN不一致
通过监视器查看,主库和备库的状态都是mount状态,需要查找原因

[monitor]         2022-10-18 15:51:07: DMMONITOR[4.0] V8
[monitor]         2022-10-18 15:51:07: DMMONITOR[4.0] IS READY.

[monitor]         2022-10-18 15:51:07: 收到守护进程(CATHY_P)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-18 15:51:07  STARTUP        OK        CATHY_P          MOUNT       PRIMARY   VALID    2        39097           39097

[monitor]         2022-10-18 15:51:07: 收到守护进程(CATHY_S)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-18 15:51:07  STARTUP        OK        CATHY_S          MOUNT       STANDBY   VALID    5        46387           46387

在监视器里面执行show命令,可以查看到主库和备库的FLSN不一样,需要重新备份主库文件,在备库上还原。

2022-10-19 10:05:49
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             45331       FALSE           MANUAL          FALSE

GROUP SPLIT:
1: DATABASE(CATHY_P):

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.7       5239         2022-10-19 10:05:48  GLOBAL    VALID     STARTUP        CATHY_P          OK        1     1     MOUNT       PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.7       5235       OK        CATHY_P          MOUNT       PRIMARY   0          0            REALTIME  VALID    5565            39097           5565            39097           NONE

2: DATABASE(CATHY_S):

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.9       5239         2022-10-19 10:05:48  GLOBAL    VALID     STARTUP        CATHY_S          OK        1     1     MOUNT       STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.9       5235       OK        CATHY_S          MOUNT       STANDBY   0          0            REALTIME  VALID    5536            46387           5536            46387           NONE

DATABASE(CATHY_S) APPLY INFO FROM (CATHY_P), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[5536, 5536, 5536], (RLSN, SLSN, KLSN)[46387, 46387, 46387], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (46387)


#================================================================================#

7.2 由于主备库库的FLSN不一致,重新搭建备库的方法:

  1. 关闭主备集群

退出 DM 数据守护
退出监视器
关闭备机的守护进程
关闭主机的守护进程
关闭主机实例
关闭备机实例

  1. 备份备库的整个实例名录
    此步骤主要保存dm.ini dmarch.ini、dmmal.ini、dmwatcher.ini文件。

3 备份主库数据库

4 在备库还原主库备份的数据

5 启动集群

启动主库:./DmServiceCATHY_P start
启动备库:./DmServiceCATHY_S start
启动主库守护进程: ./DmWatcherServiceWatcher start
启动备库守护进程: ./DmWatcherServiceWatcher start

6 监视器查看集群状态

主备集群已经是open状态,搭建成功。

[monitor]         2022-10-19 10:38:40: DMMONITOR[4.0] V8
[monitor]         2022-10-19 10:38:40: DMMONITOR[4.0] IS READY.

[monitor]         2022-10-19 10:38:40: 收到守护进程(CATHY_P)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-19 10:38:40  OPEN           OK        CATHY_P          OPEN        PRIMARY   VALID    3        41570           41571

[monitor]         2022-10-19 10:38:40: 收到守护进程(CATHY_S)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-19 10:38:40  OPEN           OK        CATHY_S          OPEN        STANDBY   VALID    3        41570           41570

show
2022-10-19 10:38:47
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             45331       FALSE           MANUAL          FALSE


<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.7       5239         2022-10-19 10:38:46  GLOBAL    VALID     OPEN           CATHY_P          OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.7       5235       OK        CATHY_P          OPEN        PRIMARY   0          0            REALTIME  VALID    5596            41572           5597            41573           NONE

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.9       5239         2022-10-19 10:38:46  GLOBAL    VALID     OPEN           CATHY_S          OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.9       5235       OK        CATHY_S          OPEN        STANDBY   0          0            REALTIME  VALID    5565            41572           5565            41572           NONE

DATABASE(CATHY_S) APPLY INFO FROM (CATHY_P), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[5596, 5596, 5597], (RLSN, SLSN, KLSN)[41572, 41572, 41573], N_TSK[0], TSK_MEM_USE[1024]
REDO_LSN_ARR: (41572)


#================================================================================#

8 测试主备集群同步
主库插入数据


服务器[192.168.164.7:5235]:处于主库打开状态
登录使用时间 : 1.220(ms)
disql V8
SQL> CREATE TABLE TABLE_1(id int);
操作已执行
已用时间: 15.529(毫秒). 执行号:500.
SQL> INSERT INTO TABLE_1 VALUES(1);
影响行数 1

已用时间: 0.609(毫秒). 执行号:501.
SQL> COMMIT;
操作已执行
已用时间: 2.878(毫秒). 执行号:502.

备库查看数据已经同步


服务器[192.168.164.9:5235]:处于备库打开状态
登录使用时间 : 1.063(ms)
disql V8
SQL>  desc TABLE_1;

行号     NAME TYPE$   NULLABLE
---------- ---- ------- --------
1          ID   INTEGER Y

已用时间: 13.796(毫秒). 执行号:100.

9 测试主库备库切换
登陆监视器,允许主备集群切换命令 :
switchover [group_name[.]] [db_name]

将指定组中的指定备库切换为新的主库,将当前的主库切换为新的备库,此命令要求执
行切换的主备库都是正常 Open 状态。执行此命令需要先登录监视器。
只有一组的情况下,可以不指定 group_name,组中只有一个备库的情况下,可以不
指定 db_name,如果 group_name 和 db_name 同时指定,则需要用―.‖符合分隔。

[monitor]         2022-10-19 10:52:57: DMMONITOR[4.0] V8
[monitor]         2022-10-19 10:52:57: DMMONITOR[4.0] IS READY.

[monitor]         2022-10-19 10:52:57: 收到守护进程(CATHY_P)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-19 10:52:57  OPEN           OK        CATHY_P          OPEN        PRIMARY   VALID    3        41901           41902

[monitor]         2022-10-19 10:52:57: 收到守护进程(CATHY_S)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-19 10:52:57  OPEN           OK        CATHY_S          OPEN        STANDBY   VALID    3        41900           41900

login
用户名:SYSDBA
密码:
[monitor]         2022-10-19 10:53:04: 登录监视器成功!

Switchover
[monitor]         2022-10-19 10:57:50: 开始切换实例CATHY_S
[monitor]         2022-10-19 10:57:50: 通知守护进程CATHY_P切换SWITCHOVER状态
[monitor]         2022-10-19 10:57:50: 守护进程(CATHY_P)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2022-10-19 10:57:51: 切换守护进程CATHY_P为SWITCHOVER状态成功
[monitor]         2022-10-19 10:57:51: 通知守护进程CATHY_S切换SWITCHOVER状态
[monitor]         2022-10-19 10:57:52: 守护进程(CATHY_S)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2022-10-19 10:57:52: 切换守护进程CATHY_S为SWITCHOVER状态成功
[monitor]         2022-10-19 10:57:52: 实例CATHY_P开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2022-10-19 10:57:52: 实例CATHY_P执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2022-10-19 10:57:52: 实例CATHY_S开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2022-10-19 10:57:53: 实例CATHY_S执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2022-10-19 10:57:53: 实例CATHY_P开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-10-19 10:57:53: 实例CATHY_P执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-10-19 10:57:53: 实例CATHY_S开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2022-10-19 10:57:53: 实例CATHY_S执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2022-10-19 10:57:53: 实例CATHY_S开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-10-19 10:57:53: 实例CATHY_S执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-10-19 10:57:53: 实例CATHY_P开始执行ALTER DATABASE STANDBY语句
[monitor]         2022-10-19 10:57:54: 实例CATHY_P执行ALTER DATABASE STANDBY语句成功
[monitor]         2022-10-19 10:57:54: 实例CATHY_S开始执行ALTER DATABASE PRIMARY语句
[monitor]         2022-10-19 10:57:55: 实例CATHY_S执行ALTER DATABASE PRIMARY语句成功
[monitor]         2022-10-19 10:57:55: 通知实例CATHY_S修改所有归档状态无效
[monitor]         2022-10-19 10:57:55: 修改所有实例归档为无效状态成功
[monitor]         2022-10-19 10:57:55: 实例CATHY_P开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-10-19 10:57:55: 实例CATHY_P执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-10-19 10:57:55: 实例CATHY_S开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-10-19 10:57:55: 实例CATHY_S执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-10-19 10:57:55: 实例CATHY_P开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2022-10-19 10:57:55: 实例CATHY_P执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2022-10-19 10:57:55: 实例CATHY_S开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2022-10-19 10:57:56: 实例CATHY_S执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2022-10-19 10:57:56: 通知守护进程CATHY_P切换OPEN状态
[monitor]         2022-10-19 10:57:56: 守护进程(CATHY_P)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2022-10-19 10:57:57: 切换守护进程CATHY_P为OPEN状态成功
[monitor]         2022-10-19 10:57:57: 通知守护进程CATHY_S切换OPEN状态
[monitor]         2022-10-19 10:57:58: 守护进程(CATHY_S)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2022-10-19 10:57:58: 切换守护进程CATHY_S为OPEN状态成功
[monitor]         2022-10-19 10:57:58: 通知组(GRP1)的守护进程执行清理操作
[monitor]         2022-10-19 10:57:58: 清理守护进程(CATHY_P)请求成功
[monitor]         2022-10-19 10:57:58: 清理守护进程(CATHY_S)请求成功
[monitor]         2022-10-19 10:57:58: 实例CATHY_S切换成功

2022-10-19 10:57:58
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             45331       FALSE           MANUAL          FALSE


<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.9       5239         2022-10-19 10:57:58  GLOBAL    VALID     OPEN           CATHY_S          OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.9       5235       OK        CATHY_S          OPEN        PRIMARY   0          0            REALTIME  VALID    5992            44447           5992            44447           NONE

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.7       5239         2022-10-19 10:57:58  GLOBAL    VALID     OPEN           CATHY_P          OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  INVALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.7       5235       OK        CATHY_P          OPEN        STANDBY   0          0            REALTIME  INVALID  5989            42000           5989            42000           NONE

DATABASE(CATHY_P) APPLY INFO FROM (CATHY_S), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[5989, 5989, 5989], (RLSN, SLSN, KLSN)[42000, 42000, 42000], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (42000)


#================================================================================#

[monitor]         2022-10-19 10:58:00: 守护进程(CATHY_S)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-19 10:58:00  RECOVERY       OK        CATHY_S          OPEN        PRIMARY   VALID    4        44448           44448

S[monitor]         2022-10-19 10:58:01: 守护进程(CATHY_S)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-10-19 10:58:01  OPEN           OK        CATHY_S          OPEN        PRIMARY   VALID    4        44448           44448

在监视器中通过show命令查看,主备集群已经切换


show
2022-10-19 10:58:57
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             45331       FALSE           MANUAL          FALSE


<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.9       5239         2022-10-19 10:58:56  GLOBAL    VALID     OPEN           CATHY_S          OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.9       5235       OK        CATHY_S          OPEN        PRIMARY   0          0            REALTIME  VALID    6011            44466           6011            44467           NONE

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.164.7       5239         2022-10-19 10:58:56  GLOBAL    VALID     OPEN           CATHY_P          OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.164.7       5235       OK        CATHY_P          OPEN        STANDBY   0          0            REALTIME  VALID    5989            44465           5989            44465           NONE

DATABASE(CATHY_P) APPLY INFO FROM (CATHY_S), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[6010, 6010, 6011], (RLSN, SLSN, KLSN)[44465, 44465, 44466], N_TSK[0], TSK_MEM_USE[1024]
REDO_LSN_ARR: (44465)


#================================================================================#

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服