注册
DMHS搭建备份还原实践
技术分享/ 文章详情 /

DMHS搭建备份还原实践

Live 2024/01/26 1293 0 0

备份数据库

./disql --用时40min backup database full backupset '/dmbak/OA_FULL_20231007' COMPRESSED LEVEL 1 PARALLEL 8 ; ./dmrman check backupset '/dmbak/OA_FULL_20231007'; show backupset '/dmbak/OA_FULL_20231007';

拷贝全备至目的端主备机 1和2

scp -r /dmbak/OA_FULL_20231007 root@192.168.0.1:/data/1/1009bak scp -r /dmbak/OA_FULL_20231007 root@192.168.0.2:/data/1/1009bak

目的端数据库停机并备份

#停集群 cd /data/1/dm/dmdata/ cp -r OAK OA20231007

用全备还原目的端数据库(主备都做)

./dmrman restore DATABASE '/data/1/dm/dmdata/OAK/dm.ini' FROM BACKUPSET '/data/1/1009bak' recover DATABASE '/data/1/dm/dmdata/OAK/dm.ini' FROM BACKUPSET '/data/1/1009bak' recover DATABASE '/data/1/dm/dmdata/OAK/dm.ini' UPDATE DB_MAGIC

启动主库并修改配置

cd /data/log1/dm/dmdbms/bin #以mount方式启动数据库实例 ./DmServiceOA1 start ./disql SYSDBA/SYSDBA #源端 OGUID 为 453333,和 dmwatcher.ini 配置文件不一样,需要修改 OGUID SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SP_SET_OGUID(26180); SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动备库并修改配置

cd /data/log1/dm/dmdbms/bin #以mount方式启动数据库实例 ./DmServiceOA2 start ./disql SYSDBA/SYSDBA #源端 OGUID 为 453333,和 dmwatcher.ini 配置文件不一样,需要修改 OGUID #默认模式是 primary ,需要手动修改为 standby SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SP_SET_OGUID(26180); ALTER DATABASE STANDBY; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
sp_set_para_value(1,'ENABLE_LOCAL_OSAUTH',1); sp_set_para_value(1,'FAST_LOGIN',2); sp_set_para_value(1,'IO_THR_GROUPS',32);

启动守护进程

#主机 ./DmWatcherOA01 start #备机 ./DmWatcherOA02 start

删除全部作业

select 'SP_ENABLE_JOB('||NAME||', 0);' from sysjob.sysjobs

禁用外键、触发器以及除 EDM_BASESYSDBA 外的用户

--1.禁用外键 select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';' from all_constraints where constraint_type='R' and status='ENABLED' and owner in ('EKP'); --2.禁用触发器 select 'alter trigger '||owner||'.'||trigger_name||' disable '||';' from all_triggers where status='Y' and OWNER IN ('EKP') ; --3.禁用 SYSDBA 除外的所有用户 SELECT 'ALTER USER '||USERNAME||' ACOUNT LOCK;' FROM DBA_USERS WHERE OWNER NOT IN ('SYSDBA'); ALTER USER "CHECK" ACOUNT LOCK; ... ...

DMHS启动和重装字典

#源端删除tmp文件; cd /home/dmdba/dmhs/bin rm -rf cpt.tmp #删除目的端数据库中的hs表 #目标端重启,重启会新建hs表 cd /home/dmdba/dmhs/bin ./DmhsService restart ./dmhs_console start exec #源端启动并执行COPY重装字典 ./DmhsService start ./dmhs_console copy 0 "sch.name in ('EKP',...)" DICT

修改表DMHS_CHECKPOINT_TABLE

select * from "SYSDBA"."DMHS_CHECKPOINT_TABLE"; --源端siteid: 1,目的端siteid: 2 SITEID 改为 1 --3106838309969 为全量备份的 end lsn SEQID 改为 3106838309969

image20231025114256212.png

源端重启并start cpt

cd /home/dmdba/dmhs/bin ./DmhsService restart ./dmhs_console start cpt

日志查看

--启动cpt,查看目的端表信息 DMHS_TABLE_SEQID 有变化 select * from "SYSDBA"."DMHS_CHECKPOINT_TABLE"; select * from "SYSDBA"."DMHS_TRXID_TABLE"; select * from "SYSDBA"."DMHS_TABLE_SEQID";

查看目的端日志。大概 20: 10 之后无错误。

image20231008001907646.png

数据比对

SELECT 'SELECT '''||OWNER||'.'||TABLE_NAME||''' ,COUNT(*) FROM '||OWNER||'.'||TABLE_NAME||' UNION ALL' FROM DBA_TABLES WHERE OWNER NOT IN ('EKPBAK') AND TABLE_NAME IN (... 'IVW_CLSA_EMPLOYEE_OA', 'CITICS_OA_ODEPARTMENT') ORDER BY OWNER ;

注意

  1. 最初使用begin_lsn测试,查看日志发现一开始同步报错,大概在 20: 10 之后无错误,也就是备份完成时无错误。
  2. 修改 dmhs_checkpoint_table 需要重启源端 !
  3. 当源端没有停cpt就停止hs服务时,需要删除cpt.tmp然后才能启动源端DMHS
  4. 删除作业和修改用户只读是要快,避免客户端连接后对数据修改。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服