2016-06-29 4 views
4

Я не уверен, должен ли этот вопрос быть опубликован в разделе Database Administrators или здесь, поэтому, пожалуйста, сообщите, если я ошибаюсь.Django's "dumpdata" или Postgres 'pg_dump'?

У меня есть сайт на основе Django, который не сильно меняется. Я использую python manage.py dumpdata --all --indent=2 > backup.json и перезагружаю данные loaddata, если мне нужно перераспределить или поврежден db. (Я знаю об ошибке целостности, которые произошли, когда не исключая auth и content_types)

Поскольку я использую PostgreSQL на внутреннем интерфейсе, это «лучшая практика» или «умнее» для меня, чтобы использовать pg_dump вместо этого, и то pg_restore если что-то пойдет не так или мне нужно перераспределить?

Таким образом, dumpdata сбрасывает все данные, связанные с выбранными приложениями (и/или моделями), и pg_dump выполняет полный сброс db. Это то же самое или есть фундаментальное отличие, которое я пропустил (помните, у меня есть 0 опыт работы с DBA)?

Какой вариант мне нужно и почему?

ответ

1

Лучше всего практиковать и мудрее использовать pg_dump вместо dumpdata. pg_dump быстрее, выход более компактный (особенно с опцией -Fc), и он может быть загружен быстрее с pg_restore, чем loaddata. И последнее, но не менее важное: ошибки целостности, о которых вы говорили, не будут выполняться с pg_dump/pg_restore.

Обычно pg_dump используется для вывода всей базы данных, однако опция -t позволяет сбросить одну или несколько таблиц, в то время

+0

Учтена. Я уже написал скрипт для резервного копирования, используя pg_dump, выполняемый ежечасно. Поскольку моя БД действительно крошечная (~ 30 МБ), я не заметил большой разницы в производительности. Спасибо за ваш ответ. –

+1

Добро пожаловать, если вы регулярно отправляете демпинг, вам может потребоваться использовать архивирование WAL. https://www.postgresql.org/docs/9.2/static/continuous-archiving.html – e4c5

+0

Спасибо за ссылку. Я не знал, что PostgreSQL имеет систему непрерывного резервного копирования. На данный момент я использую 'pg_dump', а затем я фиксирую и переношу изменения в частное репо GitHub, обеспечивая инкрементные изменения. У меня также есть возможность восстановить данные в определенный момент времени, с худшим сценарием потери работы часа. Должен ли я продолжать использовать WAL? Стоит ли приложить усилия (по времени) для внедрения WAL? Это выглядит немного сложнее по сравнению с 'pg_dump' и' git'. Любые советы приветствуются. –

Смежные вопросы