逻辑备份还原是达梦数据库运维体系中的重要组成部分。与物理备份侧重于数据文件的整体复制不同,逻辑备份关注的是数据库中的逻辑对象,如表、视图、存储过程、函数等。
它通过 dexp 工具将数据库对象的结构定义和数据内容提取为独立于物理存储格式的 .dmp 文件,再通过 dimp 工具将备份文件中的内容重新导入目标数据库。
这种备份方式的最大优势在于其灵活性——支持跨平台数据迁移、特定对象的细粒度恢复,且能够在数据库正常运行期间联机执行。达梦的逻辑备份还原工具支持数据库级(FULL)、用户级(OWNER)、模式级(SCHEMAS)和表级(TABLES)四种独立的操作级别,可灵活应对不同场景下的备份与恢复需求。
本次实验的操作环境如下:
| 项目 | 配置 |
|---|---|
| 操作系统 | CentOS Linux 7 x86_64 |
| CPU | x86_64 |
| 内存 | 4GB |
| 磁盘 | 40GB |
| 处理器 | 2*2 |
| 数据库版本 | DM8 V8(dm8_20260710_x86_CentOS7_64.zip) |
在开始逻辑备份还原之前,需要先完成实例初始化和服务注册。
1)初始化实例
./dminit path=/dmdata/data INSTANCE_NAME=DMSERVER01 DB_NAME=DMDBA PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 SYSDBA_PWD=Dmdba123 SYSAUDITOR_PWD=Dmdba123
2)注册服务
su - root
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DMDBA/dm.ini -p DMSERVER
逻辑导出和导入分为四种级别,四种级别独立互斥,不能同时存在。
导出或导入整个数据库中的所有对象。
适用场景:
执行要点:
FULL=Y 参数,会导出所有对象(含系统对象和用户对象)./dexp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=full_db.dmp LOG=full_export.log FULL=Y DIRECTORY=/dmdata/dmbak
./dimp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=/dmdata/dmbak/full_db.dmp LOG=full_import.log FULL=Y DIRECTORY=/dmdata/dmbak
导出或导入一个或多个用户所拥有的所有对象。
适用场景:
执行要点:
OWNER 参数指定一个或多个用户名,多个用户名用逗号分隔REMAP_SCHEMA 将源用户映射到目标端的不同用户-- 查看所有用户(用户与模式名通常相同)
SELECT USERNAME FROM ALL_USERS;
-- 或查看当前库中所有模式
SELECT OWNER FROM ALL_OBJECTS GROUP BY OWNER;
./dexp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=user_data.dmp LOG=user_export.log OWNER=TEST_USER DIRECTORY=/dmdata/dmbak
./dimp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=/dmdata/dmbak/user_data.dmp LOG=user_import.log OWNER=TEST_USER DIRECTORY=/dmdata/dmbak
导出或导入一个或多个模式下的所有对象。
适用场景:
执行要点:
SCHEMAS 参数指定一个或多个模式名-- 查看当前库中所有模式
SELECT OWNER FROM ALL_OBJECTS GROUP BY OWNER;
./dexp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=schema_data.dmp LOG=schema_export.log SCHEMAS=TEST_USER DIRECTORY=/dmdata/dmbak
./dimp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=/dmdata/dmbak/schema_data.dmp LOG=schema_import.log SCHEMAS=TEST_USER DIRECTORY=/dmdata/dmbak
导出或导入一个或多个指定的表或表分区。
适用场景:
高级过滤参数:
QUERY:对导出表的数据进行过滤EXCLUDE:排除特定对象INCLUDE:只包含特定对象-- 查看当前库中所有模式
SELECT OWNER FROM ALL_OBJECTS GROUP BY OWNER;
-- ALL_TABLES 视图包含了当前用户可以访问的所有表的信息
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'TEST_USER';
./dexp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=table_data.dmp LOG=table_export.log TABLES=TEST_USER.EMPLOYEES,TEST_USER.SALES DIRECTORY=/dmdata/dmbak
./dimp USERID=SYSDBA/Dmdba123@localhost:5236 FILE=/dmdata/dmbak/table_data.dmp LOG=table_import.log TABLES=TEST_USER.EMPLOYEES,TEST_USER.SALES DIRECTORY=/dmdata/dmbak
REMAP_SCHEMA 参数用于将一个模式的备份导入到另一个不同的模式中,实现模式级别的数据迁移和重命名。
场景: 将源库中 TEST_USER 模式的数据,导入到目标库的 TEST_USER 模式中。
关键说明:
SCHEMAS=DM 必须指定,且值必须与导出时的源模式名保持一致REMAP_SCHEMA=DM:DMHR 告诉工具将原本属于 DM 模式的所有对象导入到目标数据库的 DMHR 模式中REMAP_TABLESPACE=<旧表空间>:<新表空间> 参数./dexp USERID=SYSDBA/Dmdba123@192.168.218.157:5236 \ FILE=schema_dm.dmp \ LOG=dm_export.log \ SCHEMAS=TEST_USER \ DIRECTORY=/dmdata/dmbak
./dimp USERID=SYSDBA/'"Dameng@123"'@192.168.218.149:5236 \
FILE=/dmdata/dmbak/schema_dm.dmp \
LOG=dm_import.log \
SCHEMAS=TEST_USER \
REMAP_SCHEMA=TEST_USER:TEST_USER \
DIRECTORY=/dmdata/dmbak
通过本次对达梦数据库逻辑备份还原机制的系统学习与实践,深入掌握了 dexp 和 dimp 两款核心工具的使用方法,并完成了四种级别的导出与导入操作验证。在操作过程中,认识到模式名的大小写敏感性对命令执行结果有直接影响,也理解了 REMAP_SCHEMA 参数在跨模式数据迁移中的关键作用。
文章
阅读量
获赞
