在AWS FSx ONTAP中实现自动化Oracle HA/DR
NetApp解决方案工程团队
此解决方案提供了一个基于Ans得 的自动化工具包、用于在AWS中配置Oracle数据库高可用性和灾难恢复(High Availability and Disaster Recovery、HA/DR)、其中AWS FSx ONTAP用作Oracle数据库存储、EC2实例用作计算实例。
目的
此工具包可为部署在AWS云中且具有FSx ONTAP存储和EC2计算实例的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
-
安装可操作控制器前提条件。
ansible-playbook -i hosts requirements.yml
ansible-galaxy collection install -r collections/requirements.yml --force
-
设置目标EC2数据库实例。
ansible-playbook -i hosts ora_dr_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
-
在源数据库卷和目标数据库卷之间设置FSx ONTAP SnapMirror关系。
ansible-playbook -i hosts ontap_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
-
通过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
-
通过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
-
在目标EC2数据库实例上运行故障转移并恢复Oracle数据库—测试和验证HA/DR配置。
ansible-playbook -i hosts ora_recovery.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
-
在故障转移测试后运行重新同步—在复制模式下重新建立数据库卷SnapMirror关系。
ansible-playbook -i hosts ontap_ora_resync.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
从何处查找追加信息
要了解有关NetApp 解决方案 自动化的详细信息、请查看以下网站 "NetApp 解决方案自动化"