Восстановление Postgres из pg_dumpall: отношение не существует, недопустимая команда \ N - PullRequest
3 голосов
/ 09 декабря 2010

Я запустил pg_dumpall на сервере Linux и пытаюсь восстановить полученный файл на другом сервере Linux, используя ту же версию postgres (8.1.21-1.el5_5.1).

Когда я пытаюсь восстановить, я получаю следующие ошибки:

# psql --user=postgres -f pgbackup_dcs.sql postgres
[...]
psql:pgbackup_dcs.sql:10753: ERROR:  relation "sl_event" does not exist
psql:pgbackup_dcs.sql:10754: invalid command \N
psql:pgbackup_dcs.sql:10755: invalid command \N
psql:pgbackup_dcs.sql:10756: invalid command \N
psql:pgbackup_dcs.sql:10757: invalid command \N
psql:pgbackup_dcs.sql:10758: invalid command \N
psql:pgbackup_dcs.sql:10759: invalid command \N
[there are a lot of other errors following this point]

Эти строки в файле дампа выглядят следующим образом (первая строка здесь - 10753)

COPY sl_event (ev_origin, ev_seqno, ev_timestamp, ev_minxid, ev_maxxid, ev_xip, ev_type, ev_data1, ev_data2, ev_data3, ev_data4, ev_data5, ev_data6, ev_data7, ev_data8) FROM stdin;
1       687653  2010-12-08 11:54:45.669861      36713740        36713741                SYNC    \N      \N      \N      \N      \N      \N      \N      \N
1       687654  2010-12-08 11:54:55.6757        36713769        36713770                SYNC    \N      \N      \N      \N      \N      \N      \N      \N
1       687655  2010-12-08 11:55:05.68132       36713796        36713797                SYNC    \N      \N      \N      \N      \N      \N      \N      \N

Что-то не так с дампом или восстановлением? Как я могу восстановить БД на новом сервере?

Ответы [ 5 ]

1 голос
/ 09 декабря 2010

Есть ли в резервной копии CREATE TABLE sl_event (....)?Вы пытаетесь скопировать содержимое в несуществующую таблицу, она должна отсутствовать в резервной копии или создается после оператора копирования.

0 голосов
/ 15 ноября 2013

я нашел это исправление, и оно заработало

Сначала удалите / полностью удалите базу данных, которую вы хотите восстановить

su - postgres
createdb -T template0 dbname
psql -U username -d dbname -f dumpfile

Причина в том, что когда pg_dump создает файлы .dmp относительно template0, они могут отличаться от того, который использовался для создания базы данных. http://openacs.org/forums/message-view?message_id=148479

0 голосов
/ 07 сентября 2012

Возможно, у вас есть резервная копия только для данных? То есть pg_dumpall -a откажется создавать ваши таблицы и приведет к чему-то вроде этого. Помимо этого, я думаю, что если это не так, то у вас есть вышестоящая ошибка, которая вызывает это.

0 голосов
/ 10 декабря 2010

После долгих поисков я нашел несколько дополнительных библиотечных файлов в каталоге библиотеки postgres, которые были из Slony (xxid.sl и несколько файлов с «slony» в имени), и после копирования их на целевой серверимпорт прошел нормально.

0 голосов
/ 09 декабря 2010

использование pg_dump для выгрузки одной базы данных за раз. Я думаю, что создание единой базы данных - это хорошая идея. Нам не нужно создавать дамп системы, например, template0, postgres ..

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