Резервное копирование и восстановление базы данных 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 Database, выполнив действия, описанные в разделе Создание экземпляра Базы данных 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 переменную в oracleBASHRC-файл пользователя для будущих входов с помощью следующей команды:

    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 тбибайт (ТиБ) не приведет к затратам, превышающим используемые. Если для стратегии резервного копирования требуется больше места, задайте квоту на соответствующий уровень, чтобы хранить все резервные копии.

    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
    

    Если появляется сообщение об ошибке, аналогичное приведенному в следующем примере, возможно, пакет 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. Этот механизм использует snapshot технологию для быстрого резервного копирования независимо от размера базы данных. Интеграция с хранилищем Служб восстановления предоставляет облачное хранилище резервных копий Oracle Database, поэтому вы можете получить к ним доступ из других виртуальных машин и других регионов 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 для развертывания виртуальных машин