参考书籍《达梦数据库运维实战》
达梦数据库的备份与还原有两种类型:逻辑备份与还原和物理备份与还原。
逻辑备份是将指定对象(库级、模式级、表级、用户级)的数据导出到文件的备份的方式。
逻辑备份针对的是数据内容,不关心这些数据物理存储在什么位置,利用DEXP导出工具实现。
逻辑还原是逻辑备份的逆过程,利用DIMP工具,将由DEXP导出的备份数据重新导入到目标数据库。
物理备份直接扫描数据库文件(数据文件、控制文件和日志文件等),找出那些已经分配、使用的数据页,复制并保存到备份集中。在物理备份过程中,不关心数据页的具体内容是什么,页不关心数据页属于哪一张表,只是简单地根据数据库文件系统的描述,来挑选有效的数据页。物理备份分为联机备份(SQL备份)和脱机备份(DMRMAN工具)。
物理还原是物理备份的逆过程,物理还原一般是通过DMRMAN工具(或者SQL语句),读取备份集中的数据页(数据文件、数据页、归档文件),并将数据页写入目标数据库对应数据文件相应位置的过程。
使用SQL语句进行联机备份期间,数据库处于运行状态,可以对外提供服务。因此可能有一些处于活动状态的事务正在执行,所以联机备份是非一致性备份,为确保备份数据的一致性,需要将备份期间产生的REDO日志一起备份。因此,只能在配置本地归档,且开启本地归档的数据库上执行联机备份。非一致性备份的备份集只包含数据文件相关内容,没有归档日志信息,利用非一致性备份与还原的数据库无法直接启动,必须借助归档日志来恢复。
使用DMRMAN工具进行脱机备份时,数据库必须关闭。脱机数据库备份会强制将检查点之后的有效REDO日志复制到备份集中,因此,脱机备份是一致性备份。数据库正常关闭时,会生成完全检查点,脱机备份生成的备份集中,不包含任何REDO日志。一致性备份的备份集包含了完整的数据文件内容和归档日志信息;利用一个单独的备份集可以将数据库恢复到备份时的状态。
REDO日志(REDO LOG)记录了所有物理页的修改,包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。数据库中INSERT、DELETE、UPDATE等DML操作,以及CREATE TABLE等DDL操作转化为对某些数据文件、某些数据页的修改。通过REDO日志可以保证数据库的完整性和一致性。
达梦数据库默认包含两个扩展名为log的联机REDO日志文件,这两个文件循环使用。任何数据页从内存缓冲区写入磁盘之前,都必须保证其对应的REDO日志已经写入到联机日志文件中。
可以通过以下4个视图查看REDO日志和归档日志文件的信息。
(1)VRLOG:显示日志的总体信息。包括当前日志事务号LSN、归档日志、检查点等。
(2)VRLOGBUF:显示日志BUFFER信息。包括BUFFER的使用情况,如状态、总大小、已使用大小等。
(3)VRLOGFILE:显示日志文件的具体信息。包括文件号、完整路径、文件的状态、文件大小等。
(4)VARCHIVED_LOG:显示当前实例的所有归档日志文件信息。
2.2 REDO日志归档
DM实例可以运行在两种模式下:归档模式和非归档模式。在归档模式下,会产生归档日志文件。归档日志有5种类型。
本地归档文件用来存储REDO日志文件中的数据。归档线程负责将REDO日志数据写入本地归档文件中,最多可以设置8个本地归档。启动归档后,如果因为磁盘空间不足导致日志无法归档,那么实例会被强制挂起,直到磁盘空间释放,本地归档成功后,再继续执行。
在REDO日志数据从日志缓冲区写入联机REDO日志文件之前,通过MAL系统将REDO日志发送到远程服务器中,远程服务器收到REDO日志后,会返回确认消息。收到确认消息后,执行后续操作。
如果发送REDO日志失败,或从备库返回的数据库模式不是STANDBY,那么将数据库切换为SUSPEND状态,阻塞所有REDO日志的写入操作。
即时归档在主库将REDO日志写入联机REDO日志文件后,在通过MAL系统将REDO日志发送到备库中。即时归档是读写分离集群的实现基础,与实时归档的主要区别是发送REDO日志的时机不同。一个主库可以配置1~8个即时备库。
在设定的时间点或者每隔设定时间,启动归档REDO日志的发送。设置定时归档必须确保至少有1个本地归档。系统调度线程根据设定,触发归档REDO日志发送事件。通过MAL系统,获取远程服务器的当前LSN,生成发送归档REDO日志任务,加入任务队列。归档任务线程获取任务,通过MAL系统,将任务发送到远程服务器中。最多可以设置8个异步归档。
远程归档就是将写入本地归档的REDO日志信息,发送到远程节点,并写入远程节点的制定归档目录中。远程归档与本地归档的主要区别是REDO日志写入的位置不同,本地归档将REDO日志写入数据库实例所在的节点的磁盘,而远程归档则将REDO日志写入其他数据库实例所在节点的指定归档目录。远程归档日志文件的命名规范和本地归档日志文件保持一致,都是以“归档名+归档文件的创建时间”进行组合命名。最多可以配置8个远程归档。
REDO日志文件大小最小为4096×页大小,若页大小为8KB,则可添加的文件最小值为4096×8KB=32MB。添加REDO日志文件的SQL语句如下。
修改现有REDO日志大小的SQL语句如下,只能扩大日志大小,不能减小日志大小。
在MOUNT状态下,可以对日志文件进行重命名。日志文件重命名的SQL语句如下。
注意,目前达梦数据库并没有提供删除REDO日志的语法,所以对于REDO日志,只能添加,无法删除。
将数据库切换为MOUNT状态的SQL语句如下。
设置归档信息的SQL语句如下。
启用归档的SQL语句如下。
打开数据库的SQL语句如下。
查看归档信息的SQL语句如下。
如果想取消归档模式,执行如下命令。(数据守护环境下不支持此操作)。
DM管理工具→实例连接→右键→管理服务器。
(1)在归档中启用归档并输入归档信息,取消归档则将归档模式改为“非归档”。
(2)在系统管理中,打开数据库,完成归档模式切换。
逻辑备份与还原使用dexp命令和dimp命令执行,该命令在/数据库安装目录/bin目录下,必须在实例OPEN状态下才能执行。
逻辑导出或导入有以下4种级别。
(1)数据库级(FULL):导出或导入整个数据库中的所有对象。
(2)用户级(OWNER):导出或导入1个或多个用户所拥有的所有对象。
(3)模式级(SCHEMAS):导出或导入1个或多个模式下的所有对象。
(4)表级(TABLE):导出或导入1个或多个指定的表或表分区。
dexp和dimp的选项参数较多,具体可以查看命令的帮助,如下。
需要注意,执行下面的相关命令时,要把“/数据库安装路径/bin”配置到PATH和LD_LIBRARY_PATH中。
全库导出的示例语法如下。
删除用户的SQL语句如下。
(1)导入到原用户
创建空用户的SQL语句如下。
(2)导入到其他用户
(1)导入原模式
(2)导入其他模式
删除表。
(1)将表导入到原用户下的命令。
(2)将表导入到其他用户下的命令。
(1)右键表→导出
(2)右键表→导入
达梦数据库联机SQL语句备份支持数据库、表空间、表、归档4中备份。支持表空间、表两种还原,数据库还原和归档还原必须在DMRMAN工具中执行。在数据库、归档、表空间备份,以及表空间还原时,必须保证系统处于归档模式下。
数据库级别只支持联机备份,不支持恢复。
SQL备份有以下两种主要方式.
(1)完全备份
(2)增量备份
备份→右键库备份
联机执行SQL语句备份支持表空间级别的备份。表空间的还原需要数据库关闭,进行脱机还原。
(1)完全备份表空间
(2)增量备份表空间
RMAN>restore database ‘/opt/dmdbms/data/DAMENG/dm.ini’ tablespace main from backupset ‘/opt/dmdbms/data/DAMENG/bak/ts_full_bak_01’;
RMAN>recover data base ‘/opt/dmdbms/data/DAMENG/dm.ini’ tablespace main;
(1)直接还原
(2)重构表并还原
(3)还原数据不重建索引
(4)还原数据不重建约束
查看归档日志的有效LSN范围。
备份指定的归档日志文件的SQL
backup archivelog lsn between 44821 and 44897 delete input backupset '/opt/dmdbms/data/DAMENG/arch/';
备份所有归档日志文件的SQL
Backup archivelog all delete input backupset '/opt/dmdbms/data/DAMENG/arch/';
https://eco.dameng.com
文章
阅读量
获赞