Задать вопрос
  • Как сформировать календарь периодов по неделям в разрезе месяцев?

    Melkij
    @Melkij
    То есть, если неделя находится на стыке месяца/года, то она должна разделяться на 2 отдельные строки, с указанием периода недели в первом месяце/году, и остальной частью периода недели в следующем месяце/году.

    Обычно недели как раз рассматриваются как цельная сущность и это более чем нормально, когда 1 января 2023 года - это 52 неделя 2022 года.
  • Почему тип столбца xml не проверяет входное значение?

    Melkij
    @Melkij
    и в чём разница, если это одна и та же input функция? Можно переписать в create table с insert'ами, букв куда больше, а результат не поменяется.
  • Как выяснить причину "выпадания" ssd nvme из системы при копировании на него больших файлов?

    Melkij
    @Melkij
    запустите sudo dmesg --follow , потом спровоцируйте I/O error.
    Попробуйте переставить во другой слот M.2, судя по спецификации материнки, их у вас два и оба могут принять PCI-E устройство.
    Возможно, доступны обновления прошивки накопителя, где что-нибудь полезное было исправлено
    Ну и температуры смотреть

    Надо ли упоминать "забекапьте лишний раз всё важное" или и так понятно?
  • Как правильно очищать archived WAL логи PostgreSQL?

    Melkij
    @Melkij
    LSN только монотонно растёт и однозначно сопоставляется с именем WAL файла. Поэтому если не делать специально чего-то сильно странного, то да, только по имени можно судить о возрасте этого сегмента и его необходимости для восстановления. Собственно, именно по имени restore_command и запрашивает сегменты WAL.
  • Как скопировать данный из RAID 1 диска?

    Melkij
    @Melkij
    есть диск, на котором есть данные

    были данные.
    Поскольку это не простые CMR HDD - то далеко не факт, что данные вообще где-то сохранились, даже если на накопитель больше не было записи.

    А если вы понимаете, что такое и для чего нужен raid1 - то зачем его упоминание в вопросе? Вы ведь должны тогда понимать, что вопрос "как восстановить по ошибке удалённые данные" практически не имеет отличий, был там raid1 или сразу устройство. Зато первичное важное - файловую систему - вы вовсе не назвали.
  • Какую 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 часов то это

    То это странная постановка задачи, уточните настоящую цель.