达梦数据库教程(7)达梦数据库逻辑备份与还原

达梦数据库教程(7)达梦数据库逻辑备份与还原

一、达梦数据库逻辑备份

逻辑备份是指将数据库中的数据和结构以逻辑形式导出的备份方式,备份的是数据的逻辑表示而不是物理文件本身。由于备份出来的文件都是SQL语句,所以非常适合跨平台迁移。但是备份和恢复的速度都比较慢,不适合对大型数据库进行备份。达梦数据库自带的命令行逻辑备份工具是 dexp 和 dexpdp,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端,均属于联机备份工具,需要数据库实例正常运行的情况下才能操作

1、dexp备份参数说明

1.1 导出粒度(四选一)

这四个参数互斥,只能选一种,缺省为SCHEMAS

· FULL:当设置为FULL=Y时表示导出整个数据库的所有对象,即全库备份

dexp USERID=SYSDBA/******:5236 FILE=FULL_20250225.dmp LOG=FULL_20250225.log DIRECTORY=/data/dmdbms/backup/ FULL=Y

#备份后生成文件如下
-rw-r--r-- 1 dmdba dinstall 6.3K Feb 25 15:52 FULL_20250225.dmp
-rw-r--r-- 1 dmdba dinstall 6.0K Feb 25 15:52 DFULL_20250225.log


· OWNER:导出指定用户名下拥有的所有对象

# 导出YWPIE用户下所有模式数据
dexp USERID=SYSDBA/******:5236 FILE=YWPIE_20250225.dmp LOG=YWPIE_20250225.log DIRECTORY=/data/dmdbms/backup/ OWNER=YWPIE

-rw-r--r-- 1 dmdba dinstall 4.3K Feb 25 15:58 YWPIE_20250225.dmp
-rw-r--r-- 1 dmdba dinstall 5.8K Feb 25 15:58 YWPIE_20250225.log


· SCHEMAS:导出指定模式下的所有对象,如果没有在一个用户名下挂多个模式,那么 OWNER 和 SCHEMAS 两种方式导出的结果是一致的,因为在达梦数据库中用户即SCHEMA

#导出指定模式下的所有数据
dexp USERID=SYSDBA/******:5236 FILE=SCHEMAS0_20250225.dmp LOG=SCHEMAS0_20250225.log DIRECTORY=/data/dmdbms/backup/ SCHEMAS=YWPIE

-rw-r--r-- 1 dmdba dinstall 1.5K Feb 25 16:02 SCHEMAS0_20250225.log
-rw-r--r-- 1 dmdba dinstall 5.0K Feb 25 16:02 SCHEMAS0_20250225.dmp


· TABLES:只导出指定的一张或多张表,会带出该表的数据、约束、索引等完整信息

dexp USERID=SYSDBA/******:5236 FILE=TABLE_20250225.dmp LOG=DM_DEXP_TAB_20250225.log DIRECTORY=/data/dmdbms/backup/ TABLES=YWPIE.T1,YWPIE.T2

-rw-r--r-- 1 dmdba dinstall  490 Feb 25 16:09 DM_DEXP_TAB_20250225.log
-rw-r--r-- 1 dmdba dinstall 4.7K Feb 25 16:09 DM_DEXP_TAB_20250225.dmp


1.2 数据库连接参数

· USERID:数据库连接信息,必选参数,且必须放在所有参数的最前面。格式是"用户名/密码@IP:端口"。如果密码里包含特殊字符需要做转义处理,这一块规则比较繁琐,实际用时建议密码尽量避免特殊字符

· FILE:指定导出文件名,可以带路径。文件名可以用%U通配符实现自动分卷(5位数字编号,从00001开始),配合FILESIZE参数控制单个文件大小,超过大小自动生成下一个文件

· LOG:指定导出日志文件名,日志内容会因导出级别不同而不同,TABLES级别只记索引/权限/行数;SCHEMAS/OWNER级别还会记录该模式下各类对象的统计信息;FULL级别则连系统包、系统视图的信息都会记录。

· DIRECTORY:导出文件和日志文件的存放目录。FILE/LOG不带路径时才用DIRECTORY的设置,如果FILE参数里自带路径会覆盖DIRECTORY指定的路径


1.3 过滤类参数

· QUERY:导出数据时通过WHERE条件进行过滤,格式为 模式名.表名:WHERE条件

#导出YWPIE.T1表中ID>=3的所有数据
dexp USERID=SYSDBA/******:5236  \
FILE=QUERY_BACKUP_20250225.dmp \
LOG=QUERY_BACKUP_20250225.log \
DIRECTORY=/data/dmdbms/backup/ \
TABLES=YWPIE.T1 QUERY="WHERE ID>=3"


· EXCLUDE / INCLUDE:指定导出时需要排除或只需要包含的对象。用法上有三种写法,如EXCLUDE=TABLES:table1,table2

#导出SCHEMAS=YWPIE中除了T1表的所有数据
dexp USERID=SYSDBA/******:5236 \
FILE=DM_DEXP_EXCLUDE_20250225.dmp \
LOG=DM_DEXP_EXCLUDE_20250225.log \
DIRECTORY=/data/dmdbms/backup/ \
SCHEMAS=YWPIE EXCLUDE="TABLES:T1"


1.4 其他参数

· PARALLEL:导出过程中使用的线程数,建议设置为CPU核心数

· FILESIZE:配合FILE里的%U分卷通配符使用,指定单个导出文件的大小上限(支持B/K/M/G单位),取值范围128M到系统最大值。如果FILE没用%U,这个参数不生效。

· COMPRESS / COMPRESS_LEVEL:是否压缩文件(默认不压缩)与压缩等级(0~9,默认1,数值越大压缩率越高但也越耗时

dexp USERID=SYSDBA/******:5236 \
FILE=DM_DEXP_COMPRESS_20250225.dmp \
LOG=DM_DEXP_COMPRESS_20250225.log \
DIRECTORY=/data/dmdbms/backup/ \
SCHEMAS=YWPIE \
COMPRESS=Y COMPRESS_LEVEL=3

· PARALLEL:指定导出的过程中所使用的线程数,通常可以和CPU数保持一致

dexp USERID=SYSDBA/******:5236 \
FILE=DM_DEXP_PARALLEL_20250225.dmp \
LOG=DM_DEXP_PARALLEL_20250225.log \
DIRECTORY=/data/dmdbms/backup/ \
SCHEMAS=YWPIE PARALLEL=8


二、达梦数据库逻辑还原

达梦数据库自带的命令行逻辑还原工具是 dimp 和 dimpdp,两者区别在于dimp 导入的文件必须存放在客户端,dimpdp 导入的文件必须存放在服务器端。逻辑还原就是把逻辑备份所产生的SQL文件重新执行的过程。使用dimp进行还原的时候同样支持 FULL、OWNER、SCHEMAS、TABLES 四种级别,缺省为导入的文件导出时所用的方式

1、dimp还原参数说明

· TABLE_EXISTS_ACTION:如果要导入的表已存在时的处理方式,默认为直接报错,可选参数包含 SKIP(跳过此表) 、 APPEND(在该表中追加数据) 、 TRUNCATE (先清空表数据再行导入)、 REPLACE(先删除表再导入数据) 、TRUNCATE_CASCADE(级联删除表和依赖数据,随后导入数据)

dimp USERID=SYSDBA/123456:5236  \
DIRECTORY=/dmdata/dmbak \
file=IAM3_RECOVER_table_backup_2026-03-12.dmp \
log=IAM3_RECOVER_table_import_2026-03-12.log \
schemas=IAM3 \
table_exists_action=replace


· REMAP_SCHEMA:SCHEMA映射,可以将源模式中的数据导入到指定模式

· REMAP_TABLE:表映射,可以将源表/视图中的数据导入到指定的表/视图中

· REMAP_TABLESPACE:表空间映射,可以将源表空间中的数据导入到指定的表空间中,使用该参数的前提是导出文件中包含源表表空间

# 将 MAIN 表空间中的数据导入到 TS 表空间
REMAP_TABLESPACE=MAIN:TS

· DATA_ONLY :是否只导入表数据,默认为N表示对象定义和数据都导入,设置为Y只导入表数据

· INCLUDE只导入该选项所指定的对象,其余对象被过滤

· EXCLUDE导入时需要过滤的对象,该选项指定的数据将不被导入

2、dimp还原示例

· 整库还原

#全库导出
./dexp SYSDBA/**********:5236 file=full.dmp log=dexp.log directory=/data/dmdbms/backup/ full=Y

#全库导入
./dimp SYSDBA/**********:5236 file=full.dmp log=dimp.log directory=/data/dmdbms/backup full=y table_exists_action=replace


· 按用户还原

#按原用户导出
dexp SYSDBA/SYSDBA  file=full_backup.dmp log=full_export.log directory=/data/backup owner=tanglu

#按原用户导入
dimp USERID=SYSDBA/SYSDBA file=full_backup.dmp log=full_import.log directory=/data/backup owner=tanglu table_exists_action=replace

#跨用户导入
dimp USERID=SYSDBA/SYSDBA file=full_backup.dmp log=full_import.log directory=/data/backup owner=tanglu remap_schema=原用户:新用户 table_exists_action=replace


· 按SCHEMA还原

#按SCHEMA导出
dexp SYSDBA/SYSDBA  file=full_backup.dmp log=full_export.log directory=/data/backup schemas=dexp

#按SCHEMA导
dimp USERID=SYSDBA/SYSDBA file=full_backup.dmp log=full_import.log directory=/data/backup owner=tanglu table_exists_action=replace


· 按表还原

#导出表
dexp SYSDBA/SYSDBA  file=table_backup.dmp log=table_export.log directory=/data/backup tables=test_table1,test_table2;

#导入表
dimp SYSDBA/SYSDBA  file=table_backup.dmp log=table_import.log directory=/data/backup tables=test_table1,test_table2 table_exists_action=replace


三、达梦数据库逻辑还原实战

当涉及到跨用户、跨SCHEMA或者跨表空间的导出导入时,需要进行REMAP映射操作,指定原对象与目标对象。当用户名不同、SCHEMA不同时通过REMAP_SCHEMA参数对所有SCHEMA进行转换,当用户默认表空间不同,通过REMAP_TABLESPACE参数进行转换

1、A用户数据迁移到B用户

#导出ywpie1数据
dexp USERID=SYSDBA/******:5236 FILE=ywpie1.dmp LOG=ywpie1_exp.log DIRECTORY=/data/dmdbms//backup/ywpie OWNER=YWPIE1

#导入数据到ywpie2用户,由于导出和导入的用户名不同,需要使用REMAP_SCHEMA参数进行转换
dimp USERID=SYSDBA/******:5236 FILE=ywpie1.dmp LOG=ywpie1_imp.log DIRECTORY=/data/dmdbms//backup/ywpie REMAP_SCHEMA=ywpie1:ywpie2 REMAP_TABLESPACE=ywpie1_ts:ywpie2_ts

2、A模式数据迁移到B模式

#导出A模式数据
dexp USERID=SYSDBA/******:5236 FILE=schema_a.dmp LOG=schema_a_exp.log DIRECTORY=/data/dmdbms//backup/schema_a SCHEMAS=a

#用户名、模式、表空间不同
dimp USERID=SYSDBA/******:5236 FILE=schema_a.dmp LOG=schema_a_imp.log DIRECTORY=/data/dmdbms//backup/schema_a REMAP_SCHEMA=a:b REMAP_TABLESPACE=atbs:btbs

3、异地还原

如果源库和目标库的参数配置不一致,会出现参数不匹配的警告,可以通过忽略参数IGNORE_INIT_PARA来绕过,该参数值为1是忽略大小写,值为2忽略字符串长度

dimp USERID=SYSDBA/******:5236 FILE=schema_a.dmp LOG=schema_a_imp.log DIRECTORY=/data/dmdbms//backup/schema_a IGNORE_INIT_PARA=2

文章评论

猜你喜欢

达梦数据库教程(16)审计规则介绍与配置

国产数据库 达梦数据库教程(16)审计规则介绍与配置

一、达梦数据库审计功能介绍数据库审计功能的主要作用是对数据的操作进行记录,比如谁在什么时间、通过什么IP、执行了什么SQL。只有当配置了合理的审计规则后,才能对异常数据(如数据不知道为什么被删除或修改...

Oracle教程(5)数据泵备份教程与实战

MySQL | Oracle Oracle教程(5)数据泵备份教程与实战

一、数据泵介绍数据泵(Data Pump)是 Oracle 10g 开始引入的命令行逻辑备份与恢复工具。通过 expdp / impdp ,可以对所有数据库对象(模式、表数据、表空间等)进行高效导出和...

MySQL教程(11)物理备份工具Xtrabackup使用教程

MySQL | Oracle MySQL教程(11)物理备份工具Xtrabackup使用教程

一、Xtrabackup 介绍Xtrabackup是Percona出品的一款针对MySQL的物理备份工具。物理备份通常是指直接对数据文件、日志文件、配置文件等对象直接进行复制的一种备份方法。...

MySQL教程(10)逻辑备份工具mysqldump使用教程

MySQL | Oracle MySQL教程(10)逻辑备份工具mysqldump使用教程

一、MySQL逻辑备份介绍逻辑备份是指通过导出数据库中的逻辑信息(如表结构、视图、索引、存储过程、数据内容等)并保存为可读格式的过程。它将数据库数据以SQL语句或其他标准格式(如CSV、JSON)输出...

PostgreSQL教程(11)第三方物理备份工具pg_rman使用教程

PostgreSQL PostgreSQL教程(11)第三方物理备份工具pg_rman使用教程

pg_rman是一款PostgreSQL第三方物理备份工具,支持对整个数据库集群、归档日志和服务器日志进行在线备份。由于pg_rman是基于本地数据拷贝的方式,而不是流式备份,所以要求 pg...