Поделиться через


Резервное копирование и восстановление базы данных Oracle на виртуальной машине Linux Azure с помощью Файлы Azure

Область применения: ✔️ виртуальные машины Linux

В этой статье показано использование Файлы Azure в качестве носителя для резервного копирования и восстановления базы данных Oracle, работающей на виртуальной машине Azure. Действия, описанные в этой статье, были протестированы против Oracle 12.1 и более поздних версий.

В этой статье вы используете Oracle диспетчер восстановления (RMAN) для резервного копирования базы данных в общую папку Azure, подключенную к виртуальной машине с помощью протокола SMB. Использование Файлы Azure для носителей резервного копирования является экономически эффективным и эффективным. Однако для больших баз данных Azure Backup обеспечивает лучшее решение.

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для выполнения резервного копирования и восстановления сначала нужно создать виртуальную машину Linux с установленным экземпляром Oracle Database. Рекомендуется использовать Oracle 12.x или более поздней версии.

  • Создайте экземпляр Базы данных Oracle, выполнив действия по созданию экземпляра Базы данных Oracle на виртуальной машине Azure.

Подготовка среды базы данных

  1. Используйте следующую команду для создания сеанса Secure Shell (SSH) с виртуальной машиной. Замените <publicIpAddress> значением общедоступного адреса виртуальной машины.

    ssh azureuser@<publicIpAddress>
    
  2. Переключитесь на роль пользователя root (привилегированного):

    sudo su -
    
  3. oracle Добавьте пользователя в файл /etc/sudoers:

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. На этом шаге предполагается, что у вас есть экземпляр Oracle (тест), работающий на виртуальной машине с именем vmoracle19c.

    Переключитесь на пользователя oracle.

    sudo su - oracle
    
  5. Перед подключением задайте переменную ORACLE_SIDсреды:

    export ORACLE_SID=test;
    

    Вы также должны добавить ORACLE_SID переменную в oracle bashrc-файл пользователя для будущих входов с помощью следующей команды:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. Запустите прослушиватель Oracle, если он еще не запущен:

    lsnrctl start
    

    Результат должен выглядеть следующим образом:

    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. Создайте расположение для области быстрого восстановления:

    mkdir /u02/fast_recovery_area
    
  8. Выполните подключение к базе данных:

    sqlplus / as sysdba
    
  9. Запустите базу данных, если она еще не запущена:

    SQL> startup
    
  10. Задайте переменные среды базы данных для области быстрого восстановления:

    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. Убедитесь, что база данных находится в ARCHIVELOG режиме, чтобы включить оперативное резервное копирование.

    Проверьте состояние архива журнала:

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

    Если архив журнала находится в режиме, выполните следующие команды в NOARCHIVELOG SQL Plus:

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. Создайте таблицу для проверки операций резервного копирования и восстановления:

    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
    

Резервное копирование в службе "Файлы Azure"

Чтобы создать резервную копию в службе "Файлы Azure", выполните следующие действия:

  1. Настройте службу Файлы Azure.
  2. Подключите общую папку Azure к своей виртуальной машине.
  3. Архивируйте базу данных.
  4. Восстановите и возобновите работу базы данных.

Настройка службы Файлы Azure

В этом разделе описано, как создать резервную копию базы данных Oracle в Файлы Azure с помощью Oracle RMAN. Общие папки Azure — это полностью управляемые файловые ресурсы, которые остаются в облаке. Доступ к ним можно получить с помощью протокола SMB или протокола сетевой файловой системы (NFS).

В следующих процедурах описано, как создать общую папку, использующую протокол SMB для подключения к виртуальной машине. Сведения о подключении с помощью NFS см. в статье "Создание общей папки NFS".

При подключении общей папки Azure используйте cache=none параметр отключения кэширования данных общей папки. Чтобы убедиться, что oracle пользователь владеет файлами, созданными в общей папке, задайте uid=oracle параметры и gid=oinstall параметры.

Настройте учетную запись хранения:

  1. В портал Azure выберите +Создать ресурс, а затем найдите и выберите учетную запись хранения.

    Снимок экрана: место создания ресурса и выбор учетной записи хранения.

  2. На панели создания учетной записи хранения:

    1. Для группы ресурсов выберите существующую группу ресурсов rg-oracle.
    2. Для имени учетной записи хранения введите oracbkup1.
    3. Убедитесь, что расположение задано в том же регионе, что и все остальные ресурсы в группе ресурсов.
    4. Задайте для производительности значение "Стандартный".
    5. Для типа учетной записи выберите StorageV2 (общего назначения версии 2).
    6. В поле Репликация выберите Локально избыточное хранилище (LRS).

    Снимок экрана: основные сведения о создании учетной записи хранения.

  3. Выберите вкладку "Дополнительно". В разделе Файлы Azure установите для общих папок значение "Включено". Выберите Просмотр и создание, а затем нажмите кнопку Создать.

    Снимок экрана: вкладка для включения больших общих папок.

  4. При создании учетной записи хранения перейдите к ресурсу и выберите общие папки.

    Снимок экрана: место выбора общих папок для ресурса.

  5. Выберите +Файловый ресурс, а затем на панели "Создать общую папку":

    1. В поле "Имя" введите orabkup1.

    2. Задайте для квоты значение 10240 гибибайт (ГиБ).

      Квота отражает верхнюю границу роста файлового ресурса. Так как вы используете стандартное хранилище в этом примере, ресурсы оплачиваются по мере использования и не подготавливаются. Установка квоты на 10 tebibytes (TiB) не взимает затраты за рамки используемого. Если для стратегии резервного копирования требуется больше хранилища, задайте квоту на соответствующий уровень для хранения всех резервных копий.

    3. В разделе "Уровни" выберите "Оптимизированная транзакция".

    4. Нажмите кнопку создания.

    Снимок экрана: выбор для добавления новой общей папки.

  6. При создании общей папки выберите orabkup1 на панели параметров общей папки.

  7. Перейдите на вкладку "Подключение", чтобы открыть панель "Подключиться", а затем выберите вкладку Linux. Скопируйте предоставленные команды, чтобы подключить общую папку с помощью протокола SMB.

    Снимок экрана: панель для доступа к командам для подключения общей папки к компьютеру Linux.

Подключение общей папки Azure к виртуальной машине

  1. Создайте точку подключения:

    sudo mkdir /mnt/orabackup
    
  2. Настройте учетные данные:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. Выполните следующую команду. Замените <Your Storage Account Key1> ключ учетной записи хранения, полученный ранее.

    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. Измените разрешения в файле учетных данных:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. Добавьте подключение в файл /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. Выполните команды, чтобы подключить общую папку Azure с помощью протокола 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
    

    Если вы получите ошибку, аналогичную следующему примеру, пакет Common Internet File System (CIFS) может не быть установлен на узле Linux:

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

    Чтобы проверить, установлен ли пакет CIFS, выполните следующую команду:

    sudo rpm -qa|grep cifs-utils
    

    Если команда не возвращает выходные данные, установите пакет CIFS с помощью следующей команды. Затем выполните команду, чтобы подключить общую папку mount Azure.

    sudo yum install cifs-utils
    
  7. Убедитесь, что общая папка подключена правильно с помощью следующей команды:

    df -h
    

    Выходные данные должны выглядеть примерно так:

    $ 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
    

Создание резервной копии базы данных

В этом разделе вы используете Oracle RMAN для создания полной резервной копии базы данных и архивных журналов. Затем вы записываете резервную копию в качестве резервной копии в общую папку Azure, подключенную ранее.

  1. Настройте RMAN для резервного копирования в точке подключения службы "Файлы Azure":

    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. В этом примере вы ограничиваете размер частей резервного копирования RMAN до 4 ГиБ. Однако значение резервного копирования maxpiecesize RMAN может превышать 4 ТиБ, что является ограничением размера файла для стандартных файловых ресурсов Azure и общих папок уровня "Премиум". Дополнительные сведения см. в статье Целевые показатели масштабируемости и производительности Файлов Azure.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. Убедитесь в правильности сведений, внесенных при изменении конфигурации:

    RMAN> show all;
    
  4. Выполнение резервного копирования. Следующая команда принимает полную резервную копию базы данных, включая архивные файлы журналов, в качестве резервного набора в сжатом формате:

    RMAN> backup as compressed backupset database plus archivelog;
    

Резервное копирование базы данных в Сети с помощью Oracle RMAN с резервной копией, расположенной в Файлы Azure. Так как вы храните резервные копии в Файлы Azure, вы можете получить доступ к ним из других виртуальных машин, если необходимо клонировать базу данных.

Использование RMAN и Файлы Azure для резервного копирования базы данных имеет множество преимуществ. Время резервного копирования и восстановления связано с размером базы данных. Для больших баз данных эти операции могут занять значительное время.

Альтернативой является использование резервных копий виртуальных машин, согласованных с приложениями, с помощью Azure Backup. Этот механизм использует технологию моментальных снимков для быстрого резервного копирования независимо от размера базы данных. Интеграция с хранилищем служб восстановления предоставляет облачное хранилище резервных копий Базы данных Oracle, чтобы получить доступ к ним из других виртуальных машин и других регионов Azure.

Восстановление базы данных

  1. Завершите работу экземпляра Oracle:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Удалить файлы данных

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. В следующих командах используется RMAN для восстановления отсутствующих файлов с данными и восстановления базы данных:

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. Убедитесь, что содержимое базы данных полностью восстановлено:

    RMAN> SELECT * FROM scott.scott_table;
    

Теперь завершено резервное копирование и восстановление базы данных Oracle Database 19c на виртуальной машине Linux Azure.

Удалите виртуальную машину

Вы можете удалить ставшие ненужными группу ресурсов, виртуальную машину и все связанные с ней ресурсы, использовав следующую команду:

az group delete --name rg-oracle

Следующие шаги

Создание высокодоступных виртуальных машин

Ознакомьтесь с примерами Azure CLI для развертывания виртуальных машин