ADG架构搭建4 -- 搭建一主两备ADG架构
本文接该系列文章的上一篇:ADG架构搭建3 – 一主一备ADG主备切换
前言
请先参照文章《ADG架构搭建1–Oracle安装》完成第三台服务器的Oracle安装。
本文将完成的ADG架构为:一个主库(ruiadg1)和两个备库(ruiadg2、ruiadg3).
正文
一、修改主备库的tnsnames.ora和listener文件
1.修改主备库tnsnames.ora文件
$ vi $ORACLE_HOME/network/admin/tnsnames.ora
已知服务器 ruiadg1 和 ruiadg2 的ip地址分别为192.168.10.13 和 192.168.10.14 ,假设服务器ruiadg3的ip地址为192.168.10.15。
添加ORCL_STANDBY的相关配置:
ruiadg1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521)))(CONNECT_DATA =(SID = ruiadg)))ruiadg2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.14)(PORT = 1521)))(CONNECT_DATA =(SID = ruiadg))
)ruiadg3 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.15)(PORT = 1521)))(CONNECT_DATA =(SID = ruiadg)))
2.修改备库2(ruiadg3)listener.ora文件
在《ADG架构搭建2 – 搭建一主一备ADG架构》中已修改主库(ruiadg1)和备库1(ruiadg2)的listener.ora文件,此处只需修改备库2(ruiadg3)的listener.ora文件。
$ vi $ORACLE_HOME/network/admin/listener.ora
添加静态监听:
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = ruiadg)(ORACLE_HOME = /oracle/app/product/12.1.0/dbhome_1)(SID_NAME = ruiadg))
)
listener.ora修改完成后,需重启监听:
$ lsnrctl stop
$ lsnrctl start
二、修改备库2(ruiadg3)归档模式
1.查看归档模式
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 7
Current log sequence 9
2.修改归档模式
若当前为非归档模式,需要修改为归档模式。方法如下:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.Total System Global Area 4999610368 bytes
Fixed Size 3721080 bytes
Variable Size 1090521224 bytes
Database Buffers 3892314112 bytes
Redo Buffers 13053952 bytes
Database mounted.
SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
三、设置主库(ruiadg1)为强制归档
SQL> alter database force logging;
因主库出现故障后,可能会遇到将备库2切换为主库的情况,所以这里把备库2设置为强制归档。
四、配置参数
说明:
ADG架构的日志传输方式有3种:ARCH方式,LGWR SYNC方式,LGWR ASYNC(默认)方式。
若要了解更多请移步《Oracle Data Guard详解》。这里我们配置ARCH方式。
1.简易版
修改主库(ruiadg1)参数
SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg2 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg3 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';
[1] /oradata/arch 目录的创建:
# cd /
# mkdir -p /oradata/arch
# chown oracle:oinstall /oradata/arch
修改备库1(ruiadg2)参数
SQL> alter system set fal_client=ruiadg2;SQL> alter system set fal_server='ruiadg1','ruiadg3';SQL>alter system set standby_archive_dest='/oradata/archlog';
修改备库2(ruiadg3)参数
SQL> alter system set fal_client=ruiadg3;SQL>alter system set fal_server='ruiadg1','ruiadg2';SQL>alter system set standby_archive_dest='/oradata/archlog';
2.完整版
配置完成上述的主备库参数,已经可以实现ADG的配置了。
但是为了便于ADG架构主备库的切换,最好将主备库参数配置如下:
修改主库(ruiadg1)参数
SQL> alter system set fal_client=ruiadg1;SQL>alter system set fal_server='ruiadg2','ruiadg3';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg2 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg3 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';
修改备库1(ruiadg2)参数
SQL> alter system set fal_client=ruiadg2;SQL> alter system set fal_server='ruiadg1','ruiadg3';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg1 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg3 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';
修改备库2(ruiadg3)参数
SQL> alter system set fal_client=ruiadg3;SQL> alter system set fal_server='ruiadg1','ruiadg2';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg1 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg2 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';
补充:
若要设置为其他两种日志传输方式,只需修改log_archive_dest_2参数的值。LGWR SYNC:
主库(ruiadg1)
SQL> alter system set log_archive_dest_2='service=ruiadg2 LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg ';
备库(ruiadg2)
SQL> alter system set log_archive_dest_2=‘service=ruiadg1 LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;LGWR ASYNC:
主库(ruiadg1)
SQL> alter system set log_archive_dest_2=‘service=ruiadg2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg ';
备库(ruiadg2)
SQL> alter system set log_archive_dest_2=‘service=ruiadg1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;由于LGWR ASYNC 是默认方式,故可简写如下:
主库(ruiadg1)
SQL> alter system set log_archive_dest_2=‘service=ruiadg2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg ';
备库(ruiadg2)
SQL> alter system set log_archive_dest_2=‘service=ruiadg1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;
五、数据同步
在备库(ruiadg2,ruiadg3)执行
--将备库启动至nomount状态
SQL> shutdown immediateDatabase closed.
Database dismounted.
ORACLE instance shut down.SQL> startup nomountORACLE instance started.Total System Global Area 4999610368 bytes
Fixed Size 3721080 bytes
Variable Size 1090521224 bytes
Database Buffers 3892314112 bytes
Redo Buffers 13053952 bytes--从主库同步数据至备库
$ rman target sys/rui@ruiadg1 auxiliary sys/rui@ruiadg2 --前面是主库,后面是辅库Recovery Manager: Release 12.1.0.2.0 - Production on Thu Aug 26 14:23:52 2021Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.connected to target database: RUIADG (DBID=3080921516)
connected to auxiliary database: RUIADG (not mounted)RMAN> DUPLICATE TARGET DATABASE for standby FROM ACTIVE DATABASE nofilenamecheck;Recovery Manager: Release 12.1.0.2.0 - Production on Thu Aug 26 14:23:52 2021Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.connected to target database: RUIADG (DBID=3080921516)
connected to auxiliary database: RUIADG (not mounted)RMAN> DUPLICATE TARGET DATABASE for standby FROM ACTIVE DATABASE nofilenamecheck;Starting Duplicate Db at 26-AUG-21
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=249 device type=DISKcontents of Memory Script:
{backup as copy reusetargetfile '/oracle/app/product/12.1.0/dbhome_1/dbs/orapwruiadg' auxiliary format'/oracle/app/product/12.1.0/dbhome_1/dbs/orapwruiadg' ;
}
executing Memory ScriptStarting backup at 26-AUG-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=26 device type=DISK
Finished backup at 26-AUG-21contents of Memory Script:
{restore clone from service 'ruiadg1' standby controlfile;
}
executing Memory ScriptStarting restore at 26-AUG-21
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oracle/app/oradata/ruiadg/control01.ctl
output file name=/oracle/app/fast_recovery_area/ruiadg/control02.ctl
Finished restore at 26-AUG-21contents of Memory Script:
{sql clone 'alter database mount standby database';
}
executing Memory Scriptsql statement: alter database mount standby databasecontents of Memory Script:
{set newname for tempfile 1 to"/oracle/app/oradata/ruiadg/temp01.dbf";switch clone tempfile all;set newname for datafile 1 to"/oracle/app/oradata/ruiadg/system01.dbf";set newname for datafile 3 to"/oracle/app/oradata/ruiadg/sysaux01.dbf";set newname for datafile 4 to"/oracle/app/oradata/ruiadg/undotbs01.dbf";set newname for datafile 6 to"/oracle/app/oradata/ruiadg/users01.dbf";restorefrom service 'ruiadg1' clone database;sql 'alter system archive log current';
}
executing Memory Scriptexecuting command: SET NEWNAMErenamed tempfile 1 to /oracle/app/oradata/ruiadg/temp01.dbf in control fileexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEStarting restore at 26-AUG-21
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /oracle/app/oradata/ruiadg/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /oracle/app/oradata/ruiadg/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /oracle/app/oradata/ruiadg/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /oracle/app/oradata/ruiadg/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 26-AUG-21sql statement: alter system archive log currentcontents of Memory Script:
{switch clone datafile all;
}
executing Memory Scriptdatafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/undotbs01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=4 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/users01.dbf
Finished Duplicate Db at 26-AUG-21RMAN>--启动备库
SQL> alter database open;Database altered.SQL> alter database recover managed standby database disconnect from session;Database altered.
命令摘要:
– 启动备库至nomount状态
SQL> shutdown immediate
SQL> startup nomount– 同步数据
$ rman target sys/rui@ruiadg1 auxiliary sys/rui@ruiadg2
RMAN> DUPLICATE TARGET DATABASE for standby FROM ACTIVE DATABASE nofilenamecheck;– 启动备库并应用日志
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session;
六、测试ADG有效性
1.在主库(ruiadg1)建表并插入数据
SQL> create table test1 (name varchar(20),age int);
SQL> insert into test1 values ('rui',22);
SQL> commit;
2.在主库手动切log
SQL> alter system switch logfile;
3.在备库(ruiadg2,ruiadg3)查看数据同步状况
select * from test1;
到这里,我们已经完成了一主一备ADG架构的搭建,是不是很开心?
上一篇:ADG架构搭建3 – 一主一备ADG主备切换
下一篇:ADG架构搭建5 – 一主两备ADG主备切换
ADG架构搭建4 -- 搭建一主两备ADG架构相关推荐
- ADG架构搭建5 -- 一主两备ADG主备切换
本文接该系列文章的上一篇:ADG架构搭建4 – 搭建一主两备ADG架构 前言 在<ADG架构搭建3 – 一主一备ADG主备切换>一文中,已经带领大家完成了一主一备ADG的主备切换,相信大家 ...
- Oracle dataguard一主两备环境搭建
Oracle dataguard一主两备环境搭建 测试环境说明: 主 库:Reahat 6.5 x64 + Oracle 11.2.0.3 x64 单机(IP:192.168.6.10 db) D ...
- ADG架构搭建3 -- 一主一备ADG主备切换
本文接该系列文章的上一篇:ADG架构搭建2 – 搭建一主一备ADG架构 前言 Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间 ...
- mysql一主两从读写分离搭建
搭建一主两从的架构是为了将数据库的读写操作分离开来,master数据库写数据,slave数据库查数据,以此来提升数据库的性能,一主两从的架构原理为主库接收到写入数据的请求后往数据库里写入数据,binl ...
- 一主多备几影响 oracle,Oracle 10g 一主多备的搭建技巧
在Oracle数据库环境中,一主一备是比较传统的使用方式,在灾难发生的时候,可以灵活的切换主备角色,依然可以保持服务的可访问性 在Oracle数据库环境中,一主一备是比较传统的使用方式,在灾难发生的时 ...
- linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 830 ...
- 基于 Docker 搭建 MySQL 一主两从复制
在Docker中搭建MySQL 一主两从复制 搭建环境 Centos 7.5 64位 MySQL 5.7.13 Docker 1.13.1 接下来,我们将会在一台服务器上安装docker,并使用doc ...
- Kubernetes集群环境搭建详细教程(一主两从)
Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...
- 如何搭建亿级社交信息分享社交平台架构
2019独角兽企业重金招聘Python工程师标准>>> 如何搭建亿级社交信息分享社交平台架构 架构 摘要如何搭建一个稳定.高并发的IM系统架构?怎样构建高并发即时通信系统?这个需求在 ...
最新文章
- HDU-1045-fire net
- MySQL explain
- Val编程-按键响应模式
- 第一章导言的笔记与思考
- mysql的执行效率_数据库执行效率的对比测试
- Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
- 帝国CMS7.0 7.2 7.5微信登录插件 UTF-8版本
- 学习template算法(template matching)以及改进(二)
- C/C++ debug(三)
- [导入]VB程序中处理随机事件
- 点云的无序性_三维点云分类与分割-PointNet
- Hilbert变换及谱分析
- X5平台开发的 团队看板 部分代码
- 电镜的成像原理-透射电镜成像原理1
- 为什么好多人说win8不好用?
- 机器学习数学相关书籍推荐
- Android渠道包生成工具(支持V1、V2签名)
- 【Flutter 问题系列第 71 篇】Flutter 中 Uint8List 和 Image 之间的相互转换
- 专为风电筒叶片除冰研发的爬壁机器人
- 【FPGA创新设计竞赛——2022紫光同创杯】1、“基于 RISC-V 处理器的软硬件系统设计”赛题介绍