怎样对生产环境10T RAC新增Adg 不对现有主库产生任何负载,不占用网络带宽?

导读

作者:杨漆
16年关系型数据库管理,从oracle 9i 、10g、11g、12c到Mysql5.5、5.6、5.7、8.0 到TiDB获得3个OCP、2个OCM;运维路上不平坦,跌过不少坑、熬过许多夜。把工作笔记整理出来分享给大伙儿,希望帮到大家少走弯路、少熬夜。

提问:

如果您的生产环境为3节点的Rac+ASM,10T以上数据,业务对主库有极高性能要求,不能占用主库资源、通道、带宽,且主库归档日志每4小时会定时删除一次(归档存储空间有限,且无法扩容),现有备库上的归档每小时不定期自动删除(第三方软件,且要求不能停),在这种极端情况下怎样才能再新部署一套Adg ?

答:

1.Duplicate Target 方式是彻底无望了!
2.传统的Rman备份出全量数据传输到备库后启动Adg从主库自动拉归档方式也不可能(10T数据备份时间 + 传输时间 + 恢复时间 > 4小时)
3.Rman备份出全量数据传到备库恢复,备份同时主库定时转储归档传到备库register (主库当前环境为三节点Rac,归档存放在ASM上,你能知道归档的正确顺序,并按顺序正确register到新的dg端?)
4.Rman备份出全量数据传到备库恢复,备份同时从现有一备库端定时转储归档传到备库register(第三方软件每小时内不定期删除归档日志,你怎么确保高频产生的归档全部转储成功,一个不丢失不损坏?)

以上的四种方案全无法通过!

可上级的要求无法违背。怎样在这样极端恶劣的环境下新部署一套Adg库?

解决方案如下:

1.在主库端制作standby控制文件
2.在现有备库端备份全量数据
3.搭建第二新备库并用备库端传来的全量数据恢复
4.read only方式开打新备库读出Gap点的scn
5.根据Gap点scn在旧有备库上做好增量备份
6.用增备恢复第二新备库
7.启用dg让新备库自动抓取主库端4小时内的归档,恢复追平主库
8.启动Adg验证有效性

步骤:

1.保持与主库操作系统一致,在Adg Server上部署Redhat7.2的OS,本机存储空间分配足够(20T),保证主备库间带宽畅通;
2.在standby部署好Oracle12C的software、空库并启动到nomount状态 ;
3.将旧有备库上的密码文件、静态参数文件传输到新的Adg端(参数文件根据主/备环境做对应修改配置);
4.选择非业务高峰时段对主库spfile用命令动态修改;
5.在主库上创建备库控制文件并传输到备库对应目录;
6.旧备库外挂NAS存储(移动式),rman备份完全量数据后将此NAS快速搬迁到异地机房并挂载到新备库端;
7.用主库制作的standby controlfile启动新备库到mount状态;
8.用外挂NAS存储上的全量备份集恢复新备库;
9.只读方式开打新备库读出Gap点的scn(找最小点的scn);
10.根据Gap点scn在旧有备库上做好增量备份,用增备恢复第二新备库;
11.启用dg让新备库自动抓取主库端4小时内的归档,恢复追平主库;
12.启动Adg 验证主、备库数据一致性;

################## 以下为具体执行手顺

主库执行:

TNS:

orcldg2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldg2)
(UR=A)
)
)

#!/bin/bash
sqlplus sys/ as sysdba>result.log<<EOF
##alter database create standby controlfile as ‘/home/oracle/control01_sty.ctl’;
alter system set log_archive_config=‘DG_CONFIG=(orcl,orcldg1,orcldg2)’;
alter system set log_archive_dest_4=‘SERVICE=orcldg2 LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg2’ scope=both sid=’*’;
alter system set log_archive_dest_state_4=enable;
alter system set standby_file_management=‘AUTO’;
exit
EOF

##在主库上创建备库控制文件并传输到备库对应目录
sqlplus sys/ as sysdba>result.log<<EOF
alter database create standby controlfile as ‘/mnt/backup/control01_sty.ctl’
exit
EOF

scp -r /mnt/backup/control01_sty.ctl 10.10.10.18:/home/oracle/

全备Standby库+归档、并行

旧备库端执行:

su - oracle

vi rman_database_backup.sh

#!/bin/sh

echo “start full database backup !”

rman target / log /mnt/backup/datbase_backup.log <<EOF

run {
configure channel device type disk format ‘/mnt/backup/full_%U_%d’;
configure device type disk parallelism 10; ## 自动分配10路并行备份通道,无需再手动指定
delete backupset all completed before ‘sysdate-7’;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup database plus archivelog;
}
exit;
EOF

echo “finished full database backup !!!”

##备份集的实际路径、备份集名需按实际情况调整
scp -r /mnt/backup/full_database 10.10.10.18:/u01/backup/full_database

全量恢复

新备库执行:

rman target / log /home/oracle/rman_recover.log<<END
run{
startup nomount;
restore controlfile from ‘/home/oracle/control01_sty.ctl’;
sql ‘alter database mount standby database’;
catalog start with ‘/mnt/backup/’; ##备份集的实际路径、备份集名需按实际情况调整
configure device type disk parallelism 10;
restore database;
recover database;
}
exit;
END

###基于gap点拉增量备份

select * from v$archive_gap;

##查看standby端最小 scn
col min(checkpoint_change#) for 999999999999
col current_scn for 999999999999
set numwidth 20

select min(checkpoint_change#) from v$datafile_header; ## 两条sql 二选一就好,用下面这条更省力

select min(fhscn) from x$kcvfh;

MIN(FHSCN)

20172508017

select current_scn from v$database;

CURRENT_SCN

20203151960

选择较小SCN号(20172508017)去主库拉增备

查出主库在standby端current_scn后产生的新数据文件,根据文件号(file#)在主库端做Rman数据文件备份

select file#,name from vKaTeX parse error: Expected 'EOF', got '#' at position 31: …creation_change#̲>=(select curre…database); ## 极端情况下使用,大多数时候不用这样做

################################## 拉增备的scn号用下面查出来最小的号
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN

2164433

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值