Процедура резервного копирования Oracle RAC

У нас есть база данных Oracle 11gR2 RAC на двух узлах. У нас также есть скрипт резервного копирования RMAN, который отлично работает, используя базу данных каталога восстановления, которая находится в городе в 20 км от центра обработки данных. Сценарий резервного копирования базы данных работает нормально и запускается из задания crontab или из Oracle dbconsole (сейчас он работает из crontab). Процедура восстановления проверена и все работает правильно.

Проблема в том, что скрипт запускается с первого узла в кластере, и если узел выключен, резервное копирование не может быть запущено. Как мы можем гарантировать, что у нашего скрипта есть резервная версия резервной копии? Мы также попытались выполнить резервное копирование через dbconsole, но это работает только в том случае, если был запущен узел, с которого запускается задание.

По сути, вопрос заключается в том, "Как обеспечить работу нашего резервного копирования независимо от того, активны ли оба узла".

2 ответа

В простом, хорошо написанном сценарии RMAN нет ничего, что могло бы помешать его использованию в другом экземпляре той же базы данных, поэтому я полагаю, что на самом деле вопрос заключается в том, чтобы избавиться от единственной точки отказа (SPOF) от вызова такого Сценарий RMAN.

С планированием crontab, чтобы избежать SPOF, вы должны иметь два (или более) crontabs.

Грубый способ заключается в том, чтобы всегда выполнять резервное копирование на каждом узле, но это тратит время и ресурсы.

Лучшее решение состоит в том, чтобы иметь собственный сценарий, который всегда выполняет резервное копирование на первом узле, а на втором узле - только когда он обнаруживает через crsstat, что первый узел находится в автономном режиме.

Если вы хорошо разбираетесь в сценариях, я бы устроил это так (простите за псевдокод):

this_host = hostname -s
alphabetical_good_hosts = ` crsstat -t | grep 'inst *ONLINE *ONLINE' | cut the hostname | sort `
if this_host != first_element_of( alphabetical_good_hosts ) ; then
    echo Silently exiting, we are not the preferred node for backup
    exit 0
endif
rman target / catalog someone@rman

Подключитесь к базе данных через службу базы данных. Служба должна управляться пулом серверов, и оба узла должны быть частью пула. Тогда услуга всегда предлагается, и скрипт запускается, если какой-либо из двух узлов работает. Служба может быть определена с помощью команды srvctl.

Другие вопросы по тегам