DM7 达梦 数据库 数据守护(Data Watch) (16) -- DW 备库 RSTAT 状态 INVALID 解决方法
作者:
dave
在之前的博客,我们看了DW的搭建,如下:
DM7 达梦 数据库 数据守护(Data Watch) (15) — 精简版 DW实时主备搭建与切换测试
https://www.cndba.cn/dave/article/3710
1 现象分析
搭建之后查看在监视器中查看DW状态:
show
2029-03-21 06:56:44
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP_DW 453331 TRUE MANUAL FALSE
IP INST_PORT MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INST_OK INAME ISTATUS IMODE RTYPE RSTAT N_OPEN N_TASK TASK_MEM_USED FLSN CLSN SSLSN SLSN
192.168.56.191 5236 5239 2019-09-21 12:53:38 GLOBAL VALID OPEN OK DW1 OPEN PRIMARY REALTIME VALID 2 0 0 45664 45664 45664 45664
192.168.56.192 5236 5239 2029-03-21 06:56:44 GLOBAL VALID OPEN OK DW2 OPEN STANDBY REALTIME INVALID 1 0 0 40798 40798 40798 40798
#发现备库的RSTAT 是无效的。
导致这种原因是主备库的在启动的时候没有采用mount 模式启动,系统以open模式启动时会重构回滚表空间,生成 Redo 日志;导致主备库信息的不一致,从而备库的RSTAT是INVALID. 此时DW 是无法进行数据同步的。
导致这种现象的操作有两种原因:
- 直接用dminit 初始化的数据库,dm数据库初始化之后必须先正常启动一次,否则无法进入mount。 如果使用复制数据文件的方式搭建的dw,在同步数据之前先open 一次,在操作。另外在主备库之间同步数据的时候建议采用备份恢复的方式进行,也可以避免这个问题。
- 搭建dw的过程中,没有采用mount 模式启动。
这个问题的解决方法就是重新同步一次数据。同步方法有:
- 使用DM的备份恢复,在修改oguid和备库状态。
- 停主库,复制数据文件到备库,在修改oguid和备库状态。
2 解决方法
我们这里使用备份恢复的方式解决。
主库:
[dave@www.cndba.cn_1 init.d]$ disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is primary, state is open
login used time: 9.355(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT
Connected to: DM 7.1.6.95
SQL>
SQL> backup database full backupset '/dm/dmbak/dave';
executed successfully
used time: 00:00:01.272. Execute id is 8.
SQL>
[dave@www.cndba.cn_1 ~]$ scp -r /dm/dmbak/dave 192.168.20.192:/dm/dmbak
dmdba@192.168.20.192's password:
dave.bak 100% 40MB 19.8MB/s 00:02
dave.meta 100% 65KB 64.5KB/s 00:00
[dave@www.cndba.cn_1 ~]$
备库:
先停守护进程
[dave@www.cndba.cn_2 dave]$ /etc/init.d/DmWatcherServicedw stop
Stopping DmWatcherServicedw: [ OK ]
[dave@www.cndba.cn_2 dave]$
[dave@www.cndba.cn_2 dmbak]$ /etc/init.d/DmServicedw stop
Stopping DmServicedw: [ OK ]
[dave@www.cndba.cn_2 dmbak]$
[dave@www.cndba.cn_2 dmbak]$ cd /dm/dmdbms/bin
[dave@www.cndba.cn_2 bin]$ ./dmrman
dmrman V7.6.0.95-Build(2018.09.13-97108)ENT
RMAN> restore database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
restore database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
checking if the database under system path [/dm/dmdbms/data/dw] is running...[4].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[3].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[2].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[1].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[0].
checking if the database under system path [/dm/dmdbms/data/dw] is running, write dmrman info.
RESTORE DATABASE CHECK......
RESTORE DATABASE , dbf collect......
RESTORE DATABASE , dbf refresh ......
RESTORE BACKUPSET [/dm/dmbak/dave] START......
total 4 packages processed...
RESTORE DATABASE , UPDATE ctl file......
RESTORE DATABASE , REBUILD key file......
RESTORE DATABASE , CHECK db info......
RESTORE DATABASE , UPDATE db info......
total 8 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 8013.566(ms)
RMAN> recover database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
recover database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
checking if the database under system path [/dm/dmdbms/data/dw] is running...[4].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[3].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[2].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[1].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[0].
checking if the database under system path [/dm/dmdbms/data/dw] is running, write dmrman info.
EP[0] max_lsn: 45670
RESTORE RLOG CHECK......
CMD END.CODE:[603],DESC:[no log generates while the backupset [/dm/dmbak/dave] created]
no log generates while the backupset [/dm/dmbak/dave] created
recover successfully!
time used: 7026.979(ms)
RMAN>
启动备库到mount,在修复:
[dave@www.cndba.cn_2 dave]$ disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is primary, state is mount
login used time: 8.770(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT
Connected to: DM 7.1.6.95
SQL> sp_set_oguid(453331);
DMSQL executed successfully
used time: 21.615(ms). Execute id is 1.
SQL> alter database standby;
alter database standby;
[-720]:Error in line: 1
Dmwatcher is active, or current config not allowed to alter database.
used time: 0.947(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 11.236(ms). Execute id is 2.
SQL> alter database standby;
executed successfully
used time: 8.983(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 10.471(ms). Execute id is 3.
SQL>
启动守护进程:
[dave@www.cndba.cn_2 bin]$ /etc/init.d/DmWatcherServicedw start
Starting DmWatcherServicedw: [ OK ]
[dave@www.cndba.cn_2 bin]$
在查看监视器正常:
show
2029-03-21 07:21:12
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP_DW 453331 TRUE MANUAL FALSE
IP INST_PORT MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INST_OK INAME ISTATUS IMODE RTYPE RSTAT N_OPEN N_TASK TASK_MEM_USED FLSN CLSN SSLSN SLSN
192.168.56.191 5236 5239 2019-09-21 13:18:06 GLOBAL VALID OPEN OK DW1 OPEN PRIMARY REALTIME VALID 2 0 0 45670 45670 45670 45670
192.168.56.192 5236 5239 2029-03-21 07:21:12 GLOBAL VALID OPEN OK DW2 OPEN STANDBY REALTIME VALID 2 0 0 45670 45670 45670 45670
#================================================================================#
版权声明:本文为博主原创文章,未经博主允许不得转载。