达梦数据库备份

达梦数据库联机在线备份操作指南

一、基础条件与准备

开启归档模式‌:
联机备份必须处于归档模式下,否则无法执行。需通过disql工具执行以下操作:

alter database mount;  
alter database ARCHIVELOG;  

例子:

[dmdba@server ~]$ cd /opt/dmdbms/bin

[dmdba@server bin]$ ./disql SYSDBA/'"Dameng@123"':5236

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.416(ms)
disql V8
SQL> select arch_mode from v$database;

行号     arch_mode
---------- ---------
1          N

已用时间: 1.008(毫秒). 执行号:1101.
SQL> select arch_name, arch_type, arch_dest from v$dm_arch_ini;
未选定行

已用时间: 1.228(毫秒). 执行号:1102.
SQL> alter database mount;
操作已执行
已用时间: 1.426(毫秒). 执行号:0.
SQL> alter database ARCHIVELOG;
操作已执行
已用时间: 28.115(毫秒). 执行号:0.
SQL>
完成配置后需重启数据库使配置生效‌。


验证归档状态:
select arch_mode from v$database;  
select arch_name, arch_type, arch_dest from v$dm_arch_ini;  

例子:
[dmdba@server ~]$ cd /opt/dmdbms/bin
[dmdba@server bin]$ ./disql SYSDBA/'"Dameng@123"':5236

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 11.061(ms)
disql V8
SQL> select arch_mode from v$database;

行号      arch_mode
---------- ---------
1            Y

已用时间: 2.218(毫秒). 执行号:601.
SQL> select arch_name, arch_type, arch_dest from v$dm_arch_ini;

行号     arch_name              arch_type arch_dest
---------- --------------               ---------      ---------
1          ARCHIVE_LOCAL1 LOCAL     /dmarch

已用时间: 0.884(毫秒). 执行号:602.
SQL>


启动相关服务‌:
进入达梦安装目录的bin目录,启动DmAPService和数据库服务:
cd /opt/dmdbms/bin
./DmAPService start  
./DmService start

二、联机备份操作步骤
全库备份‌,支持指定路径(如D:/dmbak/DB_DAMENG_FULL)‌。
使用disql或SQL命令行执行:BACKUP DATABASE BACKUPSET '/path/to/backup';  

SQL> BACKUP DATABASE BACKUPSET '/dmbak/';              
操作已执行
已用时间: 00:00:06.922. 执行号:603.
SQL>

[root@server dmbak]# ll
总用量 56156
-rw-r--r-- 1 dmdba dinstall    33792 3月   4 10:39 dmbak_1.bak
-rw-r--r-- 1 dmdba dinstall 57342976 3月   4 10:39 dmbak.bak
-rw-r--r-- 1 dmdba dinstall   120320 3月   4 10:39 dmbak.meta
[root@server dmbak]#


增量备份需基于全量备份执行:
BACKUP DATABASE INCREMENT BACKUPSET '/path/to/incremental_backup';  

表空间或表级备份‌
表空间备份:
BACKUP TABLESPACE "TEST_DATA" BACKUPSET '/path/to/tablespace_backup';  

单表备份:
BACKUP TABLE "TEST_SCH.T1" BACKUPSET '/path/to/table_backup';  


三、备份验证与管理
校验备份集完整性‌使用DMRMAN工具验证:
./dmrman  
CHECK BACKUPSET '/path/to/backup';  


例子:
[dmdba@server bin]$ ./dmrman
dmrman V8
RMAN>
RMAN> check backupset '/dmbak';
check backupset '/dmbak';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]                                 
check backupset successfully.
time used: 166.216(ms)
RMAN>
输出check backupset successfully表示备份有效‌。

查看备份信息‌
通过系统视图查询备份记录:
SELECT * FROM V$BACKUPSET; 

四、注意事项
事务与日志连续性‌:
联机备份期间需确保归档日志连续,若出现不连续情况需重启数据库‌。
备份路径与权限:
确保备份目录有足够空间,且数据库用户具有写入权限‌。
增量备份策略‌:
差异增量备份基于全量或增量备份,累积增量仅基于全量备份‌。

### 达梦数据库备份工具及其使用 达梦数据库提供了多种备份方式,主要包括逻辑备份与还原以及物理备份与还原。以下是关于这些备份方法的具体介绍: #### 1. **逻辑备份与还原** 逻辑备份主要通过 `DMSQL` 命令行工具实现,支持全库、用户级、模式级和表级别的备份。 - **全库备份** 可以使用以下命令完成整个数据库的导出: ```bash exp DMUSER/DMPASSWD FILE=full_backup.dmb FULL=Y ``` - **用户级别备份** 如果只需要备份特定用户的对象,则可以指定用户名: ```bash exp DMUSER/DMPASSWD FILE=user_backup.dmb OWNER=(username) ``` - **导入到当前账户或其他账户** 对于已有的备份文件,可以通过 `imp` 工具将其导入至目标账户: ```bash imp DMUSER/DMPASSWD FILE=user_backup.dmb IGNORE=N ``` 若希望将数据导入另一个账户,则需额外设置映射关系[^3]。 #### 2. **联机备份与还原** 联机备份允许在不关闭数据库的情况下进行备份操作,分为以下几个层次: - **数据库级别联机备份** 调用存储过程来启动完整的在线备份流程: ```sql CALL SYSPROC.SNAPSHOT_DATABASE('backup_path', 'FULL'); ``` - **表空间级别联机备份** 针对单个或多个表空间执行增量备份: ```sql ALTER TABLESPACE tablespace_name BEGIN BACKUP; -- 将表空间的数据文件复制到安全位置 ALTER TABLESPACE tablespace_name END BACKUP; ``` - **表级别联机备份** 利用外部工具提取单独表格的内容并保存为独立文件。 #### 3. **脱机备份与还原** 当数据库处于关闭状态时可实施离线备份策略。此方法简单高效但会暂时中断服务访问。 - 关闭实例前确认其运行状况: ```sql SELECT STATUS$, MODE$ FROM V$INSTANCE; ``` 如果发现状态异常(如提示未同步日志),则应先行修复问题后再继续操作[^4]。 - 实施冷备方案只需拷贝所有相关目录下的文件即可,包括但不限于控制文件、数据文件及归档日志等组件。 --- ### 注意事项 在实际部署过程中需要注意一些常见陷阱,比如忘记启用归档功能可能导致无法正常恢复等问题。因此建议定期测试所建立的安全副本能否成功加载回原系统环境中去验证有效性。 ```python import os def check_db_status(): """模拟检查数据库健康度""" status_query = "SELECT STATUS$, MODE$ FROM V$INSTANCE;" result = execute_sql(status_query) # 假设这是某个函数用于执行SQL语句 return result['STATUS$'], result['MODE$'] current_status, current_mode = check_db_status() if current_status != "OPEN": raise Exception(f"Database is not open! Current Status: {current_status}") elif current_mode not in ["NORMAL", "PRIMARY"]: print("Warning: Database mode may affect backup strategy.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值