达梦数据库主备集群升级(逻辑导出导入)

1. 背景需求

当前使用的是1-2-70-21.09.08-147080-10028-SEC的主备数据库,需要升级为1-3-12-2023.04.17-187846-20040-SEC安全版本

2. 环境准备及状态检查

2.1. 数据库软件版本及环境配置

以下为方案流程测试,实际根据实际情况进行目录 安装包等更换。

操作系统

CentOS Linux 7

cpu

Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz 4核

旧数据库版本

1-2-70-21.09.08-147080-10028-SEC

新数据库版本

1-3-12-2023.04.17-187846-20040-SEC

旧环境软件目录

/home/dmdba/dmdbms

新环境软件目录

/opt/dmdbms

旧环境实例路径

/dmdata/dmdb

新环境实例路径

/data/dmdb

2.2. 新旧环境路径和端口

旧环境端口

实例名

实例端口

MAL 系统监听 TCP 连接的端口

实例本地的守护进程监听 TCP 连接的端口

实例监听守护进程 TCP 连接的端口

RW1

5236

7336

7436

7536

RW2

5236

7336

7436

7536

新环境端口

实例名

实例端口

MAL 系统监听 TCP 连接的端口

实例本地的守护进程监听 TCP 连接的端口

实例监听守护进程 TCP 连接的端口

RW1

5237

7337

7437

7537

RW2

5237

7337

7437

7537

 

1.1. 旧环境检查

主备集群状态

建库参数检查

select DECODE(para_value, 1,'是', '否') "LENGTH_IN_CHAR",

       page "PAGE_SIZE",SF_GET_EXTENT_SIZE() "EXTENT_SIZE",

       DECODE(unicode,  '1','utf8',  0,'gbk', 'EUC-KR') "CHARSET",

       decode(CASE_SENSITIVE,  '1','敏感', '不敏感') CASE_SENSITIVE

  from v$dm_ini where para_name = 'LENGTH_IN_CHAR';

1.2. 创建新的空集群(过程忽略)

建库参数参照旧环境数据库参数,合理规划安装及实例路径,避开旧环境的端口,检查对比新旧主备的实例参数是否一致,检查磁盘空间是否足够,磁盘使用率超过50%需要申请增加磁盘

2. 升级步骤

2.1. 查询老库需要迁移的相关用户、表空间信息

select u.username,t.name as tablespace_name,d.CLIENT_PATH,d.PATH,d.MAX_SIZE,d.AUTO_EXTEND

from SYS."V$TABLESPACE" as t ,SYS.dba_USERS as u ,SYS."V$DATAFILE" as d

where t.name=u.DEFAULT_TABLESPACE and d.group_id(+)=t.id;

2.2. 老库使用dexp导出带迁移对象

切换到旧集群的安装bin目录

 cd /home/dmdba/dmdbms/bin

使用dexp 导出全库数据

 ./dexp SYSDBA/'"SYSDBA"' file=/dmdata/DMDB_full.dmp log=/dmdata/DMDB_full.log full=y

2.3. 新库创建对应的相关用户、表空间

登录新集群创建对应的表空间和用户(如果没有创建对应的表空间和用户,将使用默认表空间main)

创建表空间

create tablespace "SCOTT" datafile 'SCOTT.DBF' size 128 autoextend on CACHE = NORMAL ;

创建用户

create user "SCOTT" identified by "dameng123"

default tablespace "SCOTT";

grant "DBA","PUBLIC","SOI" to "SCOTT";

查看新集群用户和表空间情况

 select u.username,t.name as tablespace_name,d.CLIENT_PATH,d.PATH,d.MAX_SIZE,d.AUTO_EXTEND

from SYS."V$TABLESPACE" as t ,SYS.dba_USERS as u ,SYS."V$DATAFILE" as d

where t.name=u.DEFAULT_TABLESPACE and d.group_id(+)=t.id;

2.4. 导入老库数据到新库

切换到旧集群的安装bin目录

cd /opt/dmdbms/bin

使用dexp 导出全库数据

 ./dimp SYSDBA/SYSDBA@localhost:5237  file=/dmdata/DMDB_full.dmp log=/dmdata/DMDB_full_dimp.log full=y TABLE_EXISTS_ACTION=replace

--有很多报无效的约束名,

新版本主备库执行下面参数,重新导入

 sp_set_para_value(1,'CHECK_CONS_NAME',0);

然后再导入

 ./dimp SYSDBA/SYSDBA@localhost:5237  file=/dmdata/DMDB_full.dmp log=/dmdata/DMDB_full_dimp.log full=y TABLE_EXISTS_ACTION=replace

3. 数据对比

使用dts进行数据对比

 

 

 

对比新旧主库的数据(这里是5236和5237端口,用户都是SYSDBA)

对比完之后可以导出对比报告

posted @ 2023-07-04 11:13  fangzpa  阅读(133)  评论(0编辑  收藏  举报