Ошибка при восстановлении бэкапа postgresql

I’m trying to backup up an entire postgres database and restore it properly, however I am seeing a list of errors when trying to restore the backup.

I am using pg_dump to create a backup sql file. (I have a .pgpass file for password)

sudo -u postgres pg_dump -d db-w > backup.sql

When I try to restore the database with:

sudo -u postgres psql db < backup.sql

I get a list of errors like:

ERROR:  duplicate key value violates unique constraint
ERROR:  multiple primary keys for table
ERROR:  relation <relation> already exists
ERROR:  trigger <trigger> for relation <relation> already exist

I haven’t made any changes to the database. I simply performed a backup and restore the backup right after.

What am I doing wrong?

asked Dec 7, 2016 at 19:55

ScrawnySquirrel's user avatar

1

your restoring on an existing database, if you want and sure to replace database with the backup you can use option —clean and —create

-c, —clean
Clean (drop) database objects before recreating them. (This might
generate some harmless error messages, if any objects were not
present in the destination database.)

-C, —create
Create the database before restoring into it. If —clean is also
specified, drop and recreate the target database before connecting
to it.

answered Dec 7, 2016 at 21:47

wa2nlinux's user avatar

2

Postgresql ошибки при восстановлении

Модератор: Дмитрий Юхтимовский

Postgresql ошибки при восстановлении

Доброго времени суток!
Прошу не пинать сильно и сразу, тк с postgre работаю не так давно.
Есть кластер 1С , база крутится на postgresql
Каждый день делается бэкап :
pg_dump -U postgres -Fc -Z9 -v -f ${BACKUPDIR}/${YEAR}/${MONTH}/${DAY}/${DB_NAME}.gz ${DB_NAME} &>> $BACKUPDIR/$YEAR/$MONTH/$DAY/log

При восстановлении базы из бэкапа
sudo -H -u postgres /usr/bin/pg_restore -i -U postgres -d BASE -v /PATH/TO/BACKUPDIR

вылазиют ошибки
WARNING: errors ignored on restore: 1886

1С при том запускается но со сл ошибками:
скрины ошибок во вложеннии

Вложения
1c_restore_errorrr.jpg
1c_restore_errorrr.jpg (29.05 KiB) Просмотров: 6757
1c_restore_error.jpg
1c_restore_error.jpg (241.69 KiB) Просмотров: 6757
redbull05689
 
Сообщений: 3
Зарегистрирован: 16 сен 2015, 13:48

Re: Postgresql ошибки при восстановлении

Сообщение Slynko Alexey » 16 сен 2015, 17:18

1) Огласите версию PostgreSQL
2) Хорошо бы увидеть все, что выводит pg_restore
3) Попробуйте pg_restore с ключиком -c

Slynko Alexey
 
Сообщений: 1
Зарегистрирован: 16 сен 2015, 17:18

Re: Postgresql ошибки при восстановлении

Сообщение Гилёв Вячеслав » 16 сен 2015, 17:58

redbull05689 писал(а): вылазиют ошибки
WARNING: errors ignored on restore: 1886

1С при том запускается но со сл ошибками:
скрины ошибок во вложеннии

логично, что 1С в шоке
надо разобраться в чем проблема при восстановлении
выложите результаты сообщений в >logs.txt

Гилёв Вячеслав
 
Сообщений: 2726
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Postgresql ошибки при восстановлении

Сообщение Dmitry Vasiliyev » 16 сен 2015, 19:53

Скорее всего вы сдампили данные с postgresql-1c а пытаетесь возможно востановить данные на postgresql без 1c патчей: pg_restore у вас прошел, а 1c приложение падает, так как не может найти указаный тип (mvchar который создается во время создания базы).

Не могли бы вы: востановить дамп заново и прислать вывод в консоли всех комманд которые вы выполняли,
(если у вас bash), то можете добавить в командную строчку востановления: &> /tmp/log.txt и прислать содержимое файла /tmp/log.txt

Dmitry Vasiliyev
 
Сообщений: 9
Зарегистрирован: 16 сен 2015, 19:45

Re: Postgresql ошибки при восстановлении

Сообщение redbull05689 » 17 сен 2015, 09:03

Спасибо всем откликнувшимся
Версия
postgresql-9.1
Попробовал восстановить с ключем -с
sudo -H -u postgres /usr/bin/pg_restore -c -i -U postgres -d kop_bakkagenko_1709 -v /DB/reserv/2015/Сен/17/baklagenko.gz &> /tmp/log.txt
ну и собственно лог

redbull05689
 
Сообщений: 3
Зарегистрирован: 16 сен 2015, 13:48

Re: Postgresql ошибки при восстановлении

Сообщение Гилёв Вячеслав » 17 сен 2015, 10:17

redbull05689 писал(а):ну и собственно лог

выложите пожалуйста лог на какой-нибудь яндекс-диск и киньте сюда пожалуйста ссылку

Гилёв Вячеслав
 
Сообщений: 2726
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва


Re: Postgresql ошибки при восстановлении

Сообщение Dmitry Vasiliyev » 17 сен 2015, 10:38

К сожалению, 9.1 — это очень старая версия. Поддержка 9.2 со стороны сообщества например заканчивается в сентябре, если я не ошибаюсь.
И да, к сожалению, не получиться воспользоваться версией старыми данными и новым сервером, для этого нужно воспользоваться утилитой pg_upgrade.

Наша компания постепенно переводит документацию по PostgreSQL на русский:

http://postgrespro.ru/doc

Как я понял, ее давно не актуализировали, в течении дня попрошу выложить свежую версию, возможно там уже будет про backup/restore и pg_upgrade

Dmitry Vasiliyev
 
Сообщений: 9
Зарегистрирован: 16 сен 2015, 19:45


Re: Postgresql ошибки при восстановлении

Сообщение Dmitry Vasiliyev » 17 сен 2015, 18:25

попробуйте сделать так:

sudo -H -u postgres /usr/bin/dropdb -c -i -U postgres kop_bakkagenko_1709
sudo -H -u postgres /usr/bin/pg_restore -c -i -U postgres -d kop_bakkagenko_1709 -v /DB/reserv/2015/Сен/17/baklagenko.gz &> /tmp/log.txt

Dmitry Vasiliyev
 
Сообщений: 9
Зарегистрирован: 16 сен 2015, 19:45


Вернуться в Прочее

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

I’m trying to restore backup from Postgres 9.1.1, which was created by:

pg_dump mydb > backup.sql

restore on Postgres 9.1.9

psql -d mydb -f backup.sql

I’m getting this error:

psql:datasets.sql:278537: invalid command \.
psql:datasets.sql:278544: ERROR:  syntax error at or near "1"
LINE 1: 1 4446 49 253.412262 239.618317 0 211.54303 100.482948 197.1...

The \. is part of COPY command, I guess it should be compatible between Postgres 9 versions, or it’s not?

COPY data_136 (id, in_1, in_2, in_3, in_4, out_1) FROM stdin;
1       5.0999999       3.5     1.39999998      0.200000003     Iris-setosa
2       4.9000001       3       1.39999998      0.200000003     Iris-setosa
--- few more line cutted
150     5.9000001       3       5.0999999       1.79999995      Iris-virginica
\.

Доброго дня.
Появилась проблема, и я очень прошу помощи.

Суть.
Есть сервер с CentOS 6, на базе которого крутится postgres.

[root@DataB ~]# psql -V
psql (PostgreSQL) 9.4.2

Там имеются базы данных, которые используются как базы 1С.
На этом сервере есть sh скрипт который выполняется по cron. Суть этого скрипта, это бэкапить базы на NAS. Пример скрипта, приведу ниже.

/usr/pgsql-9.4/bin/pg_dump --host localhost --port 5432 --username "postgres" --role "postgres" --no-password  --format custom --blobs --compress 9 --encoding UTF8 --verbose --file /mnt/NASbackup/Buh_UKEKNew/Buh_UKEKNew-$(date +%Y-%m-%d).backup "Buh_UKEKNew"  2> $LOG_FILE

И вроде всё делается нормально, бэкапы делаются, я спокоен, и пару мепсяцев один из них разворачивал, и тут попытался сделать это снова с помощью…

pg_restore --host localhost --port 5432 --username "postgres" --dbname "Buh_sheregesh_31032021" --role "postgres" --no-password --clean  --section pre-data --section data --section post-data --verbose "/root/Buh_sheregesh3-2021-03-31.backup"

База изначально была создана с помощью консоли 1С.
606dc4dbc0328954647390.png
И вот, после восстановления бэкапа я получаю следующее.

WARNING: errors ignored on restore: 23685
You have mail in /var/spool/mail/root

Другие бэкапы так же пытался восстановить. Количество ерроров меняется, но суть остаётся неизменной.
Я получаю следующее.
606dc59f11e41489778376.png
И вот полный текст.
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:
по причине:
Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
XX000: ERROR: There are 2 candidates for ‘mchar_pattern_fixed_prefix’ function’

по причине:
Ошибка СУБД:
XX000: ERROR: There are 2 candidates for ‘mchar_pattern_fixed_prefix’ function’

Что то мне подсказывает что это может быть типичная ошибка новичка, но я пока ума не приложу, в какую сторону копать?

PS. Я понимаю что и CentOS старый, и PGSQL. Но пока не было возможности остановить предприятие более чем на 8 часов, что бы всё перенести, а текучку никто не отменял:(

In this article, we will see how to solve "pg_restore: error: input file appears to be a text format dump. Please use psql". As you might be aware that pg_dump and pg_restore are the most widely used utilities to backup and restore PostgreSQL databases. So it is not very uncommon to face an error like this while trying to restore or rebuild the database from the dump which you have taken through pg_dump utility. Something similar happened to me as well when I tried to take the dump of my PostgreSQL cyberithub_db database. Here I am going to explain you more about the error that I faced and the possible solutions that you can use to solve this problem.

Solved "pg_restore: error: input file appears to be a text format dump"

Also Read: How to Install Mojo on Ubuntu 20.04 LTS (Focal Fossa)

Now coming back to the error again, usually when you try to restore database using pg_restore utility from the dump you have taken using pg_dump utility then you might see "pg_restore: error: input file appears to be a text format dump. Please use psql" as it happened with me as you can see below.

postgres@ubuntu:~$ pg_restore -d cyberithub_db cyberithub.dump
pg_restore: error: input file appears to be a text format dump. Please use psql.

While above error could occur due to different reasons but most of the time it is because you have not specified the correct format while trying to take the dump of your database using pg_dump utility. For example, in my case this error happened because I forgot to use -F c with pg_dump command while trying to take the dump of my cyberithub_db database as you can see below.

postgres@ubuntu:~$ pg_dump cyberithub_db > cyberithub.dump

If you are also facing above error then to fix it you can think of using below two working solutions depending on your use case scenario.

Solution 1: Use psql to restore

When you do not use the correct format while taking the dump of your database using pg_dump utility then by default it takes the dump in plain text SQL file irrespective of the format you are using in the dump file name. So when you try to restore or rebuild your database from that dump, it would think it is a plain text SQL file and hence it will ask to restore using psql utility as pg_restore won’t able to detect the magic number to restore. So basically to solve this problem, you need to restore simply by running psql -f cyberithub.dump command as shown below.

postgres@ubuntu:~$ psql -f cyberithub.dump
SET
SET
SET
SET
SET
set_config
------------

(1 row)

SET
SET
SET
SET

You can also specify the username by using -U <user_name> with psql command as shown below.

postgres@ubuntu:~$ psql -U postgres -f cyberithub.dump
SET
SET
SET
SET
SET
set_config
------------

(1 row)

SET
SET
SET
SET

Solution 2: Use pg_dump with correct format

Another solution that you can follow to fix this problem is that you can retake the dump by specifying correct option with pg_dump utility. For example if you need to take the dump in .dump format then you can use -F c as shown below.

postgres@ubuntu:~$ pg_dump -F c cyberithub_db > cyberithub_db.dump

Similarly, if you would like to take dump in .tar format then you need to use -F t as shown below.

postgres@ubuntu:~$ pg_dump -F t cyberithub_db > cyberithub_db.tar

Now if you try to restore or rebuild the database from the dump you took into an existing database called cyberithub_db then it should work fine as expected. For example, in my case when I tried to restore from cyberithub_db.dump into cyberithub_db database using pg_restore utility then it worked fine as expected.

postgres@ubuntu:~$ pg_restore -d cyberithub_db cyberithub_db.dump

If in case, you don’t have a database to restore or would like to recreate the database from dump then you need to use -C option as well with above pg_restore command. So now the command will look like below.

postgres@ubuntu:~$ pg_restore -C -d cyberithub_db cyberithub_db.dump

Similarly, if you try to restore the database from .tar dump into cyberithub_db database then you need to run like below. It should work fine without showing any error.

postgres@ubuntu:~$ pg_restore -d cyberithub_db cyberithub_db.tar

To recreate database from dump, just like as shown above, here also you need to add -C option with pg_restore command as shown below.

postgres@ubuntu:~$ pg_restore -C -d cyberithub_db cyberithub_db.tar

Hope above solution would be enough to solve your "pg_restore: error: input file appears to be a text format dump. Please use psql" as well. Please let me know for any feedback or suggestions in the comment box.

Понравилась статья? Поделить с друзьями:
  • Ошибка при восстановлении данных sai
  • Ошибка при входе на сайт госзакупок
  • Ошибка при входе на портал госуслуги
  • Ошибка планирования это
  • Ошибка при входе на кристаликс