达梦数据库主备集群升级(逻辑导出导入)
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) 对比完之后可以导出对比报告 |