记录达梦数据库联机备份、脱机备份及数据还原步骤。
一、确认数据库备份参数
数据库备份需要首先关注两个参数:默认备份路径和默认备份策略,通过以下命令可以在达梦管理工具或disql中查看:
select * from SYS.V$PARAMETER t where t.name in ('BAK_PATH', 'BAK_USE_AP');
如果备份还原策略是DMAP辅助进程的方式,则要求DMAP必须启动,可以先查看DMAP服务是否启动:
ps -ef|grep dmap
如图,第一行显示为已启动,进程号为XXXX。
如果DMAP服务未启动,则先启动DMAP服务,dmdba 到安装目录的 bin 下执行以下命令:
./DmAPService start
二、联机备份
1、联机备份需要开启归档!数据库处于open状态!
可以通过达梦管理工具窗口操作的方法:
也可以通过达梦管理工具或disql中命令:
alter database mount; --数据库设为配置状态
alter database archivelog; --打开归档
--设定归档路径
alter database add archivelog 'TYPE=LOCAL,DEST=/dm8/data/Dameng/arch,FILE_SIZE=1024, SPACE_LIMIT=0';
ALTER DATABASE OPEN; --数据库设为打开状态
2、备份
(1)库级全量备份:
--备份至默认备份集路径,使用默认备份集名称
backup database;
--备份至指定备份集路径,指定备份集名称
backup database to 备份名称 backupset '指定备份路径';
--例如:
backup database to dmfullbak01 backupset '/dm8/data/Dameng/bak/dmfullbak01';
(2)库级增量备份:
--使用默认基础备份集,增量备份至默认路径,使用默认备份名称
backup database increment;
--使用指定基础备份集所在路径,会使用基础备份集路径下和默认备份集路径下的最新备份,指定备份名称和备份路径
backup database increment with backupdir '基础备份集所在路径' to 备份名称 backupset '指定备份路径';
--例如:
backup database increment with backupdir '/dm8/data/Dameng/bak/dmfullbak01' to dmincrbak01 backupset 'dm8/data/Dameng/bak/incr/dmincrbak01';
(3)表空间级全量备份:
同上,加上关键字tablespace即可。
backup tablespace dmtbs;
backup tablespace dmtbs to dmtbsbak01 backupset '/dm8/data/Dameng/bak/dmtbsbak01';
backup tablespace 表空间名 to 备份集名称 backupset '备份集所在路径';
(4)表空间级增量备份:
backup tablespace dmtbs increment;
backup tablespace dmtbs increment to dmtbsincrbak01 backupset '/dm8/data/Dameng/bak/incr/dmtbsincrbak01';
backup tablespace 表空间名 increment to 备份集名称 backupset '备份集所在路径';
(5)表级全量备份:
表只有全量备份!
同上,加上关键字table即可。
backup table dmtest.sales;
backup table 模式名.表名 to 备份集名称 backupset '备份集所在路径';
backup table dmtest.sales to dmtest_sales_bak01 backupset '/dm8/data/Dameng/bak/dmtest_sales_bak01';
(6)归档备份:
若归档不连续则会报错
backup archive LOG all;
三、脱机备份
1、需要先关闭数据库:
/dm8/bin/DmServerDameng.service stop
2、脱机备份可以使用dmrman、console DM控制台工具。
打开dmrman:
#dmdba用户
cd /dm8/bin
./dmrman
dmrman命令(和联机备份命令类似):
(1)库级全量备份
backup database '库级数据文件位置' to 备份集名称 backupset '备份集路径';
backup database '/dm8/data/Dameng/dm.ini' to dmfullbak02 backupset '/dm8/data/bak/dmfullbak02';
(2)库级增量备份
backup database '库级数据文件位置' increment with backupdir '基础备份集路径' to 增量备份集名称 backupset '增量备份集路径';
backup database '/dm8/data/Dameng/dm.ini' increment with backupdir '/dm8/data/bak' to dmincrbak02 backupset '/dm8/data/bak/incr/dmincrbak02';
(3)其他dmrman命令
显示备份集信息
show backupset '备份集路径';
show backupset '/dm8/data/bak/dmfullbak02';
删除备份集
remove backupset '备份集路径';
remove backupset '/dm8/data/bak/dmfullbak02';
检查备份集路径
check backupset '备份集路径';
check backupset '/dm8/data/bak/dmfullbak02';
四、数据恢复
1、DM8的库级/全库恢复、表空间恢复,只能在数据库脱机状态下恢复;
2、表的备份与恢复,一定在数据库联机/启动状态下,因为数据库不启动,无法识别表,也无法进行表的备份与还原。
(1)表空间级恢复
在脱机状态
dmrman命令:
restore database '/dm8/data/Dameng/dm.ini' tablespace dmtbs from backupset '/dm8/data/Dameng/bak/dmtbsbak01';
--自动应用归档恢复到最新
recover database '/dm8/data/Dameng/dm.ini' tablespace dmtbs;
(2)库级恢复
在脱机状态
dmrman命令:
restore database '/dm8/data/Dameng/dm.ini' from backupset '/dm8/data/Dameng/bak/dmfullbak02';
--基于归档将数据库恢复到最新;
recover database '/dm8/data/Dameng/dm.ini' with archivedir '/dm8/data/Dameng/arch';
--更新数据库魔数
recover database '/dm8/data/Dameng/dm.ini' update db_magic;
也可以通过达梦管理工具操作:
(3)表级恢复
在数据库启动状态!
表只能恢复到备份的那一刻
dmrman命令:
--先做表结构的还原
restore table dmtest.sales struct from backupset '/dm8/data/Dameng/bak/dmtest_sales_bak01';
--再做数据的还原
restore table dmtest.sales from backupset '/dm8/data/Dameng/bak/dmtest_sales_bak01';
1. List item