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