马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、备份还原原理:
达梦数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对达梦数据库的操作,归根结底都是对某个数据文件页的读写操作。
备份的本质就是从数据库文件中拷贝有效的数据页生存到备份集中;还原是备份的反过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份竣事时的状态。
二、备份还原分类:
达梦有两种备份还原方式,分别是物理备份和逻辑备份。
1、物理备份:指根据备份范围(数据库级、表空间级、表级)将数据文件中有效数据页和归档日志(也大概没有归档日志,这需要用户来指定)复制到备份片文件中的过程。这种备份是在文件层进行的。物理备份具备更矫健的数据保护方式,也是备份策略中的首选。物理备份可以在脱机环境下进行也可以在练级环境下进行。
2、逻辑备份,指使用DM 8提供的逻辑导出工具DEXP,将指定对象(数据库级、模式级、表级)的数据导出到文件的备份,类似于ORACLE数据库提供的EXP工具。逻辑备份是物理备份的补充方式,相对物理备份而言,具有更大的灵活性。逻辑备份只能在联机环境下进行。
ps:物理备份和逻辑备份都可以在联机状态下进行,但联机备份时,大量的事务处于运动状态,为确保备份数据的同等性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档处于开启状态;脱机备份在故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档,正常退出的库对归档无硬性要求。
三、归档
1、手动归档
- ##关闭数据库
- ##在 dm.ini 所在目录,创建 dmarch.ini 文件。dmarch.ini 文件内容如下:
- [ARCHIVE_LOCAL1]
- ARCH_TYPE = LOCAL
- ARCH_DEST = /home/dm_arch/arch
- ARCH_FILE_SIZE = 1024
- ARCH_SPACE_LIMIT = 2048
- ##编辑 dm.ini 文件,设置参数ARCH_INI=1
- ##启动数据库实例,数据库已运行于归档模式。
复制代码 2、联机归档
- ##修改数据库为 Mount 状态
- ALTER DATABASE MOUNT;
- ##开启归档模式
- ALTER DATABASE ARCHIVELOG;
- ##配置本地归档
- ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';
- ##修改数据库为 Open 状态
- ALTER DATABASE OPEN;
复制代码 四、联机备份还原
1、物理备份还原
1.1 数据库备份
数据库备份数据库实例必须运行在归档模式下,在disql 工具或图形化管理工具 SQL 编辑区中执行,配置备份及干系底子信息:
- ##全备
- BACKUP DATABASE FULL BACKUPSET '/opt/dmdbms/BAK/db_full_bak_01';
- ##指定备份集路径为 /home/dm_bak/db_bak_3_01
- ##BACKUPSET 参数用于指定备份集的输出路径
- BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_01';
- ##创建备份集,备份名设置为“WEEKLY_FULL_BAK”
- BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';
- ##备份名的设置不可以使用特殊格式,例如%NAME。
- ##创建备份为备份集添加描述信息为“完全备份”。
- ##描述信息可以更详细地对备份类型、用途等进行说明
- BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_04' BACKUPINFO '完全备份';
- ##MAXPIECESIZE 参数用于控制单个备份片的大小
- ##MAXPIECESIZE 不能大于磁盘剩余空间大小,否则报错磁盘空间不足。
- ##创建备份限制备份片大小为300M
- BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_05' MAXPIECESIZE 300;
- ##执行备份压缩,压缩级别设置为 5。
- BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;
- ##压缩选项有不同的压缩级别可以选择,取值范围为 0~9。
- ##应根据存储空间、数据文件大小等确定合适地压缩级别
- ##可通过关键字 PARALLEL 指定是否执行并行备份,以及执行并行备份的并行数。
- ##创建并行备份,指定并行数为8
- BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;
复制代码 1.2 表空间备份:执行表空间备份数据库实例也必须运行在归档模式下
- BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
- ##增量备份指定基备份路径
- ##以增量备份用户 MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份
- BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';
- BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';
- BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01' BACKUPSET 'ts_increment_bak_02';
- ##完全备份
- BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';
- ##增量备份
- BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/ts_increment_bak_02';
复制代码 1.3 表备份:备份表不需要服务器配置归档,disql 输入以下命令即可备份用户表
- BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
- ##备份集“tab_bak_01”会生成到默认的备份路径下
- ##表备份均为联机完全备份;
- ##不需要配置归档日志;
- ##没有增量备份。
复制代码 1.4 备份归档
- 数据库必须配置归档;
- 归档文件的 db_magic、permanent_magic 值和数据库的 db_magic、permanent_magic 值必须一样;
- 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。
- SQL>BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';
- ##备份集“arch_bak_01”会生成到默认的备份路径下。
复制代码 1.5 数据还原
达梦数据库仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行,联机表还原如下:
- SQL>RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
复制代码 五、脱机备份还原
1、DMRMAN工具:是脱机备份还原命令行工具,支持命令行指定参数方式和控制台交互方式执行,无需额外安装,进入数据库安装目次的 bin 目次下./dmrman启动,exit;退出
- ##启动DMRMAN
- ./dmrman
- ##退出DMRMAN
- ##启动后控制台中输入 exit 命令
- RMAN>exit;
复制代码 2、数据备份
2.1数据库备份:要求数据库处于脱机状态
- ##保证数据库处于脱机状态
- ##启动DMRMAN命令行工具
- ./dmrman
- ##FULL参数表示执行的备份为完全备份
- ##DMRMAN中输入以下命令:
- RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini ' FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
- ##INCREMENT参数表示执行的备份为增量备份
- ##DMRMAN中输入以下命令:
- RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET '/home/dm_bak/db_increment_bak_02';
- ##归档备份
- ##DMRMAN 中输入以下命令:
- RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/arch_all_bak_01';
复制代码 2.2 归档备份:
要求数据库处于脱机状态
使用 DMRMAN 备份归档需要设置归档,否则会报错。同时,归档备份得是归档日志,防止归档日志的丢失导致紧张数据缺失。
- ##配置归档,请参考归档配置;
- ##保证数据库处于脱机状态;
- ##启动 DMRMAN 命令行工具;
- ##DMRMAN 中输入以下命令:
- RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/arch_all_bak_01';
复制代码 3、数据还原
3.1 数据库还原和修复
3.1.1 使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。
注意
通过 RESTORE 命令还原后的数据库不可用,需进一步执行 RECOVER 命令,将数据库恢复到备份竣事时的状态。
- ##联机备份数据库,保证数据库运行在归档模式及 OPEN 状态;
- SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
- ##准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示:
- ./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE
- ##校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;
- RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
- ##还原数据库。启动 DMRMAN,输入以下命令:
- RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM
- BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
复制代码 3.1.2 数据库恢复
使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO 日志;或从归档恢复,即重做归档中的 REDO 日志。
- ##从备份集恢复
- ##执行还原数据库的命令之后,可以直接执行恢复数据库的命令,如下:
- RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';
- ##从归档恢复
- ##通过使用 WITH ARCHIVEDIR 关键字进行归档恢复,如下:
- RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch'
复制代码 3.1.3 数据更新:更新数据库的 DB_MAGIC,并将数据库调解为可正常工作状态
- RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
复制代码 3.2 表空间还原和修复:
3.2.1 还原的备份集可以是联机或脱机天生的库备份集,也可以是联机天生的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重修与数据页的拷贝。
表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标志 FIL_TS_RECV_STATE_RESTORED,表示经过还原但数据不完整。表空间还原命令如下:
- RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
复制代码 注意:表空间还原的目标库只能是备份集产生的源库,否则将报错
3.2.2 表空间恢复
表空间恢复通过重做 REDO 日志,以将数据更新到同等状态。由于日志重做过程中,修改好的数据页首先存入缓冲区,缓冲区分批次将修改好的数据页写入磁盘,如果在此过程中发生异常中断,大概导致缓冲区中的数据页无法写入磁盘,造成数据的不同等,数据库启动时校验失败,以是表空间恢复过程中不允许异常中断。
恢复完成后,表空间状态置为 ONLINE,并设置数据标志为 FIL_TS_RECV_STAT_RECOVERED,表示数据已恢复到同等状态。恢复表空间命令如下:
- RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN;
复制代码 3.3归档还原与修复
3.3.1 归档还原
使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可以是脱机归档备份集,也可以是联机归档备份集。归档还原的命令如下:
- ##还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。
- ##1、指定还原的目标归档日志目录:
- RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;
- ##2、指定还原目标库的 dm.ini 文件路径:
- RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;
复制代码 3.3.2 归档修复
使用 REPAIR 命令完成指定命据库的归档修复,归档修复会对目标库 dmarch.ini 中配置的全部本地归档日志目次执行修复。若目标库没有配置本地归档,则不执行修复。执行修复时,目标库肯定不能处于运行状态。一样平常建议在数据库故障后,应立即执行归档修复,否则后续还原恢复将会导致联机日志中未刷入本地归档的 REDO 日志中而丢失,届时再使用本地归档恢复将无法恢复到故障前的最新状态。归档恢复的命令如下:
- ##单机环境下,确保目标库已经停止工作后,执行归档修复;
- RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';
- ##DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作;
- ##对于两节点 DSC01、DSC02 执行修复如下:
- RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini';
- RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini'
复制代码 社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |