Миграция на PostgreSQL для администратора учетной системы
Миграция на PostgreSQL меняет обслуживание учетной системы, резервное копирование и диагностику. Разбираем нагрузку, риски и требования к команде.

Переход учетной системы на PostgreSQL не убирает работу администратора. Он переносит ее из знакомой панели коммерческой СУБД в связку из SQL-представлений, конфигурационных файлов, средств операционной системы и выбранных вами инструментов резервного копирования и мониторинга. Лицензия перестает диктовать архитектуру, зато команда сама отвечает за то, что раньше входило в привычный комплект поставки или договор поддержки.
Для определенности я сравниваю PostgreSQL с типичной локальной установкой Microsoft SQL Server. Если у вас другая коммерческая СУБД, названия экранов и процедур будут иными, но проверка остается той же: кто обновляет сервер, где хранится история запросов, как восстанавливается база на выбранный момент и кому звонят ночью. Именно эти ответы показывают реальную цену миграции.
Меняется граница ответственности, а не только СУБД
Главное изменение для администратора состоит в том, что готовый набор решений превращается в архитектуру, которую нужно собрать и документировать. PostgreSQL поставляет сам сервер, системные представления, журналы, утилиты pg_dump, pg_restore, pg_basebackup и механизмы потоковой репликации. Он не выбирает за вас хранилище копий, диспетчер отказа, систему оповещений, срок хранения WAL и поставщика поддержки.
В коммерческой среде администратор часто наследует рекомендованный производителем путь: графическая консоль, агент заданий, планы обслуживания, фирменный мониторинг и единая линия поддержки. Это не значит, что такой путь всегда настроен хорошо. Он просто уже очерчен. В PostgreSQL свобода шире, поэтому две установки одной версии могут различаться по резервному инструменту, способу переключения реплики, сбору метрик и процедуре обновления.
До проектирования новой среды инвентаризируйте услуги, которые старая СУБД оказывала почти незаметно. Сюда входят задания агента, отправка уведомлений, связанные серверы, шифрование, управление сертификатами, история планов, аудит, очистка журналов и интеграция с корпоративной системой резервного копирования. Для каждого пункта решите, нужен ли он после перехода, чем будет заменен и кто проверит замену. Забытое ночное задание обмена обнаруживается не на приемочном тесте входа, а утром после первого рабочего дня.
У лицензии PostgreSQL есть практическое преимущество: официальный текст разрешает использовать, копировать, изменять и распространять программное обеспечение без платы и письменного соглашения при сохранении уведомлений об авторских правах. Но отсутствие платы за ядра процессора не означает нулевую стоимость базы. В смету переходят рабочие часы команды, тестовая среда, внешняя экспертиза, мониторинг, резервное хранилище и дежурство.
До решения о миграции составьте таблицу ответственности. Для каждой операции укажите владельца, окно выполнения, сигнал об ошибке и действие при сбое. Если напротив восстановления, переполнения диска или обновления минорной версии стоит только фамилия одного энтузиаста, система еще не готова к промышленной эксплуатации.
Повседневное обслуживание становится более явным
PostgreSQL требует не больше магических ритуалов, а больше понимания состояния таблиц, транзакций и дисков. Ежедневная работа обычно включает контроль подключений, блокировок, репликации, роста данных, WAL, журналов, резервных заданий и фоновой очистки. Многие проверки делаются SQL-запросами и метриками, а не через один интерфейс.
Администратору придется уверенно работать с postgresql.conf, pg_hba.conf, ролями, системными представлениями pg_stat_* и журналом сервера. Часть параметров применяется после перечитывания конфигурации, часть требует перезапуска. Это надо отмечать в регламенте изменений, иначе безобидная правка останется неактивной или вызовет неожиданное окно простоя.
Плановые задания тоже никуда не исчезают. Их запускают средствами операционной системы, внешним оркестратором или специализированным инструментом. Важно не название планировщика, а четыре свойства: отдельный технический пользователь, предсказуемое окружение, журнал результата и оповещение при ненулевом коде завершения. Задание, которое тихо не выполнялось три недели, хуже отсутствующего задания, потому что создает ложное чувство защиты.
Емкость планируют отдельно для данных, индексов, временных файлов, журналов и WAL. Рост WAL зависит от характера записи, контрольных точек, репликации и архивации, поэтому процент свободного места из старого регламента нельзя переносить без измерений. Оповещение должно сработать раньше, чем сервер потеряет возможность завершать операции, а дежурный должен видеть, какой потребитель растет. Автоматическое удаление файлов из pg_wal средствами операционной системы запрещено: сервер сам управляет этой областью, а ручная очистка может сделать кластер невосстановимым.
Обновления PostgreSQL делятся на минорные в рамках основной ветки и переходы между основными версиями. Минорные обновления ставят исправления поверх существующего каталога данных, но их все равно проверяют на копии среды и сопровождают планом отката. Для основной версии нужен отдельный проект: pg_upgrade, логическая репликация либо выгрузка и загрузка, проверка расширений, драйверов и плана простоя. Привычка годами не трогать работающий сервер здесь быстро превращает исправимую задачу в рискованный большой скачок.
Autovacuum нельзя оставить без наблюдения
В PostgreSQL обновленная или удаленная версия строки не исчезает из файла немедленно, поэтому autovacuum становится частью производительности и доступности. Многоверсионность позволяет чтению и записи меньше мешать друг другу, но оставляет мертвые версии строк до очистки. Если очистка отстает, таблицы и индексы разрастаются, планы получают неточную картину данных, а старые транзакции удерживают мусор.
Руководство PostgreSQL называет четыре причины регулярного VACUUM: повторное использование места, обновление статистики планировщика, поддержку карты видимости и защиту от переполнения идентификаторов транзакций. Это полезная поправка к популярному совету «autovacuum включен по умолчанию, значит о нем можно забыть». Включенный процесс выполняет работу, но стандартные пороги не обязаны подходить таблице проводок, где за час меняется заметная доля строк.
Следите как минимум за возрастом последней очистки и анализа, числом живых и мертвых строк, длительными транзакциями и прогрессом текущего VACUUM. Для крупных активно изменяемых таблиц параметры autovacuum часто задают отдельно на уровне таблицы. Настройка по всему кластеру одним агрессивным значением обычно создает лишний ввод-вывод на спокойных таблицах и все равно опаздывает на самых горячих.
VACUUM FULL не должен становиться еженедельной уборкой. Обычный VACUUM возвращает место для повторного использования внутри таблицы и работает рядом с обычной нагрузкой. VACUUM FULL переписывает таблицу и берет блокировку ACCESS EXCLUSIVE, поэтому попытка «вернуть диск» в рабочее время может остановить учетную систему. Если он требуется регулярно, сначала ищите причину разрастания, долгие транзакции и неподходящие пороги очистки.
Еще одна ловушка находится в пуле соединений. Сессия в состоянии idle in transaction может выглядеть безобидно, но открытая транзакция удерживает старый снимок данных. Ограничивайте время таких транзакций, исправляйте приложение и отдельно отслеживайте их возраст. Убийство сессий по расписанию маскирует дефект и иногда обрывает законную операцию пользователя.
Резервная копия определяется способом восстановления
В PostgreSQL сначала выбирают требуемую точку и время восстановления, а потом строят резервное копирование. Логическая выгрузка, физическая базовая копия и реплика решают разные задачи. Один ночной pg_dump удобен для переноса отдельных объектов и выборочного восстановления, но не дает восстановления к произвольной секунде между выгрузками.
Для восстановления на момент времени нужна физическая базовая копия вместе с непрерывной цепочкой архивных WAL. Руководство PostgreSQL прямо разделяет эти механизмы: pg_dump создает логическую выгрузку и не входит в схему непрерывного архивирования, а физическая копия плюс WAL позволяет проиграть изменения до заданного времени. Пропавший сегмент в середине цепочки ограничит достижимую точку, даже если следующие файлы на месте.
pg_basebackup умеет получить базовую копию работающего кластера и создает манифест, который проверяет pg_verifybackup. Проверка манифеста подтверждает состав и контрольные суммы файлов, но не заменяет запуск восстановленного экземпляра. Ошибки доступа, неверный restore_command, отсутствующее расширение или неучтенный конфигурационный файл обнаруживаются только на репетиции.
Храните копии отдельно от основного узла и отдельно управляйте учетными данными, которыми резервный инструмент пишет и читает архив. Шифрование бесполезно, если ключ лежит в том же каталоге и теряется вместе с сервером. Политика хранения должна учитывать дневные, недельные и более долгие точки, требования к персональным данным и гарантированное удаление по окончании срока. Каталог копий тоже нуждается в защите: команда должна уметь найти нужную базовую копию и всю цепочку WAL без памяти одного администратора.
Рабочая проверка должна выглядеть как восстановление сервиса, а не как просмотр зеленой отметки:
- Разверните чистый узел той же основной версии PostgreSQL и установите нужные расширения.
- Восстановите последнюю базовую копию, подайте WAL из резервного хранилища и задайте контрольную точку времени.
- Запустите кластер в изолированной сети, проверьте завершение recovery и время от начала работы до приема подключений.
- Выполните сверку контрольных сущностей учетной системы: период, число документов, итоги по заранее выбранным регистрам и права служебной роли.
- Запишите достигнутые RPO и RTO, причину каждого ручного шага и владельца исправления.
Такую репетицию нужно повторять после смены основной версии, резервного инструмента, шифрования, хранилища или схемы аутентификации. Копия без измеренного восстановления остается предположением.
Реплика не заменяет резервную копию
Потоковая реплика повышает доступность, но обычно повторяет ошибку пользователя и логическое повреждение. Удаление таблицы, ошибочный массовый UPDATE или поврежденные данные приложения попадут в WAL и будут воспроизведены на резервном узле. Реплика помогает при отказе сервера, а архив с восстановлением на момент времени помогает вернуться до ошибочной операции.
Эту границу часто размывают, потому что реплика выглядит как свежая копия всей базы. Последствие дорогое: после случайного удаления администратор обнаруживает два одинаково исправных сервера без нужных данных. Поэтому схема должна отдельно описывать резервное копирование, высокую доступность и аварийное переключение.
Автоматическое переключение требует внешнего решения и четкого правила выбора ведущего узла. Сам PostgreSQL передает WAL и поддерживает standby, но распределенный консенсус, виртуальный адрес, маршрутизация клиентов и защита от двух ведущих зависят от выбранной архитектуры. Перед автоматизацией проверьте, что учетное приложение корректно переподключается, пул сбрасывает старые соединения, а потерянные в момент переключения транзакции получают понятный пользователю результат.
Синхронная репликация уменьшает риск потери подтвержденных транзакций, но добавляет задержку и может остановить фиксацию, если требуемая синхронная реплика недоступна. Асинхронная дает ведущему узлу больше независимости, но допускает потерю последних подтвержденных изменений при аварии. Выбор делает владелец процесса на основании допустимого RPO, а не администратор по вкусу.
Наконец, отрабатывайте возврат на прежний узел. Успешное переключение туда, откуда нельзя безопасно вернуться, переносит аварию на следующий плановый ремонт. Процедура должна учитывать новую временную линию PostgreSQL, расхождение старого ведущего и способ его повторного включения через новую базовую копию или pg_rewind при выполнении его условий.
Диагностика производительности начинается с новой базовой линии
Старые счетчики и привычные планы обслуживания нельзя механически перенести на PostgreSQL. У Microsoft SQL Server есть Query Store, который хранит историю текстов запросов, планов, статистики выполнения и ожиданий по временным интервалам. В PostgreSQL текущая активность доступна через pg_stat_activity, накопительная статистика через семейство pg_stat_*, а историю нормализованных запросов обычно собирают расширением pg_stat_statements и внешней системой метрик.
pg_stat_statements нужно заранее добавить в shared_preload_libraries, перезапустить сервер и создать как расширение в нужной базе. Если включить его после инцидента, прошлой истории не появится. Это типичный сюрприз после миграции: запрос медленный сегодня, но сравнить его со вчерашним планом и временем уже не с чем.
Базовую линию снимайте до миграции на старой платформе и повторяйте на PostgreSQL одним и тем же набором бизнес-операций. Запишите медиану и медленные выполнения, число одновременных пользователей, объем чтения и записи, длительность блокировок, размер базы и время пакетных заданий. Без исходных измерений фраза «стало медленнее» превращается в спор воспоминаний. Сравнение должно учитывать прогрев кэша и одинаковый объем данных, иначе первый запуск нового отчета сопоставят с давно прогретым старым планом.
Минимальный диагностический снимок можно снять следующими запросами. Они не исправляют проблему, зато разделяют активное ожидание, дорогой накопленный запрос и таблицу, где очистка отстает:
SELECT pid, usename, state, wait_event_type, wait_event,
clock_timestamp() - query_start AS running_for,
left(query, 160) AS query_text
FROM pg_stat_activity
WHERE datname = current_database()
AND state <> 'idle'
ORDER BY query_start;
SELECT calls, round(total_exec_time::numeric, 1) AS total_ms,
round(mean_exec_time::numeric, 1) AS mean_ms,
rows, left(query, 160) AS query_text
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 15;
SELECT relname, n_live_tup, n_dead_tup,
last_autovacuum, last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 15;
Первая выборка возвращает по строке на серверный процесс с состоянием и событием ожидания. Вторая показывает запросы, которые суммарно съели больше всего времени с момента сброса статистики, а не обязательно самый медленный единичный запуск. Третья дает оценочные счетчики строк, поэтому их используют как сигнал для расследования, а не как бухгалтерски точные числа.
После обнаружения запроса смотрите EXPLAIN (ANALYZE, BUFFERS) на безопасной копии или для контролируемого SELECT. Параметр ANALYZE действительно выполняет запрос. Запуск его на изменяющем данные операторе в производстве может повторить изменение, если не обернуть проверку в транзакцию с откатом и не понимать побочные эффекты. Сравнивайте оценку строк с фактом, чтение буферов, тип соединения и время узлов плана.
Не начинайте лечение с случайного изменения shared_buffers или отключения последовательного сканирования. Сначала сохраните план, параметры запроса, объем данных, статистику таблиц, события ожидания и метрики операционной системы. PostgreSQL сам рекомендует не ограничиваться внутренними представлениями и смотреть top, iostat, vmstat или их аналоги: база не объяснит очередь диска, нехватку памяти на узле или задержку сети только текстом SQL.
Совместимость приложения проверяется на реальной нагрузке
Совместимость означает правильный результат и приемлемое время, а не успешное создание таблиц. Учетные системы часто генерируют SQL через платформу или ORM, поэтому один и тот же пользовательский отчет на разных СУБД получает разные планы, типы параметров и поведение блокировок. Сертификат поддержки нужной версии PostgreSQL от поставщика приложения обязателен, но он не заменяет тест ваших расширений, отчетов и обменов.
Проверьте типы данных, точность денежных расчетов, правила сравнения строк, регистр, часовые пояса, последовательности и поведение пустых значений. Особенно опасны самописные запросы с синтаксисом конкретной СУБД, подсказками оптимизатору, хранимыми процедурами и неявным преобразованием типов. Автоматический конвертер переносит конструкцию, но не доказывает ее смысл.
Перенос данных проверяйте на двух уровнях. Техническая сверка считает строки, ищет ошибки загрузки и сравнивает выбранные контрольные суммы, а предметная сверка подтверждает остатки, обороты, закрытые периоды, ссылки между документами и права доступа. Простое равенство общего числа строк недостаточно: пропущенные строки одной организации могут компенсироваться дублями другой. Правила сверки согласуйте с владельцем учета заранее и сохраняйте результаты как часть протокола переключения.
Нагрузочный тест должен воспроизводить календарь учета. Средний вторник почти ничего не говорит о закрытии месяца, массовом проведении документов, расчете зарплаты, регламентной загрузке или построении большого отчета. Возьмите обезличенную копию рабочего объема, зафиксируйте набор операций и сравните не только среднее время, но и хвост задержек, блокировки, объем WAL, рост таблиц и длительность резервной копии.
Отдельно проверьте пул соединений. PostgreSQL выделяет процесс на клиентское соединение, а слишком широкий пул съедает память и усиливает конкуренцию. Ограничение соединений через пулер помогает, но режим транзакционного пула может быть несовместим с временными таблицами, состоянием сессии и некоторыми подготовленными операторами. Решение принимают после трассировки приложения, а не по универсальной формуле количества соединений.
План отката должен учитывать изменения после точки переключения. Вернуть приложение к старой базе легко только до начала новых записей. Двунаправленная синхронизация усложняет проект и создает конфликты, поэтому чаще задают короткое окно окончательной дельты, контрольную сверку и критерий остановки до открытия доступа пользователям.
Безопасность и изменения входят в обычное дежурство
PostgreSQL не становится безопасным из-за открытого исходного кода, как коммерческая СУБД не становится безопасной из-за оплаченной лицензии. Администратор отвечает за своевременные исправления, сетевую изоляцию, TLS, правила pg_hba.conf, роли, секреты, аудит и права операционной системы. Ошибка в порядке строк pg_hba.conf может дать более широкий способ входа, чем предполагалось, потому что сервер применяет первое совпавшее правило.
Не выдавайте приложению роль владельца базы или суперпользователя. Разделите владельца объектов, роль миграций схемы, рабочую роль приложения, роль мониторинга и оператора резервного копирования. Тогда утечка пароля приложения не дает права менять расширения, читать все базы кластера или переписывать конфигурацию.
Расширения требуют такого же учета, как пакеты приложения. Зафиксируйте источник, версию, владельца обновления и совместимость с новой основной версией PostgreSQL. Если расширение доступно только из неуправляемой сборки одного специалиста, оно становится скрытым ограничением следующего обновления.
Журналы должны отвечать на поставленный вопрос и не собирать лишние персональные данные. Полное логирование каждого SQL-оператора помогает расследованию, но на нагруженной учетной базе быстро увеличивает ввод-вывод, стоимость хранения и риск появления чувствительных значений. Обычно полезнее настроить длительность медленных запросов, ошибки соединения, ожидания блокировок и структурированный сбор с ограниченным сроком хранения.
Изменения проводите через одинаковый маршрут: заявка, проверка на стенде, резервная точка, команда применения, критерий успеха и откат. Конфигурацию храните как версионируемый текст, но секреты держите отдельно. Ручная правка на сервере допустима при аварии, если после нее изменение возвращается в управляемую конфигурацию и проходит разбор.
Специалистов меньше, поэтому важнее устройство команды
Найти администратора PostgreSQL можно, но рынок и профиль навыков отличаются от привычной коммерческой базы. Сильный специалист обычно знает Linux, файловые системы, сеть, автоматизацию, SQL, планы выполнения, WAL, репликацию и резервное восстановление. Человек, который уверенно нажимал нужные пункты в одной консоли, не получает эти навыки автоматически после короткого курса.
Не ищите героя, который единолично знает все. Для учетной системы нужны как минимум распределенные роли: владелец приложения понимает корректность данных и пики процесса, администратор базы отвечает за СУБД, инфраструктурная команда за узлы и хранилище, служба безопасности за доступ, а дежурная смена умеет выполнить регламент. Один человек может совмещать роли, но инструкции и доступы должны переживать его отпуск.
Хороший регламент не пересказывает учебник PostgreSQL. Он начинается с сигнала, который реально увидит дежурный, содержит безопасные команды сбора данных, порог эскалации, контакты и запрет на опасные действия. Для заполненного диска отдельно напишите, какие файлы можно переносить, а какие нельзя трогать; для отставшей реплики укажите, когда сохранять ее, а когда пересоздавать. Раз в квартал отдавайте регламент сотруднику, который его не писал, и наблюдайте, где ему приходится догадываться.
При найме спрашивайте не список параметров, а разбор отказа. Пусть кандидат объяснит, что сделает при росте pg_wal, зависшей очистке, отставании реплики и жалобе «после обновления отчет стал медленным». Хороший ответ начинается со сбора фактов, учитывает риск вмешательства и заканчивается проверкой результата. Заученное значение shared_buffers мало говорит о способности восстановить учет в четыре утра.
Поддержка производителя или интегратора полезна, если договор определяет версии, время реакции, удаленный доступ, границы ответственности и участие в восстановлении. Формулировка «поддерживаем PostgreSQL» без процедуры эскалации не закроет инцидент. В Казахстане GSE.kz может собрать серверную и интеграционную часть проекта, а также предоставить круглосуточную техническую поддержку через национальную сервисную сеть. Это не отменяет внутреннего владельца базы и регулярных учебных восстановлений.
Оцените стоимость на несколько лет: инфраструктура, резервное хранилище, стенды, мониторинг, обучение, дежурство, внешний контракт и проекты обновления. Сравнивайте ее с полной стоимостью текущей платформы, включая лицензии, поддержку и аппаратные ограничения. PostgreSQL часто дает больше свободы в выборе серверов и масштабировании, но экономия появляется только тогда, когда эксплуатация спроектирована, а не переложена на неоплачиваемые ночи команды.
Решение принимают после репетиции эксплуатации
Переводить учетную систему стоит, если приложение официально поддерживает выбранную версию PostgreSQL, команда умеет ее восстанавливать и измеренная нагрузка укладывается в требования бизнеса. Причиной может быть снижение зависимости от лицензирования, выбор локальной инфраструктуры, прозрачность цепочки поставок или единый открытый стек. Ни одна из этих причин не компенсирует неподготовленное восстановление.
До переключения проведите полный эксплуатационный цикл на стенде: загрузка обезличенной копии, обычный день, пиковая операция, сбой резервного задания, заполнение диска до порога оповещения, отказ ведущего узла, восстановление на выбранный момент и минорное обновление. У каждого упражнения должны быть время, наблюдаемый сигнал и итоговый протокол. Так обнаруживаются ручные шаги и неочевидные зависимости, пока они еще не влияют на пользователей.
Критерии приемки пишут до теста. Зафиксируйте допустимый простой, потерю данных, время основных операций, срок хранения копий, минимальный запас диска, максимальное отставание реплики и ответственного за решение об откате. Если показатель нельзя измерить, команда не сможет доказать готовность и будет спорить уже во время переключения.
Сам переход лучше разбить на техническую репетицию и отдельное рабочее окно. Репетиция показывает реальную скорость выгрузки, передачи, индексации, анализа и сверки. Рабочий план затем использует измеренные длительности, оставляет запас на откат и запрещает несогласованные улучшения в ночь миграции.
После открытия доступа не объявляйте проект завершенным. Сохраните повышенное наблюдение на период, который покрывает пиковые операции учета, проверьте первые резервные копии и выполните раннее тестовое восстановление. Старую платформу выводят из эксплуатации только после контрольной точки, определенной владельцем данных и правилами хранения. Администратор должен получить не новую иконку СУБД, а систему, чье поведение команда умеет объяснить, измерить и восстановить.
FAQ
Станет ли администрирование дешевле после перехода на PostgreSQL?
Лицензионные расходы на саму СУБД могут снизиться, но работа не исчезает. В расчет включают мониторинг, резервное хранилище, тестовые среды, обучение, дежурство, обновления и внешнюю поддержку.
Можно ли ограничиться стандартным autovacuum?
На небольшой спокойной базе стандартных настроек иногда хватает. На таблицах с частыми изменениями администратор должен следить за мертвыми строками, долгими транзакциями и длительностью очистки, а затем настраивать отдельные таблицы по фактической нагрузке.
Достаточно ли ежедневного pg_dump для учетной системы?
Только если бизнес согласен потерять изменения после последней выгрузки и ждать логического восстановления. Для малого RPO обычно нужна физическая базовая копия, непрерывный архив WAL и регулярно проверяемая процедура PITR.
Заменяет ли реплика резервную копию PostgreSQL?
Нет. Реплика повторит ошибочное удаление или массовое изменение, поэтому она защищает в основном от отказа узла, а резервная копия с WAL позволяет вернуться к состоянию до ошибки.
Какие метрики PostgreSQL нужно собирать в первую очередь?
Начните с доступности, подключений, блокировок, длительных транзакций, места на дисках, генерации и архивирования WAL, отставания реплик, работы autovacuum и результата резервных заданий. Добавьте статистику запросов и метрики операционной системы, иначе причина задержки останется вне поля зрения.
Нужен ли отдельный администратор PostgreSQL?
Для критичной учетной системы нужен человек, который отвечает за СУБД и умеет восстанавливать ее, но должность может совмещаться. Опасно, когда знания, доступ и ночная эскалация завязаны на одного сотрудника без проверенного регламента.
Можно ли перенести настройки производительности со старой СУБД?
Нет, одинаковые названия ресурсов не означают одинаковое устройство оптимизатора и памяти. Сначала снимите базовую линию на реальной копии нагрузки, затем меняйте один параметр или объект и измеряйте результат.
Как проверить готовность приложения к PostgreSQL?
Получите подтверждение поддерживаемой версии от поставщика, затем испытайте свои отчеты, расширения, обмены и пиковые операции на рабочем объеме данных. Отдельно проверьте типы, сортировку строк, часовые пояса, блокировки и пул соединений.
Как часто нужно проверять восстановление?
Проводите его регулярно по внутреннему графику и после каждого существенного изменения версии, инструмента копирования, хранилища, шифрования или аутентификации. Проверка должна завершаться запуском изолированного экземпляра и сверкой данных, а не чтением журнала задания.
Когда переход на PostgreSQL лучше отложить?
Отложите переключение, если приложение не поддерживает нужную версию, нет владельца эксплуатации, восстановление не проходило репетицию или пиковая нагрузка не измерена. Эти пробелы исправляют до рабочего окна, а не во время него.