172 похожих чатов

Всем привет. Как называется утилита для бэкапов?

63 ответов

14 просмотров

pg_dump!

tetro_gramatone- Автор вопроса

Из поставки — pg_basebackup. Есть много сторонних, и лучше использовать их.

tetro_gramatone
Спасибо

Погоди, щас ещё накидают и расскажут, что это не бекап.

Можно я буду использовать в тривиальных случаях? Спасибо!

Роман Жарков
Можно я буду использовать в тривиальных случаях? С...

Да пожалуйста (его может вообще использовать каждый, кому не нужны ни business continuity... ни данные, если "повезёт"). ;)

Yaroslav Schekin
Да пожалуйста (его может вообще использовать кажды...

Вот я в чате лет эдак пять. И кажется, я постоянно пропускаю пример потери данных пэгэдампом.

Роман Жарков
Вот я в чате лет эдак пять. И кажется, я постоянно...

Вот уж я зарекался давать примеры concurrency в чатах (потому что, как выясняется, мало кто способен нажимать на кнопки в указанном порядке)... но вот, специально для Вас — возьмите и воспроизведите: -- Preparation: CREATE SCHEMA db; SET search_path = 'db'; CREATE TABLE t1(id int PRIMARY KEY); CREATE TABLE t2(id int PRIMARY KEY, x int NOT NULL); -- This is just for more fun, not actually required to reproduce the problem: ALTER TABLE t1 ADD FOREIGN KEY (id) REFERENCES t2(id); INSERT INTO t2(id, x) VALUES (1, 1), (2, 1), (3, 1), (4, 1), (5, 1); INSERT INTO t1 VALUES (1), (2), (3); -------------------------------------------------------------------------------- -- Repro: BEGIN TRANSACTION; LOCK TABLE t1; -- Start pg_dump now, e.g.: -- pg_dump -d test_dump -f test_dump.sql -- (it'll hang) ALTER TABLE t2 ALTER COLUMN x TYPE bigint; COMMIT; -- The dump will successfully (!) finish. Check it.

Yaroslav Schekin
Вот уж я зарекался давать примеры concurrency в ча...

А чё не dd в процессе копирования? Гораздо надёжнее сломается.

Роман Жарков
А чё не dd в процессе копирования? Гораздо надёжне...

Я что, здесь сделал что-то нештатное, извините? Или Вы явно и ото всех требуете не дышать не выполнять DDL, когда делаете дампы? ;)

Yaroslav Schekin
Я что, здесь сделал что-то нештатное, извините? Ил...

Можно ещё электошокером в накопитель тыкать. Вполне штатная функция.

Роман Жарков
Можно ещё электошокером в накопитель тыкать. Вполн...

Это что, стадия "отрицание"? ;) Мне повторить вопрос?

Yaroslav Schekin
Я что, здесь сделал что-то нештатное, извините? Ил...

Да. Отключить пользователей, сдампить и включить назад. Очень просто и надёжно.

Роман Жарков
Да. Отключить пользователей, сдампить и включить н...

И пусть весь мир подождёт (несколько часов, например). Тем не менее, Вы просили пример потери данных — и вот он! Вообще, так можно долго продолжать в духе "не, ну так нельзя делать"... и "ой, а вот этого же тоже нельзя" (если я начну показывать, как снимаются невосстанавливаемые дампы, например — но это мы тут уже видели)? И все эти "нельзя" должны обеспечиваться тем, что DBA постоянно стоит над пользователями и бьёт их по рукам, если что не так, я правильно понимаю? ;)

Yaroslav Schekin
И пусть весь мир подождёт (несколько часов, наприм...

Нет, не правильно. Человек берёт свою настольную базу и дампит.

Yaroslav Schekin
И пусть весь мир подождёт (несколько часов, наприм...

так какое средство из коробки? ))))))) сторонние не принмаются

Роман Жарков
Нет, не правильно. Человек берёт свою настольную б...

И она не дампится или не восстанавливается, представляете? Потому что кто-то ранее там сделал то, что "нельзя" (с чем админы/программисты 1С даже иногда сталкиваются на практике). Так как насчёт этого, а?

Yaroslav Schekin
И она не дампится или не восстанавливается, предст...

Вы, Ярослав, всё ещё не понимаете, что мир состоит не только из DBA, которые лочат таблицы в процессе дампа.

Роман Жарков
Вы, Ярослав, всё ещё не понимаете, что мир состоит...

А Вы, Роман, так и не поняли, что: . Дамп — это "игрушка", и те "DBA", кто его использует для DR, такие же "игрушечные" DBA. . Для того, чтобы получилось "не дампится или не восстанавливается", лочить не нужно. У меня начинает появляться впечатление, что Вы просто игнорируете те части моих сообщений, которые Вам не нравятся. ;( > то добрые DBA их регулярно проверяют. Отлично, проверили — не восстанавливается (повторения не помогают). Какие действия, конкретно? Или попытались снять — не снимается (повторения не помогают). Какие действия, конкретно?

Yaroslav Schekin
А Вы, Роман, так и не поняли, что: . Дамп — это "и...

Ещё раз. Пишу специально медленно: нет DBA. Есть настольная база, с которой работает пользователь. Или даже два пользователя. Не DDL фигачат, а работают с данными. Есть приложения, которым требуется бекенд с СУБД. И надо развернуть базу на произвольной платформе. И вот среди этих людей ваши "настоящие" DBA с "настоящими" (чем там? DR?) пусть будет DR — ноль целых хрен десятых процента.

Роман Жарков
Ещё раз. Пишу специально медленно: нет DBA. Есть н...

Ещё раз. Пишу специально медленно: > Не DDL фигачат, а работают с данными. DDL для того, чтобы такое случилось (не потеря данных в дампе, а именно невозможность снять или восстановить дамп) не нужен. Так что насчёт того, что им делать, если с ними это вдруг случится? > И надо развернуть базу на произвольной платформе. Да, для этого можно использовать дамп — это совсем не DR. > пусть будет DR Так я про него и писал. Вроде, достаточно медленно. ;) > ноль целых хрен десятых процента. Т.е. грамотных специалистов в СУБД там нет. Но, если взять аналогичную ситуацию, то топор не является лучшим хирургическим инструментом, например. ;)

Yaroslav Schekin
Ещё раз. Пишу специально медленно: > Не DDL фигач...

Кстати, как ваш «настоящий» бекап с линукса на виндовс утащить?

Роман Жарков
Кстати, как ваш «настоящий» бекап с линукса на вин...

Никак. Именно потому, что это backup. А на вопросы Вы так и не ответите, я правильно понял?

Yaroslav Schekin
Никак. Именно потому, что это backup. А на вопрос...

Зачем? Если вам нравится называть бекапом нечто, что переживает параллельный DDL — то я не против. Соглашаться с этим определением я не буду.

Роман Жарков
Зачем? Если вам нравится называть бекапом нечто, ч...

Да затем, что Вам нравится называть бекапом нечто, что иногда невозможно снять или восстановить. И Вы этот "несущественный" момент ловко игнорируете уже... в третий раз, нет? ;) > Соглашаться с этим определением я не буду. К счастью, определениям не требуется, чтобы с ними был согласен Роман Жарков. ;) Тем не менее, речь-то даже не об этом...

Роман Жарков
pg_dump is a utility for backing up a PostgreSQL d...

Очередная ошибка в документации (по которой издалека видно, что её писали не DBA, а программисты).

Ага. Ссылка не проставилась на тред от скорости :)

Yaroslav Schekin
https://www.postgresql.org/message-id/159976559573...

Мда. Кажется, до слова pg_dump никто там не дочитал даже :)

Может быть, но мне уже как-то... https://t.me/pgsql/478971 Но кто угодно может выхватить знамя из рук падшего бойца, в конце-то концов (я только за). ;)

Yaroslav Schekin
Может быть, но мне уже как-то... https://t.me/pgsq...

Ненене. Мне нравится считать, что таблица, аккуратно переписанная на бумажку — это бекап.

Роман Жарков
Ненене. Мне нравится считать, что таблица, аккурат...

переписаная двумя людьми после сверки третьим - несомнееенно 😜

Роман Жарков
Ненене. Мне нравится считать, что таблица, аккурат...

Да кто угодно может считать, как хочет — пока с другими людьми не надо общаться. ;) https://xkcd.com/1860/ А вообще, практическая суть тут не в терминологии.

Роман Жарков
Ненене. Мне нравится считать, что таблица, аккурат...

Вы устарели, господа. Нынче модно фотографировать скрин таблицы с монитора на телефон. При этом телефон надо держать вертикально.

Роман Жарков
Вот я в чате лет эдак пять. И кажется, я постоянно...

Да много раз бывало. Пропустит какую-нибудь таблицу из-за нетакой строчки...

Ilya Anfimov
Да много раз бывало. Пропустит какую-нибудь таблиц...

Где-то тут пролетела проблема строчки длиной ~250 мег. pg_restore кажется спотыкается не осилив аллоцировать больше гига памяти.

Роман Жарков
Где-то тут пролетела проблема строчки длиной ~250 ...

На слишком длинных полях "сломается" уже pg_dump. Тоже легко воспроизводится: CREATE SCHEMA db; SET search_path = 'db'; CREATE TABLE t(x bytea); INSERT INTO t(x) SELECT repeat('a', 1000000000)::bytea; -- Trying to dump it: pg_dump: error: Dumping the contents of table "t" failed: PQgetResult() failed. pg_dump: detail: Error message from server: ERROR: invalid memory alloc request size 2000000003 pg_dump: detail: Command was: COPY db.t (x) TO stdout; И это всё, "приплыли".

Ilya Anfimov
Да много раз бывало. Пропустит какую-нибудь таблиц...

Ну дамп-то не должен такого делать в теории, поэтому про это хоть можно писать bug reports...

Yaroslav Schekin
На слишком длинных полях "сломается" уже pg_dump. ...

Проблема в том, что это не проблема пэгэдампа как такового :)

Роман Жарков
Проблема в том, что это не проблема пэгэдампа как ...

А чья же это проблема? pg_dump такой базы выполнить невозможно, вот в чём суть.

Konstantin Zaitsev
И считается что это нормально?

По крайней мере, в сообществе всем на это как-то ... ;(

Yaroslav Schekin
На слишком длинных полях "сломается" уже pg_dump. ...

Да чо приплыли. Дампишь всё, кроме данных этой таблицы, для этой таблицы кидаешь COPY всего, кроме проблемных строк, для проблемных строк — пишэшь отдельный update по 50 мегабайт кусками. Первый раз что ли...

Никто не чешэтся. И да, там надо начинать со всяких pluggable toaster и API для стриминга длинеых значений...

Ilya Anfimov
Да чо приплыли. Дампишь всё, кроме данных этой таб...

При чём тут UPDATE?! Тут кто-то хотел "копию" базы для чего-то там (а то и DR), понимаете? Так что, если использовать именно pg_dump, то в момент, когда это происходит, система костылей и подпорок на основе pg_dump просто накрывается — вот поэтому "приплыли".

Konstantin Zaitsev
Прекрасное) когда исправят?))))

Ну и да, для восхитительных умниц тех, кто доигрался с дампами, есть https://github.com/lzlabs/pg_dumpbinary (но я лично никогда не пользовался).

Yaroslav Schekin
Ну и да, для восхитительных умниц тех, кто доиграл...

Просто прекрасно, ну да jsonb пилить лучше 😂😂😂😂

Yaroslav Schekin
При чём тут UPDATE?! Тут кто-то хотел "копию" баз...

Ну, вот дамп несдампился или незагрузился — поднимаешься, пишэшь обёртку, в которой всё работает.

Ilya Anfimov
Ну, вот дамп несдампился или незагрузился — подним...

Точно, этим дармоедам-DBA на работе делать-то больше нечего ;) Чего только не выдумают, чтобы не пользоваться адекватными инструментами...

Роман Жарков
Воспроизводится без pg_dump.

Второй день продолжается битва титанов...

Роман Жарков
Воспроизводится без pg_dump.

Разумеется, а Вы чего ожидали? Именно из того, что PostgreSQL — не full-ACID RDBMS (когда речь идёт о конкурентном DDL), следует, что у pg_dump всегда будут проблемы в подобных ситуациях. Соответственно, писать bug repots на эту тему бесполезно, если что.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта