Задать вопрос
  • Какую SQL базу данных под Linux лучше использовать с FTP через FUSE?

    Melkij
    @Melkij
    используй nfs/samba или иной протокол сетевых файловых систем. в них есть функциональность доступа к части файла. в них есть работа с частями файла, что используется в базах данных.

    и всё равно огромные вопросы к durability на уровне "никогда не пытайтесь запускать базу на nfs"
  • Почему после востановления из бекапа появляется таблица которой не было в базе?

    Melkij
    @Melkij
    значит эта таблица была в test3 до вызова pg_restore

    PS: какой смысл вы хотели получить от откровенно бесполезного если не сказать вредного -F t ?
  • Как решить проблему с индексами в timescale?

    Melkij
    @Melkij
    Для начала, конечно, поставить минорные обновления и проверить, сохраняется ли проблема на актуальных версиях.

    pg_stat показывал много запросов одинаковых в state=idle

    state=idle по своему определению не выполняет никакого запроса. Показывает последний выполненный когда-то в прошлом.

    А потом, если это оказалось живой проблемой, не исправленной уже в дальнейших обновлениях, собираете нормальные симптомы вместо невнятного "сервер падает".
  • Как проверить бекап postgres что он не битый?

    Melkij
    @Melkij
    Посмотрите в документации того, чем вы запускаете pg_dump. Я не узнаю такой стиль конкатенации строк и затрудняюсь угадать что это.
    В bash код возврата предыдущей команды сохраняется в $?
  • Как проверить бекап postgres что он не битый?

    Melkij
    @Melkij
    так код возврата.
    И то что stderr пуст. Ненормальный размер результирующего файла тоже вполне неплохая дополнительная проверка, да.

    мой PS был про права доступа, от сохранения которых вы почему-то отказываетесь через --no-owner --no-privileges
    -F plain , конечно, тоже дискуссионен сам по себе
    --no-tablespaces скорей всего tablespaces у вас всё равно нет, а --no-unlogged-table-data - ну тут на усмотрение. В unlogged таблицах конечно не должно быть ничего что нельзя в любой момент безвозвратно потерять.
    цель --verbose просто непонятна, но раз хочется - то сомнительных моментов от этого не вижу
  • Домен покупают или арендуют?

    Melkij
    @Melkij
    для этого потребовалось бы бесконечно много времени и бесконечно много памяти.

    на самом деле вполне конечное. У нас есть определённое верхнее ограничение в 63 байта на label. Далее RFC требует быть case-insensitive и разрешает использовать только a-z, 0-9, и -
    То есть в каждой доменной зоне возможно большое, но всё-таки конечное число доменов.
  • Как правильно настроить партиции в pgsql?

    Melkij
    @Melkij
    что нужно сделать, чтобы ошибки не сыпались?

    Может быть, прочитать текст ошибки? При необходимости, перевести на другой язык.
    Обе ошибки - не какие-то загадочные глубины внутренностей субд, а намеренно предназначены чтобы быть прочитанными разработчиком приложения, то есть вами, если это ваш код.
  • Почему возникает ошибка при восстановлении PiTR Postgres WAL-G?

    Melkij
    @Melkij
    собственно по первой маленькой базе выглядит так, что причина проблемы именно в малой активности и объёме. Нет WAL в архиве, перед которым нужно остановиться для достижения заданного recovery_target_time. А пока нет wal - recovery не может понять, то ли можно завершать работу уже т..к. изменений и не будет или это проблема и невозможно достичь заданного pitr т.к. отсутствуют требуемые wal.
    Для продакшена это можно решить используя archive_timeout - база будет по меньшей мере раз в этот интервал переключать сегмент wal и архивировать. Но на неактивной базе это соответственно даст много пустых WAL по объёму.

    по requested timeline 12 is not a child of this server's history - соответственно разбираться с таймлайнами. Каждый таймлайн - это promote (а так же успешный выход из point in time recovery при recovery_target_action = promote), то есть разветвление истории изменений. recovery_target_timeline можно использовать для восстановления на нужный timeline, но для этого, конечно, надо понимать, где какой таймлайн.
  • Почему возникает ошибка при восстановлении PiTR Postgres WAL-G?

    Melkij
    @Melkij
    когда снятие этого бекапа base_000000180000000000000057 было завершено?
    00000019000000000000005D есть в архиве?
    что в wal_g_restore_command.log?
  • Как скопировать данные с одной таблицы в другую и обновить данные?

    Melkij
    @Melkij
    попробую угадать, что id у вас был сделан типа serial, затем вставили какие-то строки с константными id, не дав сиквенсу выделить значения. Теперь сиквенс генерирует значения, по его мнению свободные, но которые уже записаны в таблицу вручную. Нужно выставить setval сиквенсу на следующее значение относительно реально существующих.
  • Не открываются порты 8890, 8891, 5222. Что делать?

    Melkij
    @Melkij
    Вроде прослушиваются:

    иии где, например, 8890 или 5222?
  • В postgresql параметр max_wal_size - размер всех сегментов или одного?

    Melkij
    @Melkij
    %f , %p и ещё пару замен делает в этой строке сам postgresql перед запуском этой команды на выполнение. Для запущенной команды на этих местах будут действительные строки с конкретным именем сегмента WAL и куда именно его надо положить для продолжения восстановления.

    Подход простой, хотя и архаичный. Закончили redo сегмента - дёрнули restore_command для получения следующего сегмента.
  • В postgresql параметр max_wal_size - размер всех сегментов или одного?

    Melkij
    @Melkij
    restore_command = 'wal-g wal-fetch "%f" "%p"'
    раз архив есть всё равно.

    wal_keep_size (wal_keep_segments) константного размера хранение избыточных WAL как раз для реплик
    или слоты репликации. Если будете делать слоты - то желательно выставить какой-то max_slot_wal_keep_size чтобы забытый слот не уронил собственно базу, тем более если с мастера реплицируете

    по времени возможности нет.
  • В postgresql параметр max_wal_size - размер всех сегментов или одного?

    Melkij
    @Melkij
    нет, никак не ограничивает. Размер одного сегмента WAL - это wal_segment_size. Задаётся только при initdb и меняется только чёрной магией которую я описывать не буду потому что часто приводит к необратимой потере всей базы.

    Если мне условно нужно хранить wal для последние 12 часов то это

    То это странная постановка задачи, уточните настоящую цель.
  • Хранят ли доски объявлений удалённые объявления?

    Melkij
    @Melkij
    Потому что удаление записи из базы данных - это тяжелый запрос. Проще пометить как удаленный.

    Смотря какой базе. MVCC базам проще как раз удалить.
  • Как правильно настроить pgbouncer и postregsql?

    Melkij
    @Melkij
    pool size = сколько коннектов базы может использовать баунсер для комбинации имя_пользователя + имя_бд.
    Может быть равен количеству бекенд серверов разве что по случайному совпадению.

    при pool mode=transaction коннект базы предоставляется подключённому к баунсеру клиенту на время этой транзакции (запрос вне транзакции так же есть транзакция). Пришло условно одновременно 30 запросов от разных клиентов - при pool size 20, 20 клиентов получили по коннекту с базой и начали выполняться, остальные начинают ждать пока освободится коннект базы. После завершения транзакции освободившийся коннект передаётся следующему желающему что-то сделать с базой.

    Один процесс базы не может выполнять одновременно два запроса, а значит получаем, что если запрос выполняется за 10мс, то при pool size 10 будет теоретический предел пропускной способности 1000rps.
    При том, что очень важно, это не значит что на всего 8-ядерном CPU при pool size 20 будет возможно удвоить результат. Результат может стать даже хуже, потому что конкурентные процессы будут драться между собой за CPU и активно мешать друг другу работать.

    Размер пула подбирается по действительной ситуации и по мониторингу.
  • Как настроить рабочую среду для установки расширения pgTap?

    Melkij
    @Melkij
    contrib - это не про контрибьюторов, это contrib, набор всяких расширений в репозитории postgresql. Теоретически их можно не ставить, но фактически нужны буквально на каждой продовой базе, потому что именно там расположен pg_stat_statements. Даже если приложению не требуются какие-нибудь pgcrypto/ltree/pg_trgm или ещё чего полезное.

    лет 5 назад в deb репу даже прекратили собирать contrib в отдельный пакет, а перенесли в пакет сервера базы. Dervim пока что продолжает собирать отдельно для rpm.
  • Как настроить рабочую среду для установки расширения pgTap?

    Melkij
    @Melkij
    затрудняюсь ответить по такой экзотике. Я дебианщик, с yum на вы

    а вообще pgtap в репе вроде как лежит уже собранный https://yum.postgresql.org/15/redhat/rhel-7-x86_64...
  • Можно ли копировать PostgreSql с базами данных утилитой robocopy?

    Melkij
    @Melkij
    смотря на сколько корректно атомарный снэпшот при этом получается (и не выключали ли fsync, как 1с-ники обожают себе отстреливать ноги). В идеальном случае получается crash recovery, аналогичный сбою по питанию. С точки зрения СУБД ситуация ожидаемая, но тестировать бекап на возможность восстановиться из него всё равно нужно будет.