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
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
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 (29.05 KiB) Просмотров: 6757
-
- 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: 18861С при том запускается но со сл ошибками:
скрины ошибок во вложеннии
логично, что 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С.
И вот, после восстановления бэкапа я получаю следующее.
WARNING: errors ignored on restore: 23685
You have mail in /var/spool/mail/root
Другие бэкапы так же пытался восстановить. Количество ерроров меняется, но суть остаётся неизменной.
Я получаю следующее.
И вот полный текст.
Невосстановимая ошибка
Ошибка при выполнении запроса 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.
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.