达梦数据库物理备份恢复_Part6

参考文档DM8 1-1-190版本《DM8备份恢复手册》

主备集群恢复到单机的场景

使用主库的全备+备库的归档日志文件恢复到单机数据库。

环境说明

OS:Linux

DB_VERSION:DM8 1-1-190-21.04.16-137954-ENT Pack4

主备集群使用备库归档还原恢复

第一步 在主库进行备份

[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 5.839(ms)
SQL>
SQL> create table t as select * from dba_objects;
操作已执行
已用时间: 742.287(毫秒). 执行号:400.
SQL> select count(*) from t;

行号     COUNT(*)            
---------- --------------------
1          1365

已用时间: 4.000(毫秒). 执行号:402.

---执行备份
SQL> backup database full backupset '/home/dmdba/DB_BAK_FULL01';
操作已执行
已用时间: 00:00:03.972. 执行号:404.

---备份完成后再创建两张表
SQL> create table ttt as select * from dba_objects;
操作已执行
已用时间: 68.788(毫秒). 执行号:500.
SQL> create table tt as select * from dba_objects;
操作已执行
已用时间: 89.548(毫秒). 执行号:507.
SQL> select count(*) from ttt;

行号     COUNT(*)            
---------- --------------------
1          1367

已用时间: 0.778(毫秒). 执行号:601.
SQL> select count(*) from tt;

行号     COUNT(*)            
---------- --------------------
1          1369

已用时间: 1.011(毫秒). 执行号:602.
SQL> exit

备库切换在线日志执行checkpoint生成归档日志。

第二步 拷贝备份文件和备库归档日志到目的库

[dmdba@localhost ~]$ scp -r DB_BAK_FULL01 192.168.15.50:/home/dmdba
[email protected]'s password: 
DB_BAK_FULL01.bak              100%   27MB  32.8MB/s   00:00    
DB_BAK_FULL01_1.bak            100%   11KB   5.3MB/s   00:00    
DB_BAK_FULL01.meta             100%   81KB  23.5MB/s   00:00 

[dmdba@localhost arch]$ scp *.log 192.168.15.50:/data/dmarch/stb_arch
[email protected]'s password: 
STANDBY_ARCHIVE_0x137E5B0D[0]_2021-05-11_18-30-39.log       100%  25KB  7.8MB/s  00:00   
STANDBY_ARCHIVE_0x137E5B0D[0]_2021-05-11_18-35-34.log       100%  128MB 57.5MB/s 00:02  

第三步 在单机目的库进行还原恢复

需要注意的是:

默认情况下,恢复阶段收集归档时只收集与待恢复库DB_MAGIC、PERMANENT_MAGIC一致的归档文件,而在主备环境中PERMANNET_MAGIC是一致的,此时可通过指定备库归档日志的DB_MAGIC跳过这一限制,如果不指定DB_MAGIC则会报错。

(1)可以使用DMRMAN先查看下主库备份文件的DB_MAGIC值:

RMAN> show backupset '/home/dmdba/DB_BAK_FULL01';
show backupset '/home/dmdba/DB_BAK_FULL01';




system path:           /dm/dm134/data/DAMENG
pmnt_magic:            197080140
src_db_magic:          327047949
db_magic:              327047949    ---备份文件的DB_MAGIC
dsc node:              1
sys mode:              1
page check:            0
rlog encrypt:          0
external cipher[id/name]:  0/
external hash[id/name]:  0/
length in char:        0
use new hash:          1
page size:             16KB
extent size:           16
case sensitive:        1
log page size:         512B
unicode_flag/charset:  1
data version:          0x7000C
sys version:           V8
enable policy:         0
archive flag:          1
blank_pad_mode:        0
crc_check:             TRUE
page_enc_slice_size:   0


backupset sig:         BA
backupset version:     0x400A
database name:         DAMENG
backup name:           DB_FULL_20210511_182553_195320
backupset description: 
n_magic:               0x3F029C24
parent n_magic:        0xFFFFFFFF
meta file size :       82432
compressed level:      0
encrypt type:          0
parallel num:          1
backup range:          database
mpp_timestamp:         1620728753
with_huge:             FALSE
backupset_type:        NORMAL
mpp_flag:              FALSE
backup level:          online
backup type:           full
without log:           FALSE
end_lsn:               49319
max_trxid:             48413
base begin_lsn:        -1
base end_lsn:          -1
base n_magic:          0xFFFFFFFF
base name:             
base backupset:        
backup time:           2021-05-11 18:25:57
min exec ver:          0x08010101
min dct ver:           4
pkg size:              0x02000000


EP[0]:
begin_pkg_seq:         4077
begin_lsn:             49304
end_pkg_seq:           4086
end_lsn:               49319


backupset directory: /home/dmdba/DB_BAK_FULL01
backupset name:        DB_BAK_FULL01
backup data file num:  4
backup piece num:      2
backup huge file num:  0


$file_seq |$size(KB) |$pos_desc                                               |$content_type
0         |27430     |DB_BAK_FULL01.bak                                       |DATA      
1         |11        |DB_BAK_FULL01_1.bak                                     |LOG       


$file_seq |$group_id |$group_name     |$file_id  |$file_path                       |$mirror_path                     |$file_len           |$copy_num |$size_flag
1         |0         |SYSTEM          |0         |/dm/dm134/data/DAMENG/SYSTEM.DBF |                                 |45088768            |0         |0         
2         |1         |ROLL            |0         |/dm/dm134/data/DAMENG/ROLL.DBF   |                                 |134217728           |0         |0         
3         |4         |MAIN            |0         |/dm/dm134/data/DAMENG/MAIN.DBF   |                                 |134217728           |0         |0         


$file_seq |$dsc_seq |$file_len           |$begin_seqno        |$begin_lsn          |$end_seqno          |$end_lsn            
4         |0        |6144                |4077                |49304               |4086                |49319               


$group_id |$schema_id|$table_id |$column_id|$file_id  |$file_len |$path


show backupsets successfully.
time used: 26.900(ms)
RMAN> 

(2)使用dmrachk工具查看备机归档日志文件的DB_MAGIC值:

[dmdba@localhost bin]$ ./dmrachk help
rachk V8
格式: dmrachk keyword=value

例程: dmrachk arch_fil=/opt/a.log

强制参数: 必须指定arch_fil或者arch_path

关键字              说明(默认值)
--------------------------------------------------------------------------------
ARCH_FIL            指定一个归档文件
CMP_FIL             指定一个用于比较的归档文件
ARCH_PATH           指定一个归档目录
CMP_PATH            指定一个用于比较的归档目录
TRUNC_FIL           指定新的文件,用于存储从错误归档中,抽取的有效数据。
EXTRACT_FIL         指定新的文件,用于存储从指定的seq范围的归档文件中抽取数据
ARCH_BAK_PATH       指定备份文件路径,用于存储归档修复过程中的重复文件
CHECK               校验级别(0, 1, 2, 3, 4) 0: 文件校验, 1: 包校验(seq & magic),2:ptx校验,3:rrec校验, 4:清理无效的归档文件,默认(0)
BEGIN_LSN           指定归档目录时,指定排除小于该LSN的文件
END_LSN             指定归档目录时,指定排除大于该LSN的文件
BEGIN_SEQ           指定归档目录时,抽取大于该SEQ的文件
END_SEQ             指定归档目录时,抽取小于该SEQ的文件
BEFORE_LSN          CHECK=4,指定归档目录,删除该LSN之前的文件。默认为0,所有LSN范围内日志均删除
BEFORE_SEQ          CHECK=4,指定归档目录,删除该SEQ之前的文件。默认为0,所有SEQ范围内日志均删除
BEFORE_TIME         CHECK=4,指定归档目录,删除该时间点之前的文件。默认删除所有时间点的归档
EXCLUDE_DB_MAGIC    CHECK=4,指定归档目录,删除指定的DB_MAGIC之外的文件。
OUTPUT_FIL          LOG可以指定输出到文件
DCR_INI             指定dmdcr.ini路径,若未指定,则不使用
DM_INI              目标库dm.ini的路径,用于获取日志加密信息
AFTER_FREE          指定TRUNC_FIL时,是否校验并抽取FREE之后的内容。0 不抽取;1 抽取。默认0
HELP                显示帮助信息

[dmdba@localhost bin]$ ./dmrachk ARCH_PATH=/data/dmarch/stb_arch
rachk V8
the database pmnt_magic: 197080140
the database db_magic: 1125819454
/*******************************************************************/
归档文件/data/dmarch/stb_arch/STANDBY_ARCHIVE_0x137E5B0D[0]_2021-05-11_18-30-39.log明细.
version        : 0x7006
status         : INACTIVE
enc_flag       : FALSE
n_rpkgs        : 2
pmnt_magic     : 197080140
db_magic       : 1125819454    ---备库归档日志文件的DB_MAGIC
src_db_magic   : 327047949
arch_lsn       : 50279
arch_seq       : 4102
clsn           : 50510
next_seq       : 4103
g_next_seq     : 4103
file len       : 25088
file free      : 25088
dsc seqno      : 0
dsc node       : 1
create time    : 2021-05-11 20:45:58.000000
close time     : 2021-05-11 18:31:54.429738
/*******************************************************************/
/*******************************************************************/
归档文件/data/dmarch/stb_arch/STANDBY_ARCHIVE_0x137E5B0D[0]_2021-05-11_18-35-34.log明细.
version        : 0x7006
status         : ACTIVE
enc_flag       : FALSE
n_rpkgs        : 16
pmnt_magic     : 197080140
db_magic       : 1125819454
src_db_magic   : 327047949
arch_lsn       : 50511
arch_seq       : 4104
clsn           : 51779
next_seq       : 4119
g_next_seq     : 4119
file len       : 134217728
file free      : 168960
dsc seqno      : 0
dsc node       : 1
create time    : 2021-05-11 18:31:54.429738
close time     : 2021-05-11 18:35:34.056232
/*******************************************************************/

概要(节点[0]):
总计: 2 个文件
正确: 2 个文件
错误: 0 个文件
重复: 0 个文件

the rachk tool running cost 2.969 ms

(3)开始进行还原

RMAN> restore database '/data/dmdata/TEST2/dm.ini' from backupset '/home/dmdba/DB_BAK_FULL01';

达梦数据库物理备份恢复_Part6_第1张图片

(4)开始进行恢复

如果不指定备库归档文件的DB_MAGIC,使用默认的DB_MAGIC(也就是主库的DB_MAGIC,主库备份文件中的DB_MAGIC,备库归档日志中的src_db_magic),则会报错。如下:

达梦数据库物理备份恢复_Part6_第2张图片

指定归档文件的DB_MAGIC执行恢复:

RMAN> recover database '/data/dmdata/TEST2/dm.ini' with archivedir '/data/dmarch/stb_arch' use db_magic 1125819454;

达梦数据库物理备份恢复_Part6_第3张图片

更新DB_MAGIC:

RMAN>  recover database '/data/dmdata/TEST2/dm.ini' update db_magic;

达梦数据库物理备份恢复_Part6_第4张图片

第四步 启动数据库并OPEN,验证数据

主库备份恢复到单机之后,默认只能启动到mount状态,需要将数据库修改为normal模式并手动OPEN。

达梦数据库物理备份恢复_Part6_第5张图片

SQL> alter database normal;
SQL> alter database open;
SQL> select count(*) from t; 
SQL> select count(*) from ttt;
SQL> select count(*) from tt;

达梦数据库物理备份恢复_Part6_第6张图片

至此,还原恢复完成。

结语

主备集群使用备库归档进行恢复的场景还是比较实用的,当主库归档删除后,我们可以使用备库的归档日志来讲数据恢复到最新状态。
在使用主库备份文件+备库归档日志进行还原恢复时,RECOVER的时候需要指定备库归档日志文件的DB_MAGIC,如果不指定DB_MAGIC则会报错。因为默认情况下,RECOVER阶段收集归档时只收集与待恢复库DB_MAGIC、PERMANENT_MAGIC一致的归档文件,而在主备环境中PERMANNET_MAGIC是一致的,所以需要指定DB_MAGIC来跳过这一限制。

你可能感兴趣的:(备份还原,达梦)