Skip to main content
NetApp Solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

在AWS FSx ONTAP中实现自动化Oracle HA/DR

贡献者

NetApp解决方案工程团队

目的

此工具包可利用FSx for ONTAP存储和EC2计算实例、为部署在AWS云中的Oracle数据库自动执行设置和管理高可用性和灾难恢复(HighAvailability and Disaster Recovery、HR/DR)环境的任务。

此解决方案 可解决以下使用情形:

  • 设置HA/DR目标主机—内核配置、与源服务器主机匹配的Oracle配置。

  • 设置FSx ONTAP—集群对等、Vserver对等、Oracle卷SnapMirror关系设置(从源到目标)。

  • 通过Snapshot备份Oracle数据库数据—在crontab下执行

  • 通过Snapshot备份Oracle数据库归档日志—在crontab下执行

  • 在HA/DR主机上运行故障转移和恢复—测试和验证HA/DR环境

  • 在故障转移测试后运行重新同步—在HA/DR模式下重新建立数据库卷SnapMirror关系

audience

此解决方案 适用于以下人员:

  • 在AWS中设置Oracle数据库以实现高可用性、数据保护和灾难恢复的数据库开发人员。

  • 对AWS云中的存储级别Oracle HA/DR解决方案感兴趣的数据库解决方案架构师。

  • 负责管理支持Oracle数据库的AWS FSx ONTAP存储的存储管理员。

  • 希望在AWS FSX/EC2环境中为HA/DR建立Oracle数据库的应用程序所有者。

许可证

访问、下载、安装或使用此GitHub存储库中的内容即表示您同意中列出的许可条款 "许可证文件"

备注 在使用此GitHub存储库中的内容制作和/或共享任何衍生作品方面存在一些限制。在使用内容之前、请确保您已阅读许可条款。如果您不同意所有条款、请勿访问、下载或使用此存储库中的内容。

解决方案 部署

部署的前提条件

Details

部署需要满足以下前提条件。

Ansible v.2.10 and higher
ONTAP collection 21.19.1
Python 3
Python libraries:
  netapp-lib
  xmltodict
  jmespath
AWS FSx storage as is available
AWS EC2 Instance
  RHEL 7/8, Oracle Linux 7/8
  Network interfaces for NFS, public (internet) and optional management
  Existing Oracle environment on source, and the equivalent Linux operating system at the target

下载此工具包

Details
git clone https://github.com/NetApp/na_ora_hadr_failover_resync.git

全局变量配置

Details

可变的AnsablePlaybooks驱动。其中包括一个示例全局变量文件FSX_vars_exple.yml、用于演示典型配置。以下是主要注意事项:

ONTAP - retrieve FSx storage parameters using AWS FSx console for both source and target FSx clusters.
  cluster name: source/destination
  cluster management IP: source/destination
  inter-cluster IP: source/destination
  vserver name: source/destination
  vserver management IP: source/destination
  NFS lifs: source/destination
  cluster credentials: fsxadmin and vsadmin pwd to be updated in roles/ontap_setup/defaults/main.yml file
Oracle database volumes - they should have been created from AWS FSx console, volume naming should follow strictly with following standard:
  Oracle binary: {{ host_name }}_bin, generally one lun/volume
  Oracle data: {{ host_name }}_data, can be multiple luns/volume, add additional line for each additional lun/volume in variable such as {{ host_name }}_data_01, {{ host_name }}_data_02 ...
  Oracle log: {{ host_name }}_log, can be multiple luns/volume, add additional line for each additional lun/volume in variable such as {{ host_name }}_log_01, {{ host_name }}_log_02 ...
  host_name: as defined in hosts file in root directory, the code is written to be specifically matched up with host name defined in host file.
Linux and DB specific global variables - keep it as is.
  Enter redhat subscription if you have one, otherwise leave it black.

主机变量配置

Details

主机变量在名为{{host_name}}.yml的host_vars目录中定义。其中包括一个示例主机变量文件host_name.yml、用于演示典型配置。以下是主要注意事项:

Oracle - define host specific variables when deploying Oracle in multiple hosts concurrently
  ansible_host: IP address of database server host
  log_archive_mode: enable archive log archiving (true) or not (false)
  oracle_sid: Oracle instance identifier
  pdb: Oracle in a container configuration, name pdb_name string and number of pdbs (Oracle allows 3 pdbs free of multitenant license fee)
  listener_port: Oracle listener port, default 1521
  memory_limit: set Oracle SGA size, normally up to 75% RAM
  host_datastores_nfs: combining of all Oracle volumes (binary, data, and log) as defined in global vars file. If multi luns/volumes, keep exactly the same number of luns/volumes in host_var file
Linux - define host specific variables at Linux level
  hugepages_nr: set hugepage for large DB with large SGA for performance
  swap_blocks: add swap space to EC2 instance. If swap exist, it will be ignored.

数据库服务器主机文件配置

Details

默认情况下、AWS EC2实例使用IP地址命名主机。如果您在hosts文件中对Ansv可 使用不同的名称、请在/etc/hosts文件中为源服务器和目标服务器设置主机命名解析。下面是一个示例。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.30.15.96 db1
172.30.15.107 db2

执行操作手册-按顺序执行

Details
  1. 安装可操作控制器前提条件。

    ansible-playbook -i hosts requirements.yml
    ansible-galaxy collection install -r collections/requirements.yml --force
  2. 设置目标EC2数据库实例。

    ansible-playbook -i hosts ora_dr_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  3. 在源数据库卷和目标数据库卷之间设置FSx ONTAP SnapMirror关系。

    ansible-playbook -i hosts ontap_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  4. 通过Snapshot从crontab备份Oracle数据库数据卷。

    10 * * * * cd /home/admin/na_ora_hadr_failover_resync && /usr/bin/ansible-playbook -i hosts ora_replication_cg.yml -u ec2-user --private-key db1.pem -e @vars/fsx_vars.yml >> logs/snap_data_`date +"%Y-%m%d-%H%M%S"`.log 2>&1
  5. 通过Snapshot从crontab备份Oracle数据库归档日志卷。

    0,20,30,40,50 * * * * cd /home/admin/na_ora_hadr_failover_resync && /usr/bin/ansible-playbook -i hosts ora_replication_logs.yml -u ec2-user --private-key db1.pem -e @vars/fsx_vars.yml >> logs/snap_log_`date +"%Y-%m%d-%H%M%S"`.log 2>&1
  6. 在目标EC2数据库实例上运行故障转移并恢复Oracle数据库—测试和验证HA/DR配置。

    ansible-playbook -i hosts ora_recovery.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  7. 在故障转移测试后运行重新同步—在复制模式下重新建立数据库卷SnapMirror关系。

    ansible-playbook -i hosts ontap_ora_resync.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml

从何处查找追加信息

要了解有关NetApp 解决方案 自动化的详细信息、请查看以下网站 "NetApp 解决方案自动化"