Некоторые теоретические вопросы по standby

dbstalker, 12 июня

Есть у меня база данных, которую в рабочее время остановить никак нельзя, информация обновляется практически постоянно, информация очень важная. Никакие потери не будут мне прощены. Пришлось обратить свой взор к STANDBY.

Ответам на эти вопросы и некоторым нюансам standby посвящена эта статья.

После того, как база данных создана, главной задачей для администраторов является сохранение информации, которая находится на сервере. Для этого зачастую используют холодное резервирование (пользователи не работают, службы погашены, копируются контрольный файл и файлы данных). Минусы такого способа:

  • Пользователи не могут работать с базой во время резервирования
  • Можно потерять информацию, введенную после последнего резервирования.

Практически такими же недостатками обладает логическое резервирование: использование утилит экспорта, импорта. Поэтому весьма важно в некоторых технологических системах использовать возможность восстановления информации без потерь. Это технология standby.

База данных Standby - это метод горячего резервирования базы данных (поддержка дубликата на удаленном хосте) для обеспечения непрерывного доступа к данным в случае сбоя первичной базы данных.

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

Рассмотрим основные принципы, на которых базируется этот метод резервирования.

Все изменения в базе данных записываются как в файлы данных (datafiles), так и в журнал изменений. Информации из журнала вполне достаточно для повторного внесения тех же самых изменений. Журнал хранится в файлах оперативных журналов (redo log files). По логике вещей, нужно сохранять datafiles и redo log files до того, как случится сбой. Но при возникновении сбоя, со времени последнего резервирования, скорее всего, произошло значительное число изменений. Поэтому, для того чтобы уменьшить время на восстановление datafiles, нужно постоянно накатывать изменения из журналов. Таким образом, база данных, где на сохраненные файлы данных постоянно производиться накат изменения, называется резервной базой данных (standby). Если возникнут проблемы с рабочей базы данных, то резервную БД можно перевести в рабочее состояние в достаточно короткий срок.

Особо необходимо отметить, что операционные системы на резервной и основной базе данных должны быть одинаковыми. Это связано с тем, что в разных ОС структуры файлов базы данных имеют отличия.

Резервная база данных создается специальной копией управляющего файла сформированного на первичной базе данных и на основе согласованной копии файлов данных первичной базы путем применения (наката) архивных журнальных файлов генерируемых основной базой данных. Поэтому необходимо, чтобы первичная база данных работала в режиме Archivelog. Передача redo log files не вызывает особой нагрузки на первичную базу данных, так как это работа фонового процесса (ARCn). К тому же задержки в работе сети, которая связывает резервную и первичную базы данных, никак не сказываются на передаче redo log files - вся необходимая информации обязательно будет передана.

Основные замечания

  • Резервная база данных и первичная база данных должны находиться на физически разных машинах для защиты от аппаратного сбоя.
  • Резервная база данных обычно находиться в монтированном (mount) состоянии и в режиме восстановления (когда архивные файлы журнализации получаются от первичной базы данных и накатываются). Этот процесс может быть автоматизирован путем использования managed recovery режима. Резервная база данных должна пребывать в managed recovery режиме до тех пор, пока она не будет нужна. Это особенно важно, если первичная база данных создает большое количество redo logs, из-за чего много архивных файлов журнализации должны быть переданы и накатаны на резервную базу данных.
  • Резервная база данных может быть открыта в режиме «только чтение», используя команду ALTER DATABASE OPEN READ ONLY. То есть, запросы могут быть выполнены на резервной базе данных в режиме «только чтение», но активные команды DML не выполняются. Когда пользователи выполнили необходимые запросы, резервная база данных может быть, затем возвращена в режим восстановления. Для этого останавливают базу данных, монтируют, используя команды STARTUP NOMOUNT и ALTER DATABASE MOUNT STANDBY DATABASE.
  • Резервная база данных становится первичной базой данных после шага, который известен как активизация. Все пользователи должны затем подключать к новой первичной базе данных, пока проблема, вызвавшая сбой на другой машине будет решена. Сбойная база данных может быть, затем установлена как новая резервная база данных.
  • Если current (online) redo logs не может быть передан, прежде чем резервная база будет активизирована, тогда на standby данные могут быть потерены.
  • Важно, чтобы были накатаны все необходимые redo log files на резервную базу данных перед активизацией, поскольку они не могут быть применены после активизации standby (при активации выполняется resetlogs).
  • На основной базе данных можно добавлять и удалять оперативные файлы журнализации и это никак не скажется на резервной.
  • Если на основном сервере дополнительная thread is enabled, то нужно пересоздать управляющий файл на standby.
  • Если на основном сервере выполнено ALTER DATABASE CLEAR UNARCHIVED LOGFILE или ALTER DATABASE OPEN RESETLOGS, то standby не может быть корректно поддержан, потому что не будет необходимых archivelogs для продолжения восстановления.
  • Если Вы делаете ALTER DATABASE CREATE CONTROLFILE на первичном сервере, Вы должны также должны создать новый управляющий файл для резерва. Сначала нужно остановить standby. Затем сделайте ALTER DATABASE ARCHIVE LOG CURRENT на основном сервере, скопируйте файлы на резервный сервер. Затем standby выполните STARTUP NOMOUNT, затем ALTER DATABASE MOUNT STANDBY DATABASE. Наконец, RECOVER STANDBY DATABASE.
  • Удаленная резервная база данных требует непрерывной связи с основным сервером, резервный сервер должен быть смонтирован как standby, резервная база может быть открыта только в режиме READ ONLY, а также в постоянном режиме восстановления или ручном. Если между резервным и первичным серверами связь была разорвана, то ее нужно переустановить.
 

Новый комментарий

Я не спамер: введите суму 8+0



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Печь булерьян в дом
21 сентября, 1 ответа
Как Открыть Футбольную Школу
20 сентября, 1 ответа
IP телефония
20 сентября, 1 ответа