Резервное копирование и восстановление базы данных 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.
Подготовка среды базы данных
Используйте следующую команду для создания сеанса Secure Shell (SSH) с виртуальной машиной. Замените
<publicIpAddress>
значением общедоступного адреса виртуальной машины.ssh azureuser@<publicIpAddress>
Переключитесь на роль пользователя root (привилегированного):
sudo su -
oracle
Добавьте пользователя в файл /etc/sudoers:echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
На этом шаге предполагается, что у вас есть экземпляр Oracle (тест), работающий на виртуальной машине с именем vmoracle19c.
Переключитесь на пользователя
oracle
.sudo su - oracle
Перед подключением задайте переменную
ORACLE_SID
среды:export ORACLE_SID=test;
Вы также должны добавить
ORACLE_SID
переменную вoracle
bashrc-файл пользователя для будущих входов с помощью следующей команды:echo "export ORACLE_SID=test" >> ~oracle/.bashrc
Запустите прослушиватель 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
Создайте расположение для области быстрого восстановления:
mkdir /u02/fast_recovery_area
Выполните подключение к базе данных:
sqlplus / as sysdba
Запустите базу данных, если она еще не запущена:
SQL> startup
Задайте переменные среды базы данных для области быстрого восстановления:
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;
Убедитесь, что база данных находится в
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;
Создайте таблицу для проверки операций резервного копирования и восстановления:
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", выполните следующие действия:
- Настройте службу Файлы Azure.
- Подключите общую папку Azure к своей виртуальной машине.
- Архивируйте базу данных.
- Восстановите и возобновите работу базы данных.
Настройка службы Файлы Azure
В этом разделе описано, как создать резервную копию базы данных Oracle в Файлы Azure с помощью Oracle RMAN. Общие папки Azure — это полностью управляемые файловые ресурсы, которые остаются в облаке. Доступ к ним можно получить с помощью протокола SMB или протокола сетевой файловой системы (NFS).
В следующих процедурах описано, как создать общую папку, использующую протокол SMB для подключения к виртуальной машине. Сведения о подключении с помощью NFS см. в статье "Создание общей папки NFS".
При подключении общей папки Azure используйте cache=none
параметр отключения кэширования данных общей папки. Чтобы убедиться, что oracle
пользователь владеет файлами, созданными в общей папке, задайте uid=oracle
параметры и gid=oinstall
параметры.
Настройте учетную запись хранения:
В портал Azure выберите +Создать ресурс, а затем найдите и выберите учетную запись хранения.
На панели создания учетной записи хранения:
- Для группы ресурсов выберите существующую группу ресурсов rg-oracle.
- Для имени учетной записи хранения введите oracbkup1.
- Убедитесь, что расположение задано в том же регионе, что и все остальные ресурсы в группе ресурсов.
- Задайте для производительности значение "Стандартный".
- Для типа учетной записи выберите StorageV2 (общего назначения версии 2).
- В поле Репликация выберите Локально избыточное хранилище (LRS).
Выберите вкладку "Дополнительно". В разделе Файлы Azure установите для общих папок значение "Включено". Выберите Просмотр и создание, а затем нажмите кнопку Создать.
При создании учетной записи хранения перейдите к ресурсу и выберите общие папки.
Выберите +Файловый ресурс, а затем на панели "Создать общую папку":
В поле "Имя" введите orabkup1.
Задайте для квоты значение 10240 гибибайт (ГиБ).
Квота отражает верхнюю границу роста файлового ресурса. Так как вы используете стандартное хранилище в этом примере, ресурсы оплачиваются по мере использования и не подготавливаются. Установка квоты на 10 tebibytes (TiB) не взимает затраты за рамки используемого. Если для стратегии резервного копирования требуется больше хранилища, задайте квоту на соответствующий уровень для хранения всех резервных копий.
В разделе "Уровни" выберите "Оптимизированная транзакция".
Нажмите кнопку создания.
При создании общей папки выберите orabkup1 на панели параметров общей папки.
Перейдите на вкладку "Подключение", чтобы открыть панель "Подключиться", а затем выберите вкладку Linux. Скопируйте предоставленные команды, чтобы подключить общую папку с помощью протокола SMB.
Подключение общей папки Azure к виртуальной машине
Создайте точку подключения:
sudo mkdir /mnt/orabackup
Настройте учетные данные:
if [ ! -d "/etc/smbcredentials" ]; then sudo mkdir /etc/smbcredentials fi
Выполните следующую команду. Замените
<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
Измените разрешения в файле учетных данных:
sudo chmod 600 /etc/smbcredentials/orabackup1.cred
Добавьте подключение в файл /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'
Выполните команды, чтобы подключить общую папку 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
Убедитесь, что общая папка подключена правильно с помощью следующей команды:
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, подключенную ранее.
Настройте 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';
В этом примере вы ограничиваете размер частей резервного копирования RMAN до 4 ГиБ. Однако значение резервного копирования
maxpiecesize
RMAN может превышать 4 ТиБ, что является ограничением размера файла для стандартных файловых ресурсов Azure и общих папок уровня "Премиум". Дополнительные сведения см. в статье Целевые показатели масштабируемости и производительности Файлов Azure.RMAN> configure channel device type disk maxpiecesize 4000G;
Убедитесь в правильности сведений, внесенных при изменении конфигурации:
RMAN> show all;
Выполнение резервного копирования. Следующая команда принимает полную резервную копию базы данных, включая архивные файлы журналов, в качестве резервного набора в сжатом формате:
RMAN> backup as compressed backupset database plus archivelog;
Резервное копирование базы данных в Сети с помощью Oracle RMAN с резервной копией, расположенной в Файлы Azure. Так как вы храните резервные копии в Файлы Azure, вы можете получить доступ к ним из других виртуальных машин, если необходимо клонировать базу данных.
Использование RMAN и Файлы Azure для резервного копирования базы данных имеет множество преимуществ. Время резервного копирования и восстановления связано с размером базы данных. Для больших баз данных эти операции могут занять значительное время.
Альтернативой является использование резервных копий виртуальных машин, согласованных с приложениями, с помощью Azure Backup. Этот механизм использует технологию моментальных снимков для быстрого резервного копирования независимо от размера базы данных. Интеграция с хранилищем служб восстановления предоставляет облачное хранилище резервных копий Базы данных Oracle, чтобы получить доступ к ним из других виртуальных машин и других регионов Azure.
Восстановление базы данных
Завершите работу экземпляра Oracle:
sqlplus / as sysdba SQL> shutdown abort ORACLE instance shut down.
Удалить файлы данных
cd /u02/oradata/TEST rm -f *.dbf
В следующих командах используется RMAN для восстановления отсутствующих файлов с данными и восстановления базы данных:
rman target / RMAN> startup mount; RMAN> restore database; RMAN> recover database; RMAN> alter database open;
Убедитесь, что содержимое базы данных полностью восстановлено:
RMAN> SELECT * FROM scott.scott_table;
Теперь завершено резервное копирование и восстановление базы данных Oracle Database 19c на виртуальной машине Linux Azure.
Удалите виртуальную машину
Вы можете удалить ставшие ненужными группу ресурсов, виртуальную машину и все связанные с ней ресурсы, использовав следующую команду:
az group delete --name rg-oracle
Следующие шаги
Создание высокодоступных виртуальных машин
Ознакомьтесь с примерами Azure CLI для развертывания виртуальных машин