目录
环境说明
- 服务器操作系统:服务器版银河麒麟v10
- 服务器CPU平台:Inter x86-64
- 客户端:windows10
准备工作
学会使用disql
disql是tool下的一个工具,使用disql之前,我们最好先配置好DM8的环境变量(详情请看“DM8安装说明.doc”文档)
- 使用disql(使用SYSDBA账号使用,当前密码为:ftzn83560792):
disql SYSDBA/ftzn83560792
此时可执行SQL语句,与DM管理工具的“查询”功能一致(注:每段语句后用分号”;”结尾,删除键请使用组合键“ctrl+←”)
目录说明
说明,本示例中达梦数据库的相关目录(注意:所有目录必须给dmdba账户操作权限):
- 数据库程序安装目录:/dm8
- 存放数据库的文件夹:/dm8/data
- 存放备份文件的目录:/dm8/dmbak
- 存放归档日志的目录:/dm8/dmarch
启动服务和代理
启动DMAP
DMAP即DmAPService,是达梦数据库辅助插件服务,主要服务于数据库的备份操作。
查看DmAPService服务状态
- 使用dmdba权限切换到bin目录下执行:
./DmAPService status
或者
直接执行(配置好环境变量的前提下):
service DmServiceDMSERVER status
通过指令开启服务(如果服务未开启)
- 使用dmdba权限切换到bin目录下执行:
./DmAPService start
或者
- 直接执行(配置好环境变量的前提下):
service DmAPService start
使用工具停止服务
在图形化界面dm8安装目录下找到tool文件夹,找到“dmservice.sh”,双击运行
打开代理
打开“DM管理工具”,右键点击“代理”,选择“创建代理环境”,开启成功后出现子集:“作业、警报、操作员”
- 或者使用命令开启
SP_INIT_JOB_SYS(1);
开启成功后,数据库模式会自动生成“SYSJOB”模式,该模式属于SYSDBA用户,SYSJOB模式拥有DBMS_JOB系统包、相关表和视图:
启用归档模式
SQL命令(用disql或DM管理工具来执行):
- 修改数据库为mount状态:
alter database mount;
- 配置本地归档:
alter database add archivelog ‘DEST= /dm8/dmbak,TYPE=local,FILE_SIZE=256,SPACE_LIMIT=0’;
- 开启归档模式:
alter database archivelog;
- 修改数据库为Open状态:
alter database open;
验证是否成功
- 查询状态:
select arch_mode from v$database;
“Y”表示开启成功
- 查询配置:
select arch_name,arch_type,arch_dest,arch_file_size from v$dm_arch_ini;
看到之前设置保存成功即可
物理备份
物理备份包括:数据库备份、表空间备份、表备份(表备份为联机备份,不需要配置归档日志,没有增量备份),本文主要介绍数据库联机备份操作。
Linux脚本备份
在disql工具或图形化管理工具“DM管理工具”SQL编辑区中使用backup语句备份整个数据库,执行命令如下:
- 在指定目录下执行备份(目录:/dm8/dmbak/full01),备份名与文件夹同名“full01”:
backup database full backupset '/dm8/dmbak/full01';(full可以省略)
- 指定备份名为“WEEKLY_FULL_BAK”,执行命令:
backup database to WEEKLY_FULL_BAK backupset '/dm8/dmbak/full02';
- 基于/dm8/dmbak/full01全量备份的增量备份,执行命令:
backup database increment with backupdir ‘/dm8/dmbak/full01’ backupset ‘dm8/dmbak/ full01/db_increment_bak_01’;
图形化备份
【备份】-【库备份】-反键“新建备份”
可选择备份类型:完全备份、增量备份。保存路径此处不可修改,如需修改需到配置文件dm.ini中修改配置项BAK_PATH。
定时备份
定时备份前请先配置本地归档和开启dmap服务。
配置“定时备份”作业:
通常情况下我们会创建3个“作业”:
- 每周1次的“全库备份”;
- 每周其余时间(除去第1步中的时间,每周内的其他6天)的“增量备份”;
- 每天执行的删除“历史备份”,根据实际情况而定,删除N天之前的备份;
创建“作业”我们也可以通过2种方式来完成,命令脚本或图形化工具DM管理工具
Linux定时备份脚本
每“周日”凌晨“00:10:00”定时“全库备份”:
- 创建作业:
call SP_CREATE_JOB('bak_full',1,0,'',0,0,'',0,'bak_full');
- 开始作业配置:
call SP_JOB_CONFIG_START('bak_full');
- 指定作业执行节点(默认作业在控制节点执行,可选):
call SP_JOB_SET_EP_SEQNO('bak_full', 0);
- 新增“作业步骤”:
call SP_ADD_JOB_STEP('bak_full', 'bak_full', 6, '01000000/dm8/dmbak', 0, 0, 0, 0, NULL, 0);
- 新增“作业调度”:
call SP_ADD_JOB_SCHEDULE('bak_full', 'bak_full', 1, 2, 1, 1, 0, '00:10:00', NULL, '2022-10-20 00:00:00', NULL, '');
- 结束作业配置:
call SP_JOB_CONFIG_COMMIT('bak_full');
每周其他时间(周一至周六)凌晨“00:10:00”定时“增量备份”:
- 创建作业:
call SP_CREATE_JOB('bak_inc',1,0,'',0,0,'',0,'bak_inc');
- 开始作业配置:
call SP_JOB_CONFIG_START('bak_inc');
- 指定作业执行节点(默认作业在控制节点执行,可选):
call SP_JOB_SET_EP_SEQNO('bak_inc', 0);
- 新增“作业步骤”:
call SP_ADD_JOB_STEP('bak_inc', 'bak_inc', 6, '11000000/dm8/dmbak|/dm8/dmbak', 0, 0, 0, 0, NULL, 0);
- 新增“作业调度”:
call SP_ADD_JOB_SCHEDULE('bak_inc', 'bak_inc', 1, 2, 1, 126, 0, '00:10:00', NULL, '2022-10-20 00:00:00', NULL, '');
- 结束作业配置:
call SP_JOB_CONFIG_COMMIT('bak_inc');
每天凌晨“01:10:00”删除7天以前的数据:
- 创建作业:
call SP_CREATE_JOB('bak_del',1,0,'',0,0,'',0,'bak_del');
- 开始作业配置:
call SP_JOB_CONFIG_START('bak_del');
- 指定作业执行节点(默认作业在控制节点执行,可选):
call SP_JOB_SET_EP_SEQNO('bak_del', 0);
- 新增“作业步骤”:
call SP_ADD_JOB_STEP('bak_del', 'bak_del', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/dm8/dmbak'');call SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-7);', 0, 0, 0, 0, NULL, 0);
- 新增“作业调度”:
call SP_ADD_JOB_SCHEDULE('bak_del', 'bak_del', 1, 1, 1, 0, 0, '01:10:00', NULL, '2022-10-20 00:00:00', NULL, '');
- 结束作业配置:
call SP_JOB_CONFIG_COMMIT('bak_del);
图形化定时备份
每“周日”凌晨“00:10:00”定时“全库备份”:
【代理】-【作业】-【新建作业】
编辑【常规】
编辑【作业步骤】(注:如果是本机上操作,“备份路径”可以通过“开打”按钮选择得到,如果是用客户端进行操作,需根据实际情况手动填写路径)
编辑【作业调度】
完成后点击“确定”即可。
每周其他时间(周一至周六)凌晨“00:10:00”定时“增量备份”:
【代理】-【作业】-【新建作业】
编辑【常规】
编辑【作业步骤】(注:如果是本机上操作,“备份路径”可以通过“开打”按钮选择得到,如果是用客户端进行操作,需根据实际情况手动填写路径)
编辑【作业调度】
完成后点击“确定”即可。
每天凌晨“01:10:00”删除7天以前的数据:
【代理】-【作业】-【新建作业】
编辑【作业步骤】(注:如果是本机上操作,“备份路径”可以通过“开打”按钮选择得到,如果是用客户端进行操作,需根据实际情况手动填写路径)
此处的SQL脚本:
- 添加备份目录:
call SF_BAKSET_BACKUP_DIR_ADD('DISK', '/dm8/dmbak');
- 批量删除指定时间内的数据库备份集:
call SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW()-7);
编辑【作业调度】
完成后点击“确定”即可。
定时备份最后会在指定的时间点自动生成备份文件,与物理备份生成的结果相同。物理备份是“即时生成”,定时备份是通过作业“定时生成”。
物理备份还原
DM仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具dmrman执行。本文主要介绍数据库的还原方法。
注意:数据库还原通常要执行4步方可成功:检查 -- 还原 -- 恢复 -- 更新
准备
数据库在还原时,数据库必须处在关闭状态(脱机还原)。停止服务的方法有2种
查看DmServiceDMSERVER服务状态
- 使用dmdba权限切换到bin目录下执行:
./ DmServiceDMSERVER status
或者
- 直接执行(配置好环境变量的前提下):
service DmServiceDMSERVER status
通过指令停止服务(如果服务已开启)
- 使用dmdba权限切换到bin目录下执行:
./DmServiceDMSERVER stop
或者
service DmServiceDMSERVER stop
使用工具停止服务
在图形化界面dm8安装目录下找到tool文件夹,找到“dmservice.sh”,双击运行
检查
检查备份集是否可以使用,启动dmrman,通过指令完成:
- 使用dmdba权限切换到bin目录下执行:
./dmrman
- 检查备份是否可用:
check backupset ‘/dm8/dmbak/full01’;
如显示successfully,则表示可以正常使用。
dmbak文件夹有一个名为full01的文件夹,该文件夹内有一个full01.bak的全库备份
注意:dmrman一定要切换到bin文件夹后开启才能正常完成相关操作
注意:上述中backupset后的路径请不要写错
还原、恢复、更新
3步操作,缺一不可
- 还原备份集
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/dmbak/full01';
- 通过归档日志完全恢复
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/dmarch';
- 更新db_magic
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
重启数据库服务
查看DmServiceDMSERVER服务状态
- 使用dmdba权限切换到bin目录下执行:
./ DmServiceDMSERVER status
或者
- 直接执行(配置好环境变量的前提下):
service DmServiceDMSERVER status
通过指令开启服务(如果服务未开启)
- 使用dmdba权限切换到bin目录下执行:
./DmServiceDMSERVER start
或者
service DmServiceDMSERVER start
使用工具开启服务
在图形化界面dm8安装目录下找到tool文件夹,找到“dmservice.sh”,双击运行
注意:开启数据库服务时需验证root账号的密码
至此,达梦数据库DM8基础篇已全部完成,如果觉得以上所有内容对于初学者的你来说,还有那么点作用的话,麻烦给个赞,谢谢观看!