达梦数据库备份还原:物理备份、逻辑备份

目录

  • [1. 达梦备份体系](#1. 达梦备份体系)
  • [2. 物理备份与逻辑备份的核心区别](#2. 物理备份与逻辑备份的核心区别)
  • [3. 物理备份底层机制](#3. 物理备份底层机制)
  • [3.5 物理备份还原语法与常用参数](#3.5 物理备份还原语法与常用参数)
  • [4. 逻辑备份底层机制](#4. 逻辑备份底层机制)
  • [4.4 逻辑备份还原语法与常用参数](#4.4 逻辑备份还原语法与常用参数)
  • [5. VMware + 麒麟 10 环境规划](#5. VMware + 麒麟 10 环境规划)
  • [6. 物理备份还原实战](#6. 物理备份还原实战)
  • [7. 逻辑备份还原实战](#7. 逻辑备份还原实战)
  • [8. DBA 生产检查清单](#8. DBA 生产检查清单)
  • [9. 常见场景选型](#9. 常见场景选型)
  • [10. 总结](#10. 总结)

1. 达梦备份体系

达梦数据库备份还原可以分成两条主线:

类型 最适合解决什么问题
物理备份 数据文件损坏、整库故障、介质故障、需要恢复到某个时间点
逻辑备份 单表恢复、模式迁移、跨库迁移、升级前对象留底、开发测试环境刷新

2. 物理备份与逻辑备份的核心区别

2.1 对比总表

对比项 物理备份 逻辑备份
关注点 数据文件、有效数据页、归档日志 表、模式、用户、数据行、对象定义
常用工具 SQL 、DMRMAN、CONSOLE、MANAGER dexpdimpdexpdpdimpdp
备份结果 备份集目录,含 .bak.meta .dmp 文件和 .log 日志
恢复粒度 库、表空间、数据文件、表备份集 FULL、OWNER、SCHEMAS、TABLES
速度 大库灾备通常更快 对象多、索引多时可能较慢
迁移能力 受版本、路径、初始化参数影响更明显 更适合跨环境、跨用户、部分对象迁移
灾难恢复
对象级恢复 相对笨重

2.2 选择原则

text 复制代码
整库灾难找物理;
对象迁移找逻辑;
误删单表用临时库恢复备份集,再逻辑抽取;
升级变更前,物理兜底 + 逻辑留样。

2.3 容易混淆的三个动作

动作 做了什么 达梦场景
备份 把数据页、归档或对象导出成文件 backup databasedexp
还原 把物理备份集的数据页写回目标数据文件 restore database
恢复 重做归档日志,让数据库达到一致状态或指定时间点 recover database

注意:物理恢复中,restore 不是终点。通常还需要 recover database,并在恢复完成后执行 update db_magic


3. 物理备份底层机制

3.1 物理备份到底备了什么

物理备份不是导出 SQL,也不是逐表扫描数据。它的核心动作是:
数据文件
扫描有效数据页
写入备份片 .bak
备份元信息
写入 .meta
备份期间产生的 REDO / 归档
备份集目录

备份集一般包含:

文件 作用
.bak 保存数据页或日志内容
.meta 保存备份集元数据,如备份范围、数据文件、源库信息、备份片信息

3.2 为什么联机备份强依赖归档

联机备份时数据库仍然在运行,业务事务可能持续修改数据。此时备份读到的数据页可能并不处于同一个时间点:

text 复制代码
备份开始 ────── 业务继续写入 ────── 备份结束
    │                 │                  │
    └─ 读到一部分旧页 └─ 产生 REDO 日志  └─ 需要日志保证一致性

所以物理联机备份必须依赖归档日志来保证恢复能力。没有连续归档,就无法可靠恢复到故障前的精确状态。

3.3 物理备份类型速查

类型 是否常用 说明
联机库备份 常用 数据库 OPEN 状态执行,生产主力备份方式
脱机库备份 常用 停库后用 DMRMAN 执行,适合维护窗口
表空间备份 进阶 局部物理保护,恢复时依赖归档
表级物理备份 进阶 一次备份一张用户表,不支持增量
归档备份 常用 只备份归档日志,配合数据备份形成恢复链
完全备份 必备 增量链的基础
差异增量 常用 基于上一次全备或增量
累积增量 常用 只基于全备,恢复链更短

3.4 差异增量 vs 累积增量

类型 优点 缺点
差异增量 每次备份较小 恢复链可能较长
累积增量 恢复链短 越靠后备份越大

3.5 物理备份还原语法与常用参数

物理备份常用 SQL 语法如下:

操作 语法示例 说明
库级全备 backup database full backupset '/opt/dmbak/full/db_full_01'; 备份整个数据库
库级增量 backup database increment with backupdir '/opt/dmbak/full' backupset '/opt/dmbak/inc/db_inc_01'; 基于已有备份集做增量
累积增量 backup database increment cumulative with backupdir '/opt/dmbak/full' backupset '/opt/dmbak/inc/db_cum_01'; 基于全备做累积增量
表空间备份 backup tablespace ts_bak full backupset '/opt/dmbak/full/ts_bak_01'; 备份指定表空间
表级物理备份 backup table bakuser.t_order backupset '/opt/dmbak/full/t_order_bak_01'; 一次备份一张用户表

常用参数说明:

参数 作用
FULL 完全备份
INCREMENT 增量备份
CUMULATIVE 累积增量备份
WITH BACKUPDIR 指定基备份集搜索目录
BACKUPSET 指定备份集目录
BACKUPINFO 写入备份描述
MAXPIECESIZE 限制单个备份片大小
COMPRESSED LEVEL 设置压缩等级
PARALLEL 并行备份
WITHOUT LOG 不备份日志,生成非一致性备份,恢复时更依赖归档

DMRMAN 常用语法:

操作 语法示例
校验备份集 check backupset '/opt/dmbak/full/db_full_01';
查看备份集 show backupset '/opt/dmbak/full/db_full_01';
还原数据库 restore database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_01';
恢复--从备份集 recover database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_01';
恢复--从归档 recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch';
恢复--指定时间点 recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch' until time '2026-05-15 10:30:00';
更新 DB_MAGIC recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

4. 逻辑备份底层机制

4.1 逻辑备份到底备了什么

逻辑备份读取数据库对象和数据内容,写入 .dmp 文件:
数据库对象
dexp 读取元数据
表数据
dexp 读取数据行
导出文件 .dmp
dimp 导入目标库

逻辑导出可以包含:

  • 表定义
  • 表数据
  • 索引
  • 约束
  • 权限
  • 触发器
  • 视图
  • 存储过程
  • 序列
  • 统计信息

4.2 dexp 的四种导出级别

级别 参数 典型场景
数据库级 FULL=Y 整库逻辑备份、升级前全量留底
用户级 OWNER=USER1 按业务用户迁移
模式级 SCHEMAS=SCH1 按模式迁移或恢复
表级 TABLES=SCH1.T1 单表恢复、关键表快照

4.3 逻辑备份强在哪里

text 复制代码
物理备份强在"救库"
逻辑备份强在"挑对象"

逻辑备份的优势:

  • 可以导出单表、单模式、单用户。
  • 可以用 QUERY 过滤部分数据。
  • 可以用 REMAP_SCHEMA 跨用户导入。
  • 可以用 REMAP_TABLESPACE 调整目标表空间。
  • 可以用 SHOW=Y 先查看导出文件内容,不实际导入。
  • 可以在迁移、升级、测试环境刷新中灵活使用。

逻辑备份的限制:

  • 数据库必须能正常连接。
  • 不适合作为唯一灾备手段。
  • 大量对象、索引、约束导入时耗时较长。
  • 跨版本、大小写敏感、字符集、兼容模式不一致时,需要提前验证。

4.4 逻辑备份还原语法与常用参数

dexp 用于逻辑导出,dimp 用于逻辑导入。逻辑备份还原面向的是数据库对象和数据内容,例如表、模式、用户、视图、索引、约束、权限、触发器、存储过程等。

dexp 逻辑导出基础语法:

bash 复制代码
./dexp USERID=用户名/密码@IP:端口 FILE=导出文件 LOG=日志文件 DIRECTORY=导出目录 导出级别

示例:

bash 复制代码
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=dm_full_20260515.dmp \
LOG=dm_full_20260515.log \
DIRECTORY=/opt/dmexp/full \
FULL=Y

dimp 逻辑导入基础语法:

bash 复制代码
./dimp USERID=用户名/密码@IP:端口 FILE=导入文件 LOG=日志文件 DIRECTORY=日志目录 导入级别

示例:

bash 复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/full/dm_full_20260515.dmp \
LOG=dm_full_20260515_imp.log \
DIRECTORY=/opt/dmexp/log \
FULL=Y

常见导入导出级别:

级别 参数示例 说明
整库级 FULL=Y 导入或导出整个数据库对象
用户级 OWNER=BAKUSER 导入或导出指定用户拥有的对象
模式级 SCHEMAS=BAKUSER 导入或导出指定模式下的对象
表级 TABLES=BAKUSER.T_ORDER 导入或导出指定表

常用参数:

参数 作用 备注
USERID 数据库连接信息 必填,Linux 下密码含特殊字符时要注意引号
FILE 指定 .dmp 文件 导出时为生成文件,导入时为读取文件
LOG 指定日志文件 建议每次导入导出都保留日志
DIRECTORY 指定文件或日志目录 dexp 中表示导出目录,dimp 中常用于日志目录
FULL 整库级导入导出 FULL=Y 表示整库
OWNER 用户级导入导出 适合按业务用户迁移
SCHEMAS 模式级导入导出 适合按模式迁移或恢复
TABLES 表级导入导出 适合单表备份、恢复、迁移
QUERY 条件导出 Linux 下建议写成 QUERY='WHERE ID <= 10000'
SHOW=Y 只查看导入文件内容 不真正执行导入,适合导入前确认对象
REMAP_SCHEMA 模式映射 例如 REMAP_SCHEMA=BAKUSER:BAKUSER_TEST
REMAP_TABLESPACE 表空间映射 目标表空间需提前规划
TABLE_EXISTS_ACTION 目标表已存在时的处理策略 常用 SKIPAPPENDTRUNCATEREPLACE
PARALLEL 导入导出线程数 大数据量场景可适当调整
TABLE_PARALLEL 单表并行度 大表导入导出时更常用
ROWS=N 只导对象定义,不导数据 适合只迁移结构
INDEXES=N 不处理索引 大数据导入后可再重建索引
CONSTRAINTS=N 控制约束处理 主键和非空约束需特别注意
GRANTS=N 不处理授权 适合目标库权限重新规划的场景
ENCRYPT=Y 导出文件加密 需保存好加密密码
COMPRESS=Y 导出文件压缩 可减少文件体积

TABLE_EXISTS_ACTION 常用取值:

取值 行为 适合场景 风险
SKIP 表存在则跳过 只导入目标库不存在的表 已有表不会刷新
APPEND 向已有表追加数据 补充新数据 主键或唯一键重复会报错
TRUNCATE 先清空表数据,再导入 表结构正确,只刷新数据 会删除目标表现有数据
REPLACE 先删除表,再按导出文件重建并导入 表结构也要恢复 可能影响依赖对象、授权和触发器
TRUNCATE_CASCADE 级联清空依赖表数据,再导入 存在外键依赖且确认可清理 风险最高,生产慎用

建议:FULL=Y 更适合导入空库;如果导入到已有库,建议先使用 SHOW=Y 查看导出文件内容,再根据对象重复情况选择TABLE_EXISTS_ACTION

5. VMware + 麒麟 10 环境规划

5.1 实验环境

项目 示例
虚拟化平台 VMware Workstation / ESXi
操作系统 银河麒麟高级服务器操作系统 V10
数据库 DM8
数据库用户 dmdba
实例名 DMSERVER
数据库名 DAMENG
端口 5236

5.2 目录规划

目录 用途 生产建议
/opt/dmdbms 数据库软件目录 已安装目录
/opt/dmdbms/data 数据文件根目录 当前实例目录为 /opt/dmdbms/data/DAMENG
/opt/dmdbms/arch 归档目录 你当前环境已有该目录
/opt/dmbak 物理备份目录 你已在 /opt 下创建
/opt/dmexp 逻辑导出目录 你已在 /opt 下创建
bash 复制代码
mkdir -p /opt/dmbak/full /opt/dmbak/inc /opt/dmbak/arch /opt/dmexp/full /opt/dmexp/schema /opt/dmexp/table /opt/dmexp/log
chown -R dmdba:dinstall /opt/dmdbms /opt/dmbak /opt/dmexp
chmod -R 775 /opt/dmdbms/arch /opt/dmbak /opt/dmexp

生产提醒:如果数据、归档、备份都在同一块虚拟磁盘上,这只能防误操作,不能防磁盘故障。真正的备份必须离开原故障域。

命令提醒:组名是 dinstall,不是 didstallchown 的用户组和路径之间要有空格,例如 chown -R dmdba:dinstall /opt/dmbak /opt/dmexp


6. 物理备份还原实战

6.1 开启归档(程序设计,备份必须设置归档,否则报错)

bash 复制代码
su - dmdba
cd /opt/dmdbms/bin
./disql SYSDBA/"Dameng@1234"@localhost:5236
sql 复制代码
alter database mount;
alter database archivelog;

alter database add archivelog '
TYPE=LOCAL,
DEST=/opt/dmdbms/arch,
FILE_SIZE=1024,
SPACE_LIMIT=51200
';

alter database open;

检查:

sql 复制代码
select arch_mode from v$database;
select arch_type, arch_dest, arch_file_size, arch_space_limit from v$dm_arch_ini;

6.2 准备测试数据

sql 复制代码
create tablespace ts_bak datafile '/opt/dmdbms/data/DAMENG/ts_bak01.dbf' size 128;

create user bakuser identified by "Dameng@1234" default tablespace ts_bak;
grant resource, public to bakuser;

conn bakuser/"Dameng@1234"@localhost:5236;

create table t_order (
  id int primary key,
  order_no varchar(40),
  amount decimal(10,2),
  create_time datetime default sysdate
);

insert into t_order(id, order_no, amount) values(1, 'DM202605150001', 100.00);
insert into t_order(id, order_no, amount) values(2, 'DM202605150002', 200.00);
commit;

6.3 库级全备

sql 复制代码
backup database full
backupset '/opt/dmbak/full/db_full_20260515_01'
backupinfo 'full backup before business change';

校验备份集:

bash 复制代码
cd /opt/dmdbms/bin
./dmrman
text 复制代码
RMAN> check backupset '/opt/dmbak/full/db_full_20260515_01';
RMAN> show backupset '/opt/dmbak/full/db_full_20260515_01';


6.4 增量备份

sql 复制代码
conn bakuser/"Dameng@1234"@localhost:5236;
insert into t_order(id, order_no, amount) values(3, 'DM202605150003', 300.00);
insert into t_order(id, order_no, amount) values(4, 'DM202605150004', 400.00);
commit;

差异增量:

sql 复制代码
conn SYSDBA/"Dameng@1234"@localhost:5236;

backup database increment
with backupdir '/opt/dmbak/full'
backupset '/opt/dmbak/inc/db_inc_20260515_01'
backupinfo 'increment backup after full backup';

累积增量:

sql 复制代码
backup database increment cumulative
with backupdir '/opt/dmbak/full'
backupset '/opt/dmbak/inc/db_cum_20260515_01';

6.5 表空间和表级物理备份

表空间备份:

sql 复制代码
backup tablespace ts_bak full
backupset '/opt/dmbak/full/ts_bak_full_01';

表级物理备份:

sql 复制代码
backup table bakuser.t_order
backupset '/opt/dmbak/full/t_order_bak_01';

6.6 DMRMAN 脱机还原恢复(直接从底层物理页恢复,需要脱机停库)

停库:

bash 复制代码
su - root
systemctl stop DmServiceDMSERVER

进入 DMRMAN:

bash 复制代码
su - dmdba
cd /opt/dmdbms/bin
./dmrman

第一步,校验并还原备份集:

text 复制代码
RMAN> check backupset '/opt/dmbak/full/db_full_20260515_01';
RMAN> restore database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_20260515_01';

第二步,还原完成后,根据恢复目标选择下面三种方式之一,执行恢复相关操作。

注意

复制代码
执行过 `recover ... update db_magic` 后,恢复流程已经结束。
如果要换另一种恢复方式,需要重新执行 `restore database ... from backupset ...`。

方式一:恢复到备份集结束状态:

text 复制代码
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_20260515_01';
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

方式二:利用归档恢复到最新状态:

text 复制代码
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch';
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

方式三:利用归档恢复到指定时间点:

text 复制代码
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch' until time '2026-05-15 10:30:00';
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

6.7 物理恢复注意点

检查项 为什么重要
备份集是否完整 .bak.meta 缺一不可
归档是否连续 时间点恢复依赖连续归档
dm.ini 路径是否正确 DMRMAN 根据它定位目标库
是否执行 recover 只还原不恢复,数据库可能不一致
是否更新 DB_MAGIC 避免恢复库与原库归档链混淆

7. 逻辑备份还原实战

7.1 整库逻辑导出导入

导出:

bash 复制代码
cd /opt/dmdbms/bin

./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=dm_full_20260515.dmp \
LOG=dm_full_20260515.log \
DIRECTORY=/opt/dmexp/full \
FULL=Y

导入:

bash 复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/full/dm_full_20260515.dmp \
LOG=dm_full_20260515_imp.log \
DIRECTORY=/opt/dmexp/log \
FULL=Y

先看内容,不导入:

bash 复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/full/dm_full_20260515.dmp \
SHOW=Y \
FULL=Y


7.2 用户级和模式级导出

用户级:

bash 复制代码
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=bakuser_owner_20260515.dmp \
LOG=bakuser_owner_20260515.log \
DIRECTORY=/opt/dmexp/schema \
OWNER=BAKUSER

模式级:

bash 复制代码
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=bakuser_schema_20260515.dmp \
LOG=bakuser_schema_20260515.log \
DIRECTORY=/opt/dmexp/schema \
SCHEMAS=BAKUSER

跨用户导入:

模式映射导入:

有时我们并不希望把逻辑备份导回原模式,而是希望导入到一个新的测试模式中。例如,源库中对象属于 BAKUSER,现在希望导入到 BAKUSER_TEST,用于恢复验证或数据比对。

这种场景使用 dimpREMAP_SCHEMA 参数。它的本质是模式转换,即把导出文件中的源模式对象映射到目标模式下,而不是简单理解为"跨用户导入"。

语法格式:

bash 复制代码
REMAP_SCHEMA=源模式:目标模式

它表示:导入时将导出文件中 BAKUSER 模式下的对象映射到 BAKUSER_TEST 模式下。

导入前先创建目标用户/模式:

sql 复制代码
create user bakuser_test identified by "Dameng@1234" default tablespace ts_bak;
grant resource, public to bakuser_test;

执行导入:

bash 复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/schema/bakuser_schema_20260515.dmp \
LOG=bakuser_schema_remap.log \
DIRECTORY=/opt/dmexp/log \
SCHEMAS=BAKUSER \
REMAP_SCHEMA=BAKUSER:BAKUSER_TEST

这种做法的好处是不会直接覆盖原 BAKUSER 模式,可以先在 BAKUSER_TEST 中检查数据是否正确,再决定是否回迁到生产模式。

7.3 表级导出导入

导出单表:

bash 复制代码
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=t_order_20260515.dmp \
LOG=t_order_20260515.log \
DIRECTORY=/opt/dmexp/table \
TABLES=BAKUSER.T_ORDER

按条件导出:

bash 复制代码
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=t_order_part_20260515.dmp \
LOG=t_order_part_20260515.log \
DIRECTORY=/opt/dmexp/table \
TABLES=BAKUSER.T_ORDER \
QUERY='WHERE ID <= 10000'

导入单表:

bash 复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/table/t_order_20260515.dmp \
LOG=t_order_imp_20260515.log \
DIRECTORY=/opt/dmexp/log \
TABLES=BAKUSER.T_ORDER

7.4 目标表已存在怎么办

参数 行为 适合场景 风险
SKIP 表存在则跳过 只导不存在的表 已有表不会刷新
APPEND 追加数据 补充新数据 主键/唯一键重复会报错
TRUNCATE 清空原表数据再导入 表结构正确,只刷新数据 会删除目标表现有数据
REPLACE 删除原表并按导出文件重建 表结构也要恢复 影响依赖对象和授权
TRUNCATE_CASCADE 级联清空依赖表数据再导入 有外键依赖且确认可清理 风险最高

示例:

bash 复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/table/t_order_20260515.dmp \
LOG=t_order_append.log \
DIRECTORY=/opt/dmexp/log \
TABLES=BAKUSER.T_ORDER \
TABLE_EXISTS_ACTION=APPEND

这种情况下导入不会覆盖原数据,重复主键的行会失败;如果实验环境想重新灌入这张表,可改用 TABLE_EXISTS_ACTION=TRUNCATE

复制代码
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/table/t_order_20260515.dmp \
LOG=t_order_truncate.log \
DIRECTORY=/opt/dmexp/log \
TABLES=BAKUSER.T_ORDER \
TABLE_EXISTS_ACTION=TRUNCATE

7.5 本次实验用到的逻辑导入参数

参数 作用
PARALLEL 导出或导入线程数
TABLE_PARALLEL 单表导出或导入线程数
ROWS=N 只导对象定义,不导数据
INDEXES=N 不处理索引
CONSTRAINTS=N 控制约束处理
GRANTS=N 不处理授权
TRIGGERS=N 不处理触发器
EXCLUDE 排除指定对象类型
INCLUDE 只处理指定对象类型
REMAP_SCHEMA 源模式映射到目标模式
REMAP_TABLESPACE 源表空间映射到目标表空间
ENCRYPT=Y 导出文件加密
COMPRESS=Y 导出文件压缩
SHOW=Y 查看导入文件内容,不执行导入

8. 生产检查清单

8.1 每次备份后

  • 备份命令是否成功返回
  • 备份日志是否有错误或警告
  • 备份集是否执行 check backupset
  • 备份目录空间是否充足
  • 归档目录空间是否充足

8.2 每次恢复前

  • 明确恢复目标:整库、表空间、单表、单模式
  • 明确恢复时间点或 LSN
  • 确认备份链完整
  • 确认归档连续
  • 优先恢复到临时库验证
  • 评估是否会覆盖生产数据

8.3 每次逻辑导入前

  • 先用 SHOW=Y 查看导出文件内容
  • 检查目标库是否已有同名对象
  • 检查目标表空间是否存在
  • 检查大小写敏感、字符集、兼容模式
  • 明确 TABLE_EXISTS_ACTION 策略
  • 导入后检查无效对象、索引、约束、权限

9. 常见场景选型

场景 推荐方案
磁盘损坏、数据文件丢失 物理全备 + 增量 + 归档恢复
整库回退到误操作前 物理备份 + 指定时间点恢复
误删单表 临时库物理恢复后逻辑抽取,或使用表级逻辑备份
迁移某个业务用户 dexp OWNER / dimp OWNER
迁移某个模式 dexp SCHEMAS / dimp SCHEMAS
迁移几张表 dexp TABLES / dimp TABLES
版本升级前兜底 物理全备 + 关键模式逻辑导出
开发环境刷新 逻辑导入或物理克隆,按数据量选择
大库常规灾备 周全备 + 日增量 + 连续归档 + 异地复制

10. 总结

关键结论

结论 说明
物理备份是灾难恢复底座 没有物理备份,介质故障时很难可靠恢复
逻辑备份是对象级恢复利器 单表、模式、跨库迁移更灵活
归档连续性决定恢复上限 归档断链会直接影响时间点恢复
备份成功不等于可恢复 必须校验、演练、异地保存
DBA 要优先恢复到临时库 降低生产二次破坏风险
相关推荐
czlczl200209251 小时前
mysql表复制方案
数据库·mysql
m0_463672201 小时前
mysql数据库如何进行逻辑备份与物理备份对比_优缺点分析
jvm·数据库·python
2401_867623981 小时前
SQL如何进行分组后字符串拼接_使用GROUP_CONCAT或STRING_AGG
jvm·数据库·python
kexnjdcncnxjs1 小时前
MySQL触发器无法触发的原因分析_MySQL触发器排查指南
jvm·数据库·python
六月雨滴2 小时前
存储性能监控与优化及最佳实践总结
数据库·oracle·dba
我先去打把游戏先2 小时前
【保姆级图文教程】:VMware虚拟机安装Ubuntu Server 22.04
linux·数据库·ubuntu
IpdataCloud2 小时前
企业级IP定位服务准确率怎么保证?从数据源到离线库的精度提升指南
运维·服务器·网络·数据库·tcp/ip
学习论之费曼学习法2 小时前
Agent记忆系统:让AI拥有长期记忆能力
数据库·人工智能·oracle
2301_781571423 小时前
NumPy张量缩并怎么用_np.einsum()爱因斯坦求和约定高级索引魔法
jvm·数据库·python