一、迁移VOTE、DCR磁盘
登录检查DSC集群状态:
SQL> select EP_NAME,EP_SEQNO,EP_GUID,EP_MODE,EP_STATUS from v$dsc_ep_info;
行号 EP_NAME EP_SEQNO EP_GUID EP_MODE EP_STATUS
---------- ------- ----------- -------------------- ------------ ---------
1 DSC0 0 3807463 Control Node OK
2 DSC1 1 18966963 Normal Node OK
已用时间: 34.838(毫秒). 执行号:5806.
检查此时的DCR、VOTE盘路径:
SQL> select * from v$dcr_info;
行号 VERSION N_GROUP VTD_PATH UDP_FLAG UDP_OGUID DCR_PATH
---------- ----------- ----------- ------------- ----------- -------------------- -------------
1 259 3 /dev/raw/raw2 0 45331 /dev/raw/raw1
已用时间: 30.117(毫秒). 执行号:5808.
通过dmasmcmd查看磁盘:
[dmdba@dsc01 ~]$ dmasmcmd
DMASMCMD V8
ASM>listdisks '/dev/raw/'
[/dev/raw//raw11]: Unused ASM disk, name:[DMASMDATA003], size:[1023M]
[/dev/raw//raw10]: Used ASM disk, name:[DMASMRRR], size:[1023M], group_id:[3], disk_id:[1]
[/dev/raw//raw9]: Used ASM disk, name:[DMASMSSS], size:[1023M], group_id:[3], disk_id:[0]
[/dev/raw//raw8]: Unused ASM disk, name:[DMASMDATA2], size:[1023M]
[/dev/raw//raw7]: Unused ASM disk, name:[DMASMDATA002], size:[1023M]
[/dev/raw//raw6]: Unused ASM disk, name:[DMASMDATA001], size:[1023M]
[/dev/raw//raw5]: Unused ASM disk, name:[DMASMDATA1], size:[1023M]
[/dev/raw//raw1]: Used ASM disk, name:[DMASMdcr], size:[1024M], group_id:[126], disk_id:[0]
[/dev/raw//raw4]: Used ASM disk, name:[DMASMDATA0], size:[20479M], group_id:[1], disk_id:[0]
[/dev/raw//raw2]: Used ASM disk, name:[DMASMvote], size:[1024M], group_id:[125], disk_id:[0]
[/dev/raw//raw3]: Used ASM disk, name:[DMASMLOG0], size:[5119M], group_id:[0], disk_id:[0]
Used time: 5.259(ms).
此时的DCR和VOTE盘:
dcr disk: /dev/raw/raw1
vote disk:/dev/raw/raw2
我们更改为:
dcr disk: /dev/raw/raw6
vote disk:/dev/raw/raw7
停止DSC: 1、2节点
[root@dsc01 ~]# /etc/init.d/DmServiceDSC stop
Stopping DmServiceDSC: [ OK ]
[root@dsc01 ~]# /etc/init.d/DmASMSvrServiceASM stop
Stopping DmASMSvrServiceASM: [ OK ]
[root@dsc01 ~]# /etc/init.d/DmCSSServiceCSS stop
Stopping DmCSSServiceCSS: [ OK ]
更改两个节点的dmdcr.ini和dmdcr_cfg.ini文件:
[dmdba@dsc01 config]$ head -5 dmdcr.ini
DMDCR_PATH = /dev/raw/raw6
DMDCR_MAL_PATH = /opt/dsc/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 90
[dmdba@dsc01 config]$ head -5 dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw7
DCR_OGUID = 45331
[GRP]
DCR_GRP_TYPE = CSS
初始化DCR、VOTE盘:
[dmdba@dsc01 config]$ dmasmcmd
DMASMCMD V8
ASM>create dcrdisk '/dev/raw/raw6' 'dcr'
[Trace]The ASM initialize dcrdisk /dev/raw/raw6 to name DMASMdcr
Used time: 61.242(ms).
ASM>init dcrdisk '/dev/raw/raw6' from '/opt/dsc/config/dmdcr_cfg.ini' identified by 'admin#10'
[Trace]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
[Trace]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 95.879(ms).
ASM>create votedisk '/dev/raw/raw7' 'vote'
[Trace]The ASM initialize votedisk /dev/raw/raw7 to name DMASMvote
Used time: 39.083(ms).
ASM>init votedisk '/dev/raw/raw7' from '/opt/dsc/config/dmdcr_cfg.ini'
[Trace]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
[Trace]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 58.086(ms).
启动环境验证:
启动两个节点的DMCSS
[root@dsc01 ~]# /etc/init.d/DmCSSServiceCSS start
Starting DmCSSServiceCSS: [ OK ]
查看数据库状态:
SQL> select EP_NAME,EP_SEQNO,EP_GUID,EP_MODE,EP_STATUS from v$dsc_ep_info;
行号 EP_NAME EP_SEQNO EP_GUID EP_MODE EP_STATUS
---------- ------- ----------- -------------------- ------------ ---------
1 DSC0 0 20943649 Control Node OK
2 DSC1 1 21035609 Normal Node OK
已用时间: 55.580(毫秒). 执行号:500.
查看dcr、vote盘符:
SQL> select * from v$dcr_info;
行号 VERSION N_GROUP VTD_PATH UDP_FLAG UDP_OGUID DCR_PATH
---------- ----------- ----------- ------------- ----------- -------------------- -------------
1 259 3 /dev/raw/raw7 0 45331 /dev/raw/raw6
已用时间: 2.136(毫秒). 执行号:501
通过dmasmcmd查看:
[dmdba@dsc01 ~]$ dmasmcmd
DMASMCMD V8
ASM>listdisks '/dev/raw/'
[/dev/raw//raw11]: Unused ASM disk, name:[DMASMDATA003], size:[1023M]
[/dev/raw//raw10]: Used ASM disk, name:[DMASMRRR], size:[1023M], group_id:[3], disk_id:[1]
[/dev/raw//raw9]: Used ASM disk, name:[DMASMSSS], size:[1023M], group_id:[3], disk_id:[0]
[/dev/raw//raw8]: Unused ASM disk, name:[DMASMDATA2], size:[1023M]
[/dev/raw//raw7]: Used ASM disk, name:[DMASMvote], size:[1024M], group_id:[125], disk_id:[0]
[/dev/raw//raw6]: Used ASM disk, name:[DMASMdcr], size:[1024M], group_id:[126], disk_id:[0]
[/dev/raw//raw5]: Unused ASM disk, name:[DMASMDATA1], size:[1023M]
[/dev/raw//raw1]: Used ASM disk, name:[DMASMdcr], size:[1024M], group_id:[126], disk_id:[0]
[/dev/raw//raw4]: Used ASM disk, name:[DMASMDATA0], size:[20479M], group_id:[1], disk_id:[0]
[/dev/raw//raw2]: Used ASM disk, name:[DMASMvote], size:[1024M], group_id:[125], disk_id:[0]
[/dev/raw//raw3]: Used ASM disk, name:[DMASMLOG0], size:[5119M], group_id:[0], disk_id:[0]
Used time: 7.130(ms).
查看魔术号:
SQL> select permanent_magic;
行号 PERMANENT_MAGIC
---------- ---------------
1 827549872
已用时间: 29.519(毫秒). 执行号:502.
SQL> select db_magic from v$rlog;
号 DB_MAGIC
---------- --------------------
1 1520296080
已用时间: 1.765(毫秒). 执行号:503.
二、单库环境恢复至DSC环境:
我们打开一个单库,做一个脱机备份:
创建表空间:
SQL> create tablespace test01 datafile '/home/dmdba/dmdbms/DAMENG/TEST01.DBF' size 64;
操作已执行
已用时间: 201.611(毫秒). 执行号:7302.
SQL> create tablespace test02 datafile '/home/dmdba/dmdbms/DAMENG/TEST02.DBF' size 64;
操作已执行
已用时间: 22.942(毫秒). 执行号:7303.
SQL> create tablespace test03 datafile '/home/dmdba/dmdbms/DAMENG/TEST03.DBF' size 64;
操作已执行
已用时间: 51.649(毫秒). 执行号:7304.
SQL> select tablespace_name from dba_tablespaces;
行号 TABLESPACE_NAME
---------- ---------------
1 SYSTEM
2 ROLL
3 TEMP
4 MAIN
5 BOOKSHOP
6 TEST
7 SYSAUX
8 HTBS
9 DMHR
10 TEST01
11 TEST02
12 TEST03
13 MAIN
13 rows got
已用时间: 0.951(毫秒). 执行号:7305.
创建一个表:
SQL> create table test as select * from dba_objects;
操作已执行
已用时间: 584.687(毫秒). 执行号:7306.
SQL> select count(*) from test;
行号 COUNT(*)
---------- --------------------
1 21161
已用时间: 1.140(毫秒). 执行号:7307.
关库备份:
SQL> shutdown immediate;
操作已执行
已用时间: 0.646(毫秒). 执行号:0.
SQL> exit
[dmdba@localhost ~]$ dmrman
dmrman V8
RMAN> backup database '/home/dmdba/dmdbms/DAMENG/dm.ini';
backup database '/home/dmdba/dmdbms/DAMENG/dm.ini';
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
begin redo pwr log collect, last ckpt lsn: 10348543 ...
redo pwr log collect finished
EP[0]'s cur_lsn[10348543], file_lsn[10348543]
Processing backupset /home/dmdba/dmdbms/DAMENG/bak/DB_SHIRX_FULL_20221027_094937_596106
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00]
backup successfully!
time used: 00:00:04.303
查看DSC侧:
SQL> select * from v$dsc_ep_info;
行号 EP_NAME EP_SEQNO EP_GUID EP_TIMESTAMP EP_MODE EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------------ ---------
1 DSC0 0 682449 682578 Control Node OK
2 DSC1 1 689796 689909 Normal Node OK
已用时间: 62.905(毫秒). 执行号:500.
SQL> select * from v$dcr_info;
行号 VERSION N_GROUP VTD_PATH UDP_FLAG UDP_OGUID DCR_PATH
---------- ----------- ----------- ------------- ----------- -------------------- -------------
1 259 3 /dev/raw/raw7 0 45331 /dev/raw/raw6
已用时间: 51.741(毫秒). 执行号:501.
SQL> select tablespace_name from dba_tablespaces;
行号 TABLESPACE_NAME
---------- ---------------
1 SYSTEM
2 ROLL
3 TEMP
4 MAIN
5 BOOKSHOP
6 SYSAUX
7 HTBS
8 DMHR
9 MAIN
9 rows got
已用时间: 0.944(毫秒). 执行号:504
登录MONITOR关闭自动拉起,关闭数据库:
set GRP_DSC auto restart off
[monitor] 2022-10-26 21:35:29: 通知CSS(seqno:0)关闭节点(DSC0)的自动拉起功能
[monitor] 2022-10-26 21:35:29: 通知CSS(seqno:0)关闭节点(DSC0)的自动拉起功能成功
[monitor] 2022-10-26 21:35:29: 通知CSS(seqno:1)关闭节点(DSC1)的自动拉起功能
[monitor] 2022-10-26 21:35:29: 通知CSS(seqno:1)关闭节点(DSC1)的自动拉起功能成功
[monitor] 2022-10-26 21:35:29: 通知当前活动的CSS执行清理操作
[monitor] 2022-10-26 21:35:30: 清理CSS(0)请求成功
[monitor] 2022-10-26 21:35:30: 清理CSS(1)请求成功
[monitor] 2022-10-26 21:35:30: 关闭CSS自动拉起功能成功
ep stop GRP_DSC
[monitor] 2022-10-26 21:35:58: 组(GRP_DSC)中节点对应的CSS自动拉起标记已经处于关闭状态
[monitor] 2022-10-26 21:35:58: 通知CSS(seqno:0)执行EP STOP(GRP_DSC)
[monitor] 2022-10-26 21:36:05: 通知当前活动的CSS执行清理操作
[monitor] 2022-10-26 21:36:05: 清理CSS(0)请求成功
[monitor] 2022-10-26 21:36:06: 清理CSS(1)请求成功
[monitor] 2022-10-26 21:36:06: 命令EP STOP GRP_DSC执行成功
将单库的备份集SCP到DSC环境1节点目录下:
[dmdba@localhost bak]$ scp -r DB_SHIRX_FULL_20221027_094937_596106/ 192.168.191.31:/opt/dsc/bak
[email protected]'s password:
DB_SHIRX_FULL_20221027_094937_596106.bak 100% 117MB 128.1MB/s 00:00
DB_SHIRX_FULL_20221027_094937_596106.meta 100% 117KB 14.1MB/s 00:00
DSC环境1节点开始恢复:
[dmdba@dsc01 raw]$ dmrman dcr_ini=/opt/dsc/config/dmdcr.ini
dmrman V8
RMAN> restore database '/opt/dsc/config/dsc1_config/dm.ini' from backupset '/opt/dsc/bak/DB_SHIRX_FULL_20221027_094937_596106';
restore database '/opt/dsc/config/dsc1_config/dm.ini' from backupset '/opt/dsc/bak/DB_SHIRX_FULL_20221027_094937_596106';
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:46][Remaining:00:00:00]
restore successfully.
time used: 00:00:52.279
RMAN> recover database '/opt/dsc/config/dsc1_config/dm.ini' update db_magic;
recover database '/opt/dsc/config/dsc1_config/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[1]'s cur_lsn[10348543], file_lsn[10348543]
EP[0]'s cur_lsn[10348543]
EP[1] adjust cur_lsn from [10348543] to [10348543]
recover successfully!
time used: 00:00:06.869
开启自动拉起,启动数据库:
set GRP_DSC auto restart on
[monitor] 2022-10-26 21:45:45: 通知CSS(seqno:0)打开节点(DSC0)的自动拉起功能
[monitor] 2022-10-26 21:45:45: 通知CSS(seqno:0)打开节点(DSC0)的自动拉起功能成功
[monitor] 2022-10-26 21:45:45: 通知CSS(seqno:1)打开节点(DSC1)的自动拉起功能
[monitor] 2022-10-26 21:45:45: 通知CSS(seqno:1)打开节点(DSC1)的自动拉起功能成功
[monitor] 2022-10-26 21:45:45: 通知当前活动的CSS执行清理操作
[monitor] 2022-10-26 21:45:46: 清理CSS(0)请求成功
[monitor] 2022-10-26 21:45:47: 清理CSS(1)请求成功
[monitor] 2022-10-26 21:45:47: 打开CSS自动拉起功能成功
ep startup GRP_DSC
[monitor] 2022-10-26 21:45:58: 组(GRP_DSC)中节点(DSC0)对应的CSS(CSS0)配置有自动拉起,且监控处于打开状态,请等待CSS自动拉起EP(DSC0)
[monitor] 2022-10-26 21:45:58: 组(GRP_DSC)中节点(DSC1)对应的CSS(CSS1)配置有自动拉起,且监控处于打开状态,请等待CSS自动拉起EP(DSC1)
[monitor] 2022-10-26 21:45:58: 组[GRP_DSC]中的EP已处于ACTIVE状态(只收集活动CSS对应的EP),或者CSS配置有自动重启,请等待CSS自动检测重启
[CSS1] [2022-10-26 21:46:45:776] [CSS]: 重启本地DB实例,命令:[/opt/dsc/dmdbms/bin/dmserver path=/opt/dsc/config/dsc1_config/dm.ini dcr_ini=/opt/dsc/config/dmdcr.ini]
[CSS0] [2022-10-26 21:43:34:270] [CSS]: 重启本地DB实例,命令:[/opt/dsc/dmdbms/bin/dmserver path=/opt/dsc/config/dsc0_config/dm.ini dcr_ini=/opt/dsc/config/dmdcr.ini]
[CSS0] [2022-10-26 21:43:42:282] [DB]: 设置EP DSC0[0]为控制节点
[CSS0] [2022-10-26 21:43:42:283] [DB]: 设置命令[START NOTIFY], 目标站点 DSC0[0], 命令序号[28]
[CSS0] [2022-10-26 21:43:43:295] [DB]: 设置命令[DCR_LOAD], 目标站点 DSC0[0], 命令序号[29]
[CSS0] [2022-10-26 21:43:43:295] [DB]: 设置命令[DCR_LOAD], 目标站点 DSC1[1], 命令序号[30]
[CSS0] [2022-10-26 21:43:43:409] [DB]: 设置命令[NONE], 目标站点 DSC1[1], 命令序号[0]
[CSS0] [2022-10-26 21:43:45:444] [DB]: 设置命令[EP START], 目标站点 DSC0[0], 命令序号[32]
[CSS0] [2022-10-26 21:43:45:657] [DB]: 设置命令[NONE], 目标站点 DSC0[0], 命令序号[0]
[CSS0] [2022-10-26 21:43:45:759] [DB]: 设置命令[EP START], 目标站点 DSC1[1], 命令序号[34]
[CSS0] [2022-10-26 21:43:45:961] [DB]: 设置命令[NONE], 目标站点 DSC1[1], 命令序号[0]
[CSS0] [2022-10-26 21:43:45:962] [DB]: 设置命令[EP START2], 目标站点 DSC0[0], 命令序号[37]
[CSS0] [2022-10-26 21:43:48:500] [DB]: 设置命令[NONE], 目标站点 DSC0[0], 命令序号[0]
[CSS0] [2022-10-26 21:43:48:602] [DB]: 设置命令[EP START2], 目标站点 DSC1[1], 命令序号[39]
[CSS0] [2022-10-26 21:43:50:414] [DB]: 设置命令[NONE], 目标站点 DSC1[1], 命令序号[0]
[CSS0] [2022-10-26 21:43:50:515] [DB]: 设置命令[EP OPEN], 目标站点 DSC1[1], 命令序号[43]
[CSS0] [2022-10-26 21:43:52:635] [DB]: 设置命令[NONE], 目标站点 DSC1[1], 命令序号[0]
[CSS0] [2022-10-26 21:43:55:672] [DB]: 设置命令[EP REAL OPEN], 目标站点 DSC1[1], 命令序号[46]
[CSS0] [2022-10-26 21:43:56:791] [DB]: 设置命令[NONE], 目标站点 DSC0[0], 命令序号[0]
[CSS0] [2022-10-26 21:43:57:700] [DB]: 设置命令[NONE], 目标站点 DSC1[1], 命令序号[0]
进入数据库查看:
[dmdba@dsc01 raw]$ disql SYSDBA/[email protected]:15236
服务器[192.168.191.31:15236]:处于普通打开状态
登录使用时间 : 3.229(ms)
disql V8
SQL> select tablespace_name from dba_tablespaces;
行号 TABLESPACE_NAME
---------- ---------------
1 SYSTEM
2 ROLL
3 TEMP
4 MAIN
5 BOOKSHOP
6 TEST
7 SYSAUX
8 HTBS
9 DMHR
10 TEST01
11 TEST02
12 TEST03
13 MAIN
13 rows got
已用时间: 20.192(毫秒). 执行号:500.
SQL> select count(*) from test;
行号 COUNT(*)
---------- --------------------
1 21161
已用时间: 1.571(毫秒). 执行号:501.
和单库里相同。
SQL> select * from v$dsc_ep_info;
行号 EP_NAME EP_SEQNO EP_GUID EP_TIMESTAMP EP_MODE EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------------ ---------
1 DSC0 0 1981482 1981640 Control Node OK
2 DSC1 1 1980120 1980278 Normal Node OK
已用时间: 2.000(毫秒). 执行号:502.
查看魔术号:
SQL> select permanent_magic;
行号 PERMANENT_MAGIC
---------- ---------------
1 827549872
已用时间: 22.942(毫秒). 执行号:503.
SQL> select db_magic from v$rlog;
行号 DB_MAGIC
---------- --------------------
1 934848266
已用时间: 0.534(毫秒). 执行号:504.
SQL> select * from v$dcr_info;
行号 VERSION N_GROUP VTD_PATH UDP_FLAG UDP_OGUID DCR_PATH
---------- ----------- ----------- ------------- ----------- -------------------- -------------
1 259 3 /dev/raw/raw7 0 45331 /dev/raw/raw6
已用时间: 1.425(毫秒). 执行号:505
三、处理DCR、VOTE盘魔术号不同故障
我们关闭数据库后再重启启动,这时查看日志会有如下报错:
tail -200f dmasm01_202209.log
2022-10-26 22:42:28.193 DMASM >>>[Warning]Loaded two diskgroup with same group id [125] with different magic.[/dev/raw/raw7 magic:1664243484] [/dev/raw/raw2 magic:1664208993]
2022-10-26 22:42:28.193 DMASM >>>[Warning]Loaded two diskgroup with same group id [126] with different magic.[/dev/raw/raw6 magic:1664243436] [/dev/raw/raw1 magic:1664208948]
(经反复测试,DCR、VOTE魔术号有冲突时,并不是每次都会导致数据库启动失败,但日志中都会有上述报错,这和前面做迁移VOTE、DCR盘以及后面的备份恢复有关)
解决办法有两种:
第一种:再次更新db_magic
RMAN> recover database '/opt/dsc/config/dsc0_config/dm.ini' update db_magic;
recover database '/opt/dsc/config/dsc0_config/dm.ini' update db_magic;
file dm.key not found, use default license!
[-12000]:实例已经启动
第二种:去掉重复的盘
[root@dsc01 config]# dd if=/dev/zero of=/dev/raw/raw1 bs=8k count=10240
记录了10240+0 的读入
记录了10240+0 的写出
83886080字节(84 MB)已复制,0.684761 秒,123 MB/秒
[root@dsc01 config]# dd if=/dev/zero of=/dev/raw/raw2 bs=8k count=10240
记录了10240+0 的读入
记录了10240+0 的写出
83886080字节(84 MB)已复制,0.666416 秒,126 MB/秒
查看磁盘:
[/dev/raw/raw2]: Normal disk
[/dev/raw/raw1]: Normal disk
这时我们可以看到磁盘raw1,raw2的描述为Normal disk了,只需重新格式化、初始化DCR、VOTE磁盘(raw6,raw7)后,数据库即可恢复正常,这里不再叙述过程。
总结:
1、达梦数据库物理备份、还原在单库环境恢复至DSC环境时相对简单,并不像ORACLE需要去更改控制文件、日志文件、数据文件的路径,初始化参数已经指定了相关文件的存放路径。
2、DMDSC集群在启动的时候并不是按照ini配置文件里面去读固定的裸设备,而是会读取路径下所有的裸设备。这也是为什么报错中还是会找旧的DCR、VOTE盘。
3、数据库在做完一次恢复后最后会更新magic号,并且会与上次不同。
4、在DMASMCMD里面我们并不能清理已经格式化、初始化后的裸设备,通过dd可以恢复如初。
社区地址:https://eco.dameng.com