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

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux

W tym artykule przedstawiono użycie 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 wersji Oracle 12.1 lub nowszej.

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 Azure Files dla nośnika kopii zapasowych jest ekonomiczne i wydajne. Jednak w przypadku bardzo dużych baz danych 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ą adresu publicznego maszyny wirtualnej.

    ssh azureuser@<publicIpAddress>
    
  2. Przełącz się 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 dla przyszłych logów 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 szybkiego obszaru 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. Upewnij się, że 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 dziennika 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 do Azure Files

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

  1. Skonfiguruj 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 Azure Files

W tej sekcji utworzysz kopię zapasową bazy danych Oracle, aby Azure Files przy użyciu programu Oracle RMAN. Udziały plików platformy Azure są w pełni zarządzanymi udziałami 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łączenia buforowania danych udziału plików. Aby upewnić się, że oracle użytkownik jest właścicielem plików utworzonych w udziale, ustaw uid=oracle opcje i gid=oinstall .

Skonfiguruj konto magazynu:

  1. W 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ź oracbkup1.
    3. Upewnij się, że 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 opcję Duże udziały plików na 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ź 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ą aprowizowane. Dlatego ustawienie limitu przydziału na 10 tebibajtów (TiB) nie spowoduje ponoszenia kosztów poza tym, czego używasz. 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 przycisk 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 uzyskanie 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 <Your Storage Account Key1> ciąg 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 do 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 przy użyciu 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 programu Oracle RMAN, aby utworzyć pełną kopię zapasową dzienników bazy danych i archiwum. Następnie zapisujesz kopię zapasową jako kopię zapasową ustawioną na zainstalowany wcześniej udział plików platformy Azure.

  1. Skonfiguruj funkcję RMAN, aby utworzyć kopię zapasową punktu instalacji 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 Azure Files cele dotyczące skalowalności i wydajności.

    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 Azure Files. Ponieważ przechowujesz kopie zapasowe w Azure Files, możesz uzyskać do nich dostęp z innych maszyn wirtualnych, jeśli musisz sklonować bazę danych.

Chociaż korzystanie z funkcji RMAN i Azure Files kopii zapasowej bazy danych ma wiele zalet, czas tworzenia kopii zapasowej i przywracania jest połączony z rozmiarem bazy danych. W przypadku bardzo 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 pomocą 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 Database, dzięki czemu można uzyskiwać 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 ukoń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 maszyny wirtualnej