注册
达梦归档、备份与还原
专栏/技术分享/ 文章详情 /

达梦归档、备份与还原

Arno 2025/08/29 37 0 0
摘要

1、归档配置

1.1为什么需要配置归档?
a.数据安全与恢复:允许数据库进行联机(热)备份。在非归档模式(NOARCHIVELOG)下,只能进行冷备份,数据库需要关闭。
b.时间点恢复:结合备份和归档日志,可以将数据库恢复到自备份以来的任意时间点,最大程度减少数据丢失。
c.数据同步:主备集群(如数据守护、DSC)等高级功能都依赖于归档日志的传输和应用。
1.2、配置归档的步骤
检查数据库环境是否是归档模式,如果显示Y则为归档模式,否则为非归档模式。
SQL> select arch_mode from v$database;
1.png

配置数据库到MOUNT状态
SQL> alter database mount;
开启归档模式
SQL> alter database archivelog;
配置归档路径
SQL> ALTER DATABASE ADD ARCHIVELOG ‘DEST = /dm8/dmbak, FILE_SIZE = 2048, TYPE = LOCAL’;
配置数据库到open状态
SQL> alter database open;
验证配置
SQL> select arch_mode from vdatabase; 查询已配置的归档目的地信息 SQL> SELECT ARCH_DEST, ARCH_FILE_SIZE, ARCH_SPACE_LIMIT FROM VDM_ARCH_INI;

2、sql 日志

2.1 什么是 SQL 日志?
与记录数据物理变化的归档日志(Archive Log) 不同,SQL 日志记录的是逻辑操作:即客户端发起的每一条 SQL 语句、执行时间、用户信息、影响行数等。它主要用于:
a.安全审计:追踪谁在什么时间执行了什么操作;
b.性能分析:找出执行缓慢的 SQL 语句(慢查询);
c.故障排查:重现问题发生前后执行的 SQL 序列;
d.SQL回放:为数据复制、迁移等场景提供源数据。

2.2开启和关闭 SQL 日志
2.2.1 检查当前状态
SQL> SELECT SF_GET_PARA_VALUE(1, ‘SVR_LOG’);
如果返回 0 表示关闭,1 表示开启。
2.2.2 开启 SQL 日志
SQL> SELECT SF_GET_PARA_VALUE(1, ‘SVR_LOG’);
2.2.3 关闭 SQL 日志
SQL> SP_SET_PARA_VALUE(1, ‘SVR_LOG’, 0);
2.png

3、配置 SQL 日志(sqllog.ini)
3.1 配置文件结构
SQL日志配置部分:[SLOG_ALL]
[SLOG_ALL]
FILE_PATH = …/log # 日志文件存放目录
PART_STOR = 0 # 是否分区存储:0 不分,1 按时间分,2 按大小分
SWITCH_MODE = 2 # 日志切换模式:0 不切换,1 按大小,2 按时间
SWITCH_LIMIT = 256 # 切换限制。按大小(MB)或时间(分钟)
ASYNC_FLUSH = 1 # 是否异步刷盘:0 否,1 是
FILE_NUM = 100 # 保留的日志文件个数
ITEMS = 0 # 记录哪些内容:0 全部,可组合 (见下文)
SQL_TRACE_MASK = ‘’ # SQL匹配掩码,如 ‘LIKE%’ 只记录LIKE开头的SQL
MIN_EXEC_TIME = 0 # 最小执行时间(ms),大于此值的SQL才记录(用于抓慢SQL)

3.2 关键参数详解
3.2.1 ITEMS:
最重要的参数之一,决定记录哪些信息。它是一个位掩码,可以通过相加来组合功能。
1:记录 SQL 语句
2:记录事务相关(提交、回滚)
4:记录执行计划(性能分析神器)
8:记录绑定参数
16:记录执行时间(开始、结束时间戳)
32:记录影响行数
64:记录执行结果(成功/失败)
0 或 (1+2+4+8+16+32+64) = 127:表示记录所有信息。
3.2.2 MIN_EXEC_TIME:
抓取慢查询。例如,设置为 1000,则只记录执行时间超过 1 秒的 SQL。
3.2.3 SQL_TRACE_MASK / USER_MASK:
用于过滤,只记录特定模式或用户的 SQL,避免日志量过大。

3、备份和还原

3.1 物理备份与还原
3.1.1 物理备份
a.关闭数据库
systemctl stop DmServiceDMSERVER.service
b.启动dmrman
[dmdba@localhost ~]$ /dm8/dmdbms/bin/dmrman
c.在dmrman命令行中执行备份
RMAN> BACKUP DATABASE ‘/dm8/data/DAMENG/dm.ini’ FULL TO BAK_FULL_OFFLINE BACKUPSET ‘/dm8/dmbak/full_offline_bak’;
3.png

3.1.2 物理还原
a.关闭数据库
systemctl stop DmServiceDMSERVER.service
b.启动dmrman
[dmdba@localhost ~]$ /dm8/dmdbms/bin/dmrman
c.还原数据库
指定数据库的dm.ini文件和备份集位置
RESTORE DATABASE ‘/dm8/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm8/dmbak/full_offline_bak/’;
d.如果还有归档备份,也需要指定
RMAN> RECOVER DATABASE ‘/dm8/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm8/dmbak’;
e.更新数据库魔数(DB_MAGIC),恢复后必做!
RMAN> RECOVER DATABASE ‘/dm8/data/DAMENG/dm.ini’ UPDATE DB_MAGIC;

3.2 逻辑备份与还原
3.2.1 dexp 逻辑导出
a.全库导出 (FULL)
./dexp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical FILE=full_exp.dmp LOG=full_exp.log FULL=Y
4.png

b.按模式导出 (SCHEMAS) - 最常用
./dexp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical1 FILE=schema_exp.dmp LOG=schema_exp.log SCHEMAS=DMUSER1,DMUSER2
c.按表导出 (TABLES)
./dexp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical FILE=table_exp.dmp LOG=table_exp.log TABLES=DMUSER1.TABLE1,DMUSER1.TABLE2

3.2.2 dimp 逻辑导入
a.全库导入 (FULL) - 需要导入元数据(用户、权限等)
./dimp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical FILE=full_exp.dmp LOG=full_imp.log FULL=Y
5.png

b.按模式导入 (SCHEMAS) - 导入到原模式
./dimp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical FILE=schema_exp.dmp LOG=schema_imp.log SCHEMAS=DMUSER1,DMUSER2
c.按模式导入 (SCHEMAS) - 导入到新模式 (REMAP_SCHEMA)
./dimp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical FILE=schema_exp.dmp LOG=schema_imp.log SCHEMAS=DMUSER1 REMAP_SCHEMA=DMUSER1:DMUSER_NEW
d.按表导入 (TABLES)
./dimp USERID=用户/密码@127.0.0.1:5236 DIRECTORY=/dm8/backup/logical FILE=table_exp.dmp LOG=table_imp.log TABLES=DMUSER1.TABLE1,DMUSER1.TABLE2

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服