Бэк очень большой PostgreSQL БД "по частям" - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть база данных PostgreQL размером около 6 ТБ. Я хочу перенести эту базу данных на другой сервер, используя, например, pg_dumpall. У меня проблема в том, что у меня только 1 ТБ HD. Как я могу сделать, чтобы скопировать эту базу данных на другой новый сервер, который имеет достаточно места? Давайте предположим, что я не могу получить еще один HD. Есть ли возможность делать частичные резервные копии файлов, загружать их на новый сервер, стирать HD и получать еще одну партию резервных файлов до завершения передачи?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Это работает здесь (подтверждение концепции):

  • команда оболочки, выданная от принимающей стороны
  • удаленных сторонних дампов через сетевое соединение
  • локальная сторона psql просто принимает команды из этого соединения
  • данные никогда не сохраняются в физическом файле
  • (для краткости я отправил только определения таблиц, а не фактические данные: --schema-only)
  • у вас могут возникнуть проблемы с пользователями и табличными пространствами (они глобальны для установки в Postgres) pg_dumpall также выполнит дамп + восстановление этих данных, IIR C .

#!/bin/bash

remote=10.224.60.103
dbname=myremotedbname

pg_dump -h ${remote} --schema-only -c -C ${dbname} | psql

#eof
1 голос
/ 03 апреля 2020

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

Однако для базы данных объемом 6 ТБ (включая предполагаемые индексы) используется формат дампа архива (-Fc) может привести к дампу базы данных менее 1 ТБ.

Относительно вопроса "по частям": да, это возможно при использовании шаблона таблицы (-t, --table):

pg_dump -t TABLE_NAME ...

Вы также можете исключить таблицы, используя -T, --exclude-table:

pg_dump -T TABLE_NAME ...

Указанные выше параметры (-t, -T) могут быть указаны несколько раз и могут быть даже в сочетании.
Они также поддерживают шаблоны для указания таблиц:

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