Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

AWS FSX ONTAP 中的自動化 Oracle HA/DR

貢獻者

NetApp 解決方案工程團隊

目的

此工具套件可自動化設定及管理高可用度與災難恢復( HR/DR )環境的工作、以將部署於 AWS 雲端的 Oracle 資料庫與 ONTAP 儲存設備和 EC2 運算執行個體的 FSX 一起部署。

本解決方案可解決下列使用案例:

  • 設定 HA/DR 目標主機:核心組態、 Oracle 組態、以符合來源伺服器主機。

  • 設定 FSX ONTAP :叢集對等關係、虛擬伺服器對等關係、 Oracle Volume SnapMirror 關係設定、從來源到目標。

  • 透過 Snapshot 備份 Oracle 資料庫資料 - 從 crontab 執行

  • 透過 Snapshot 備份 Oracle 資料庫歸檔記錄 - 從 crontab 執行

  • 在 HA/DR 主機上執行容錯移轉與還原 - 測試並驗證 HA/DR 環境

  • 在容錯移轉測試後執行重新同步 - 在 HA/DR 模式中重新建立資料庫磁碟區 SnapMirror 關係

目標對象

本解決方案適用於下列人員:

  • 在 AWS 中設定 Oracle 資料庫以實現高可用度、資料保護和災難恢復的 DBA 。

  • 對 AWS 雲端中的儲存層級 Oracle HA/DR 解決方案感興趣的資料庫解決方案架構設計師。

  • 管理支援 Oracle 資料庫的 AWS FSX ONTAP 儲存設備的儲存管理員。

  • 喜歡在 AWS FSS/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

Ansible 教戰手冊是可變驅動的。其中包含範例通用變數檔案 FSx_vars_example.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

主機變數是在主機 _vars 目錄中定義、名稱為 { { host_name } } 。 yml 。其中包含主機變數檔 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.

DB 伺服器主機檔案組態

Details

AWS EC2 執行個體預設會使用 IP 位址來命名主機。如果您在主機檔案中使用不同的名稱來進行 Ansible 、請在 /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 控制器預先安裝。

    ansible-playbook -i hosts requirements.yml
    ansible-galaxy collection install -r collections/requirements.yml --force
  2. 設定目標 EC2 DB 執行個體。

    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. 透過來自 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. 透過來自 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 DB 執行個體上執行容錯移轉並恢復 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解決方案自動化"