在 Google Cloud Compute Engine 上设置 Data Guard 观测器
根据您的高可用性要求,您可能需要自动在数据库之间执行故障切换。验证 Data Guard 部署后,您便可以选择在 Compute Engine 上设置 Data Guard 观测器来执行此操作。观测器是一个用于监控 Data Guard 配置以便在条件允许时启动自动故障切换的进程。
本指南介绍如何在观测器虚拟机 (VM) 上安装 Oracle 19c 数据库客户端,以及如何配置快速启动故障切换。
本指南中使用了以下示例:
数据库唯一名称 | 服务器主机名 | RAC 实例名称 | 角色 |
---|---|---|---|
DBDG_SITE1 | site1db2site1db1 | DBDG_SITE12DBDG_SITE11 | 主要 |
DBDG_SITE2 | site2db2site2db1 | DBDG_SITE22DBDG_SITE21 | 备用实例 |
安装 Oracle 数据库客户端软件
在 Compute Engine 上创建满足以下条件的虚拟机 (VM):
操作系统。Red Hat Enterprise Linux 7。
网络。具有一个子网并且该子网的防火墙规则允许从 Virtual Private Cloud 访问运行主数据库和备用数据库的裸金属解决方案主机。
存储空间。-- 至少为启动磁盘分配 20 GB 存储空间。
登录虚拟机并验证每个数据库集群的 SCAN 主机名是否均通过 DNS 进行了解析:
host DBDG_SITE1_SCAN_HOSTNAME host DBDG_SITE2_SCAN_HOSTNAME
如果主机名尚未解析,请将每个 SCAN 主机名的 IP 地址添加到虚拟机上的
/etc/hosts
文件中。将示例 IP 地址替换为每个集群的 IP 地址:# Site 1 SCAN Hosts 192.0.2.10 DBDG_SITE1_SCAN_HOSTNAME 192.0.2.11 DBDG_SITE1_SCAN_HOSTNAME 192.0.2.12 DBDG_SITE1_SCAN_HOSTNAME # Site 2 SCAN Hosts 198.51.100.10 DBDG_SITE2_SCAN_HOSTNAME 198.51.100.11 DBDG_SITE2_SCAN_HOSTNAME 198.51.100.12 DBDG_SITE2_SCAN_HOSTNAME
安装 Oracle 数据库 RPM。请仅安装软件。无需在观测器虚拟机上配置数据库。
Oracle 数据库 RPM 会在预定义目录中安装软件。将以下条目添加到
/home/oracle/.bash_profile
以将 Oracle 软件主目录添加到路径:cat >> /home/oracle/.bash_profile << EOL export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=\$PATH:\$ORACLE_HOME/bin EOL
在终端会话中获取 Oracle 环境变量:
source ~/.bash_profile
配置数据库连接
在
$ORACLE_HOME/network/admin/tsnames.ora
文件中配置 Oracle 网络设置:DBDG_SITE1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DBDG_SITE1) (UR=A) ) ) DBDG_SITE2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DBDG_SITE2) (UR=A) ) )
Oracle 数据库 12.2 版及更高版本支持在后台模式下运行观测器。为此,必须创建一个钱包,以向数据库进行无密码身份验证。以 Oracle 用户身份登录到观测器虚拟机,然后执行以下任务以创建钱包:
将以下条目添加到
$ORACLE_HOME/network/admin/sqlnet.ora
:WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /home/oracle/wallet)) ) SQLNET.WALLET_OVERRIDE = TRUE
在托管观测器的虚拟机上创建钱包目录:
mkdir /home/oracle/wallet
初始化钱包,然后在出现提示时提供钱包的密码:
mkstore -wrl /home/oracle/wallet -create
在钱包中为 Data Guard 配置中的每个数据库创建一个条目。
mkstore
命令将依次请求数据库的 SYS 密码和上一步中提供的钱包密码:mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
确认钱包是否包含 Data Guard 配置中每个数据库的凭据。
mkstore
的-listCredential
参数将请求钱包密码:mkstore -wrl /home/oracle/wallet -listCredential
以 Oracle 用户身份登录到观测器虚拟机,然后测试与主数据库和备用数据库的连接。使用钱包凭据通过 SQL*Plus 连接到主数据库和辅助数据库:
sqlplus /@DBDG_SITE1 as sysdba sqlplus /@DBDG_SITE2 as sysdba
如果钱包配置成功,
sqlplus
命令会直接登录到数据库,而不会要求您提供密码。
配置并启用快速启动故障切换
创建用于存储观测器配置和日志文件的目录:
mkdir /home/oracle/fsfo
使用钱包连接到主数据库上的 Data Guard 代理:
dgmgrl CONNECT /@DBDG_SITE1;
查看 Data Guard 状态以检查配置是否标记为
SUCCESS
:SHOW CONFIGURATION;
启用快速启动故障切换 (FSFO):
ENABLE FAST_START FAILOVER;
启用 FSFO 并不会使配置准备好进行自动故障切换。自动故障切换需要使用观测器。
启动 Data Guard 观测器:
START OBSERVER observer1 IN BACKGROUND FILE IS '/home/oracle/fsfo/observer1_DBDG.dat' LOGFILE IS '/home/oracle/fsfo/observer1_DBDG.log';
在单独的终端会话中,验证配置:
SHOW CONFIGURATION VERBOSE;
以下示例展示了
show configuration
命令的详细模式。如果配置状态为SUCCESS
,则表示设置已完成。Configuration - DBDG Protection Mode: MaxAvailability Members: DBDG_SITE1 - Primary database DBDG_SITE2 - Physical standby database (*) Fast-Start Failover target Properties: FastStartFailoverThreshold = '30' OperationTimeout = '30' TraceLevel = 'USER' FastStartFailoverLagLimit = '45' CommunicationTimeout = '180' ObserverReconnect = '0' FastStartFailoverAutoReinstate = 'TRUE' FastStartFailoverPmyShutdown = 'TRUE' BystandersFollowRoleChange = 'ALL' ObserverOverride = 'FALSE' ExternalDestination1 = '' ExternalDestination2 = '' PrimaryLostWriteAction = 'CONTINUE' ConfigurationWideServiceName = 'DBDG_CFG' Fast-Start Failover: Enabled in Potential Data Loss Mode Lag Limit: 45 seconds Threshold: 30 seconds Active Target: DBDG_SITE2 Potential Targets: "DBDG_SITE2" DBDG_SITE2 valid Observer: observer1 Shutdown Primary: TRUE Auto-reinstate: TRUE Observer Reconnect: (none) Observer Override: FALSE Configuration Status: SUCCESS