DM8不同场景下的备份恢复参考手册

数据库系统在运行过程中可能会发生一些故障。造成故障的原因多种多样,包括磁盘崩溃、电源故障、软件错误,甚至人为破坏。这些情况一旦发生,就可能会丢失数据,数据库系统将无法正常运行。因此,故障恢复是数据库系统必不可少的组成部分,即数据库系统必须保证即使发生故障,也可以保障数据的完整性和一致性。

支持故障恢复的技术主要是日志,日志以一种安全的方式记录数据库系统变更的历史信息,一旦系统出现故障,数据库系统可以根据日志将系统恢复至故障发生前的某个时刻。数据库系统的日志分为两种类型:一是 REDO 日志,在数据被修改后记录它的新值;另一种是UNDO 日志,在数据被修改前记录它的旧值。

另外,当服务器处于归档模式时,如果数据库发生故障,通过备份文件和归档日志可以恢复到指定时间点。

  1. 物理备份与还原
    1. 1非归档模式下的全备与异机还原

数据库信息

源端

目标端

数据库名

dmdb1

dmdb2

数据文件路径

/dmdata/dmdb1

/dmdata/dmdb2

IP地址

192.168.1.11

192.168.1.12

1.1.1 前提条件:

  1. DmAPService 已启动
  2. 数据库实例已关闭

#

#

#

ps -ef |grep dmap

dmdba      9169      1  0 12:17 ?        00:00:03 /dm/bin/dmap –已经启动了

--手动启动DMAP:

cd /dm/bin

./DmAPService start

--关闭数据库实例

systemctl stop DmServicedmdb1.service

1.1.2 源端使用dmrman工具冷备

#

$

RMAN>

su - dmdba

cd /dm/bin

./dmrman

backup database '/dmdata/dmdb1/dm.ini' backupset '/dmbak/dmdb1_full_01';

backup database '/dmdata/dmdb1/dm.ini' backupset '/dmbak/dmdb1_full_01';

file dm.key not found, use default license!

Database mode = 0, oguid = 0

EP[0]'s cur_lsn[45684]

BACKUP DATABASE [dmdb1],execute......

CMD CHECK LSN......

BACKUP DATABASE [dmdb1],collect dbf......

CMD CHECK ......

DBF BACKUP SUBS......

total 1 packages processed...

total 3 packages processed...

total 4 packages processed...

DBF BACKUP MAIN......

BACKUPSET [/dmbak/dmdb1_full_01] END, CODE [0]......

META GENERATING......

total 6 packages processed...

total 6 packages processed...

total 6 packages processed!

CMD END.CODE:[0]

backup successfully!

time used: 00:00:01.219

1.1.3 备份拷贝到目标库,目标库需提前安装数据库软件,不需要初始化实例

$

scp -r dmdb1_full_01 192.168.1.12:/dmbak/

scp /dmdata/dmdb1/dm.ini 192.168.1.12:/dmbak/

1.1.4 目标端创建相关目录

#

$

su - dmdba

scp -r dmdb1_full_01 192.168.1.12:/dmbak/

1.1.5 目标端先进行restore

使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,或是联机库级备份集。数据库的还原包括数据库配置文件还原和数据文件还原,

目 前 可 能需 要 还原 的数 据 库 配置 文 件包 括 dm.ini、 dm.ctl、 服 务器 秘 钥 文件(dm_service.prikey 或者 dm_external.config,若备份库指定 usbkey 加密,则无秘钥文件)、联机日志文件。

RMAN>

cd /dm/bin

./dmrman

restore database  to '/dmdata/dmdb2' from backupset '/dmbak/dmdb1_full_01' rename to 'dmdb2';

restore database to '/dmdata/dmdb2' from backupset '/dmbak/dmdb1_full_01' rename to 'dmdb2';

RESTORE DATABASE CHECK......

chattr: 没有那个文件或目录 当尝试对/dmdata/dmdb2/dm.ctl进行stat调用时

RESTORE DATABASE,dbf collect......

RESTORE DATABASE,dbf refresh ......

RESTORE BACKUPSET [/dmbak/dmdb1_full_01] START......

total 4 packages processed...

total 6 packages processed...

RESTORE DATABASE,UPDATE ctl file......

RESTORE DATABASE,REBUILD key file......

RESTORE DATABASE,CHECK db info......

RESTORE DATABASE,UPDATE db info......

RESTORE DATABASE,REUSE or REBUILD dm.ini......

total 6 packages processed...

total 6 packages processed!

CMD END.CODE:[0]

restore successfully.

time used: 416.893(ms)

1.1.6 目标端再进行recover.

使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。如果还原后,数据已经处于一致性状态了,则可以使用更新DB_MAGIC 方式恢复,前提是不需要重做日志。

RMAN>

recover database '/dmdata/dmdb2/dm.ini' from backupset '/dmbak/dmdb1_full_01';

recover database '/dmdata/dmdb2/dm.ini' from backupset '/dmbak/dmdb1_full_01';

Read ini warning, default dm.ctl backup path [/dmdata/dmdb2/ctl_bak] does not exist.

Read ini warning, default backup path [/dmdata/dmdb2/bak] does not exist.

Database mode = 0, oguid = 0

EP[0]'s cur_lsn[45684]

RESTORE RLOG CHECK......

CMD END.CODE:[603],DESC:[备份集[/dmbak/dmdb1_full_01]备份过程中未产生日志]

备份集[/dmbak/dmdb1_full_01]备份过程中未产生日志

recover successfully!

time used: 292.056(ms)

1.1.7 目标端最后进行数据库更新

数据库更新是指更新数据库的 DB_MAGIC,并将数据库调整为可正常工作状态,与数据

库恢复一样使用 RECOVER 命令完成。数据库更新发生在重做 REDO 日志恢复数据库后,或

者目标库不需要执行重做日志已经处于一致状态的情况。

RMAN>

recover database '/dmdata/dmdb2/dm.ini' update db_magic

recover database '/dmdata/dmdb2/dm.ini' update db_magic

Read ini warning, default dm.ctl backup path [/dmdata/dmdb2/ctl_bak] does not exist.

Read ini warning, default backup path [/dmdata/dmdb2/bak] does not exist.

Database mode = 0, oguid = 0

EP[0]'s cur_lsn[45684]

EP[0]'s apply_lsn[45684] >= end_lsn[45684]

recover successfully!

time used: 989.704(ms)

1.1.8 目标端启动实例

$

SQL>

dmserver /dmdata/dmdb1/dm.ini

--另开一个窗口

disql sysdba/dameng123

select name,status$,host_name from v$instance;

行号     NAME   STATUS$ HOST_NAME

---------- ------ ------- ---------

1          DMDB81 OPEN    dmdb83 –这里实例名并没有改过来

1.1.9 目标端添加服务

#

su - root

cd /dm/script/root

./dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdb2/dm.ini -p dmdb2

上一篇:详解 & 0xff 的意义及作用


下一篇:TiDB数据库11---数据迁移工具 TiDB Data Migration (DM)