Tworzenie kopii zapasowej i odzyskiwanie bazy danych Oracle Database na maszynie wirtualnej z systemem Linux platformy Azure przy użyciu usługi Azure Files

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

W tym artykule przedstawiono użycie usługi Azure Files jako nośnika do tworzenia kopii zapasowych i przywracania bazy danych Oracle działającej na maszynie wirtualnej platformy Azure. Kroki opisane w tym artykule zostały przetestowane pod kątem programu Oracle 12.1 lub nowszego.

W tym artykule użyjesz programu Oracle Recovery Manager (RMAN), aby utworzyć kopię zapasową bazy danych w udziale plików platformy Azure zainstalowanym na maszynie wirtualnej za pośrednictwem protokołu bloku komunikatów serwera (SMB). Korzystanie z usługi Azure Files na potrzeby nośnika kopii zapasowych jest opłacalne i wydajne. Jednak w przypadku dużych baz danych usługa Azure Backup zapewnia lepsze rozwiązanie.

Wymagania wstępne

Przygotowywanie środowiska bazy danych

  1. Aby utworzyć sesję protokołu Secure Shell (SSH) z maszyną wirtualną, użyj następującego polecenia. Zastąp <publicIpAddress> ciąg wartością publicznego adresu maszyny wirtualnej.

    ssh azureuser@<publicIpAddress>
    
  2. Przejdź do użytkownika głównego:

    sudo su -
    
  3. oracle Dodaj użytkownika do pliku /etc/sudoers:

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. W tym kroku założono, że masz wystąpienie Oracle (test) uruchomione na maszynie wirtualnej o nazwie vmoracle19c.

    Przełącz się do oracle użytkownika:

    sudo su - oracle
    
  5. Przed nawiązaniem połączenia ustaw zmienną środowiskową ORACLE_SID:

    export ORACLE_SID=test;
    

    Należy również dodać zmienną ORACLE_SID do oracle pliku bashrc użytkownika na potrzeby przyszłych logowania przy użyciu następującego polecenia:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. Uruchom odbiornik Oracle, jeśli jeszcze nie jest uruchomiony:

    lsnrctl start
    

    Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2020 03:23:49
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                18-SEP-2020 03:23:49
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    The listener supports no services
    The command completed successfully
    
  7. Utwórz lokalizację dla obszaru szybkiego odzyskiwania:

    mkdir /u02/fast_recovery_area
    
  8. Połącz się z bazą danych:

    sqlplus / as sysdba
    
  9. Uruchom bazę danych, jeśli nie jest jeszcze uruchomiona:

    SQL> startup
    
  10. Ustaw zmienne środowiskowe bazy danych dla obszaru szybkiego odzyskiwania:

    SQL> alter system set db_recovery_file_dest_size=4096M scope=both;
    SQL> alter system set db_recovery_file_dest='/u02/fast_recovery_area' scope=both;
    
  11. Sprawdź, czy baza danych jest w ARCHIVELOG trybie, aby włączyć kopie zapasowe online.

    Sprawdź stan archiwum dziennika:

    SQL> SELECT log_mode FROM v$database;
    
    LOG_MODE
    ------------
    NOARCHIVELOG
    

    Jeśli archiwum dzienników jest w NOARCHIVELOG trybie, uruchom następujące polecenia w programie SQL Plus:

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. Utwórz tabelę, aby przetestować operacje tworzenia kopii zapasowej i przywracania:

    SQL> create user scott identified by tiger quota 100M on users;
    SQL> grant create session, create table to scott;
    SQL> connect scott/tiger
    SQL> create table scott_table(col1 number, col2 varchar2(50));
    SQL> insert into scott_table VALUES(1,'Line 1');
    SQL> commit;
    SQL> quit
    

Tworzenie kopii zapasowej w usłudze Azure Files

Aby utworzyć kopię zapasową w usłudze Azure Files, wykonaj następujące kroki:

  1. Konfigurowanie usługi Azure Files.
  2. Zainstaluj udział plików platformy Azure na maszynie wirtualnej.
  3. Tworzenie kopii zapasowej bazy danych.
  4. Przywracanie i odzyskiwanie bazy danych.

Konfigurowanie usługi Azure Files

W tej sekcji utworzysz kopię zapasową bazy danych Oracle w usłudze Azure Files przy użyciu narzędzia Oracle RMAN. Udziały plików platformy Azure to w pełni zarządzane udziały plików, które pozostają w chmurze. Dostęp do nich można uzyskać przy użyciu protokołu SMB lub protokołu sieciowego systemu plików (NFS).

Poniższe procedury obejmują tworzenie udziału plików, który używa protokołu SMB do zainstalowania na maszynie wirtualnej. Aby uzyskać informacje o sposobie instalowania przy użyciu systemu plików NFS, zobacz Tworzenie udziału NFS.

Podczas instalowania udziału plików platformy Azure użyj cache=none opcji wyłączania buforowania danych udziału plików. Aby upewnić się, że użytkownik jest właścicielem oracle plików utworzonych w udziale, ustaw uid=oracle opcje i gid=oinstall .

Skonfiguruj konto magazynu:

  1. W witrynie Azure Portal wybierz pozycję + Utwórz zasób, a następnie wyszukaj i wybierz pozycję Konto magazynu.

    Zrzut ekranu pokazujący, gdzie utworzyć zasób i wybrać konto magazynu.

  2. W okienku Tworzenie konta magazynu:

    1. W obszarze Grupa zasobów wybierz istniejącą grupę zasobów rg-oracle.
    2. W polu Nazwa konta magazynu wprowadź wartość oracbkup1.
    3. Upewnij się, że opcja Lokalizacja jest ustawiona na ten sam region co wszystkie inne zasoby w grupie zasobów.
    4. Ustaw wartość Wydajność na Standardowa.
    5. W polu Rodzaj konta wybierz pozycję StorageV2 (ogólnego przeznaczenia w wersji 2).
    6. W obszarze Replikacja wybierz pozycję Magazyn lokalnie nadmiarowy (LRS).

    Zrzut ekranu przedstawiający podstawowe informacje dotyczące tworzenia konta magazynu.

  3. Wybierz kartę Zaawansowane. W obszarze Azure Files ustaw pozycję Duże udziały plików na wartość Włączone. Wybierz pozycję Przejrzyj i utwórz, a następnie wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający kartę włączania dużych udziałów plików.

  4. Po utworzeniu konta magazynu przejdź do zasobu i wybierz pozycję Udziały plików.

    Zrzut ekranu przedstawiający miejsce wybierania udziałów plików dla zasobu.

  5. Wybierz pozycję + Udział plików, a następnie na panelu Nowy udział plików:

    1. W polu Nazwa wprowadź wartość orabkup1.

    2. Ustaw wartość Limit przydziału na 10240 gibibajtów (GiB).

      Limit przydziału odzwierciedla górną granicę, do której może wzrosnąć udział plików. Ponieważ w tym przykładzie używasz magazynu standardowego, zasoby są płatne zgodnie z rzeczywistym użyciem i nie są aprowidowane. Ustawienie limitu przydziału na 10 tebibajtów (TiB) nie powoduje ponoszenia kosztów poza użyciem. Jeśli strategia tworzenia kopii zapasowych wymaga większej ilości miejsca do magazynowania, ustaw limit przydziału na odpowiedni poziom, aby przechowywać wszystkie kopie zapasowe.

    3. W obszarze Warstwy wybierz pozycję Zoptymalizowane pod kątem transakcji.

    4. Wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający opcje dodawania nowego udziału plików.

  6. Po utworzeniu udziału plików wybierz pozycję orabkup1 w okienku Ustawienia udziału plików.

  7. Wybierz kartę Połącz, aby otworzyć panel Połącz, a następnie wybierz kartę Linux. Skopiuj podane polecenia, aby zainstalować udział plików przy użyciu protokołu SMB.

    Zrzut ekranu przedstawiający panel umożliwiający uzyskiwanie dostępu do poleceń w celu połączenia udziału plików z komputerem z systemem Linux.

Instalowanie udziału plików platformy Azure na maszynie wirtualnej

  1. Utwórz punkt instalacji:

    sudo mkdir /mnt/orabackup
    
  2. Konfigurowanie poświadczeń:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. Uruchom następujące polecenie. Zastąp element <Your Storage Account Key1> kluczem konta magazynu pobranym wcześniej.

    if [ ! -f "/etc/smbcredentials/orabackup1.cred" ]; then
      sudo bash -c 'echo "username=orabackup1" >> /etc/smbcredentials/orabackup1.cred'
      sudo bash -c 'echo "password=<Your Storage Account Key1>" >> /etc/smbcredentials/orabackup1.cred'
    fi
    
  4. Zmień uprawnienia w pliku poświadczeń:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. Dodaj instalację do pliku /etc/fstab :

    sudo bash -c 'echo "//orabackup1.file.core.windows.net/orabackup /mnt/orabackup cifs nofail,vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall" >> /etc/fstab'
    
  6. Uruchom polecenia, aby zainstalować udział plików platformy Azure przy użyciu protokołu SMB:

    sudo mount -t cifs //orabackup1.file.core.windows.net/orabackup /mnt/orabackup -o vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall
    

    Jeśli wystąpi błąd podobny do poniższego przykładu, pakiet common Internet File System (CIFS) może nie zostać zainstalowany na hoście systemu Linux:

    mount: wrong fs type, bad option, bad superblock on //orabackup1.file.core.windows.net/orabackup
    

    Aby sprawdzić, czy pakiet CIFS jest zainstalowany, uruchom następujące polecenie:

    sudo rpm -qa|grep cifs-utils
    

    Jeśli polecenie nie zwraca żadnych danych wyjściowych, zainstaluj pakiet CIFS przy użyciu następującego polecenia. Następnie uruchom ponownie polecenie, mount aby zainstalować udział plików platformy Azure.

    sudo yum install cifs-utils
    
  7. Sprawdź, czy udział plików jest poprawnie zainstalowany, używając następującego polecenia:

    df -h
    

    Dane wyjściowe powinny wyglądać podobnie do tego przykładu:

    $ df -h
    Filesystem                                    Size  Used Avail Use% Mounted on
    devtmpfs                                      3.3G     0  3.3G   0% /dev
    tmpfs                                         3.3G     0  3.3G   0% /dev/shm
    tmpfs                                         3.3G   17M  3.3G   1% /run
    tmpfs                                         3.3G     0  3.3G   0% /sys/fs/cgroup
    /dev/sda2                                      30G  9.1G   19G  34% /
    /dev/sdc1                                      59G  2.7G   53G   5% /u02
    /dev/sda1                                     497M  199M  298M  41% /boot
    /dev/sda15                                    495M  9.7M  486M   2% /boot/efi
    tmpfs                                         671M     0  671M   0% /run/user/54321
    /dev/sdb1                                      14G  2.1G   11G  16% /mnt/resource
    tmpfs                                         671M     0  671M   0% /run/user/54322
    //orabackup1.file.core.windows.net/orabackup   10T     0   10T   0% /mnt/orabackup
    

Tworzenie kopii zapasowej bazy danych

W tej sekcji użyjesz narzędzia Oracle RMAN, aby utworzyć pełną kopię zapasową dzienników bazy danych i archiwum. Następnie zapisujesz kopię zapasową jako zestaw kopii zapasowych do zainstalowanego wcześniej udziału plików platformy Azure.

  1. Skonfiguruj narzędzie RMAN, aby utworzyć kopię zapasową punktu instalacji usługi Azure Files:

    rman target /
    RMAN> configure snapshot controlfile name to '/mnt/orabkup/snapcf_ev.f';
    RMAN> configure channel 1 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    RMAN> configure channel 2 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    
  2. W tym przykładzie ograniczasz rozmiar elementów kopii zapasowych RMAN do 4 GiB. Jednak wartość kopii zapasowej maxpiecesize RMAN może przejść do 4 TiB, czyli limit rozmiaru plików dla standardowych udziałów plików platformy Azure i udziałów plików w warstwie Premium. Aby uzyskać więcej informacji, zobacz Cele dotyczące skalowalności i wydajności usługi Azure Files.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. Potwierdź szczegóły zmiany konfiguracji:

    RMAN> show all;
    
  4. Uruchom kopię zapasową. Następujące polecenie wykonuje pełną kopię zapasową bazy danych, w tym pliki dziennika archiwum, jako zestaw kopii zapasowych w formacie skompresowanym:

    RMAN> backup as compressed backupset database plus archivelog;
    

Utworzono kopię zapasową bazy danych w trybie online przy użyciu narzędzia Oracle RMAN z kopią zapasową znajdującą się w usłudze Azure Files. Ponieważ przechowujesz kopie zapasowe w usłudze Azure Files, możesz uzyskać do nich dostęp z innych maszyn wirtualnych, jeśli musisz sklonować bazę danych.

Korzystanie z narzędzi RMAN i Azure Files na potrzeby tworzenia kopii zapasowej bazy danych ma wiele zalet. Czas tworzenia i przywracania kopii zapasowej jest połączony z rozmiarem bazy danych. W przypadku dużych baz danych te operacje mogą zająć dużo czasu.

Alternatywą jest użycie kopii zapasowych maszyn wirtualnych spójnych na poziomie aplikacji za pośrednictwem usługi Azure Backup. Ten mechanizm używa technologii migawek do wykonywania szybkich kopii zapasowych niezależnie od rozmiaru bazy danych. Integracja z magazynem usługi Recovery Services zapewnia magazyn w chmurze kopii zapasowych bazy danych Oracle, dzięki czemu można uzyskać do nich dostęp z innych maszyn wirtualnych i innych regionów świadczenia usługi Azure.

Przywracanie i odzyskiwanie bazy danych

  1. Zamknij wystąpienie Oracle:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Usuń pliki danych bazy danych:

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. Następujące polecenia używają narzędzia RMAN do przywrócenia brakujących plików danych i odzyskania bazy danych:

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. Sprawdź, czy zawartość bazy danych jest w pełni odzyskana:

    RMAN> SELECT * FROM scott.scott_table;
    

Tworzenie kopii zapasowej i odzyskiwanie bazy danych Oracle Database 19c na maszynie wirtualnej z systemem Linux platformy Azure zostało zakończone.

Usuwanie maszyny wirtualnej

Jeśli maszyna wirtualna nie jest już potrzebna, możesz użyć następującego polecenia, aby usunąć grupę zasobów, maszynę wirtualną i wszystkie powiązane zasoby:

az group delete --name rg-oracle

Następne kroki

Tworzenie maszyn wirtualnych o wysokiej dostępności

Eksplorowanie przykładów interfejsu wiersza polecenia platformy Azure na potrzeby wdrażania maszyn wirtualnych