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

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

63 ответов

89 просмотров

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 на эту тему бесполезно, если что.

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта