Снимок Amazon RDS Postgresql сохраняет схему, но теряет все данные - PullRequest
1 голос
/ 21 февраля 2020

Используя AWS консоль RDS Я создал резервную копию снимка базы данных Postgresql v11, содержащей несколько схем. Затем я создал новый экземпляр из резервной копии. Казалось, что процесс работает без ошибок. Однако при проверке данных в новом экземпляре я заметил, что только в одной из моих схем данные не были сохранены. Структура схемы, таблицы, индексы, ограничения и т. Д. c выглядели хорошо, но каждая таблица была пустой (выберите count (*) из schema.table равным 0 для каждой таблицы в схеме). Все остальные схемы выглядели нормально и содержали ожидаемые данные. Я искал повсюду (не мог найти помощь для этого онлайн) и пробовал много тестов сам (смена ролей, перестройка схемы, привилегии и многое другое), пытаясь решить эту проблему. Что заставило бы мои снимки сохранить всю структуру схемы, но потерять все данные?

1 Ответ

2 голосов
/ 22 февраля 2020

Я наконец понял, что единственная разница между схемой проблемы и другой заключается в том, что все таблицы в схеме проблемы были созданы с ключевым словом «UNLOGGED». Это было сделано для увеличения скорости записи для миллионов строк, вставленных при первом построении схемы. Однако при создании / восстановлении моментального снимка, как описано выше, процесс восстановления данных зависит от файлов WAL, которые записаны с использованием обычных (зарегистрированных) таблиц. Чтобы исправить мою проблему, я просто изменил все таблицы и установил их в журнал (измените таблицу schema.table set logged). После этого снимки работали нормально. Для любого другого в будущем, который делает что-то подобное, если для начального массового заполнения данных понадобятся незагруженные таблицы, чтобы повысить скорость записи, было бы хорошо изменить их для регистрации после начального заполнения данных (если вы планируете использовать снимки или репликации или аналогичные). Примечание: pg_dump / pg_restore по-прежнему работает для незарегистрированных таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...