Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 22

Для желающих использовать ваш Managed Postgres я бы писал про то, что резко распухший WAL молча положит базу, когда закончится место, а саппорт будет откатывать ее пару часов с рекомендациями "просто влейте больше денег и сделайте себе мониторинг, это не наши проблемы".

На хостах есть cron, который раз в минуту проверяет оставшееся место и если осталось меньше 3%, уводит базу в read-only, чтобы остаться доступным хотя бы на чтение. Ну и в обратную сторону, соответственно, если место освободилось. Проблема в том, что на диске самого маленького объёма (10 ГБ) эти 3% места могут закончиться сильно быстрее, чем за минуту. Тут поведение у нас ничем не отличается от поведения конкурентов или ситуации, которая была бы у вас в случае базы в вашей собственной виртуалке/на железе.

Системным же решением нам видится автоматический resize диска при заканчивающемся месте (с возможностью это выключить пользователем, конечно). Про это написано в планах на будущее.

У меня были диски по 20gb для базы 10gb (объем данных) с приростом меньше 1мб в день и она умерла совсем, не read-only. Возможно cron появился после того это фейла.


Самый большой косяк, который был — мне восстановили базу и она опять умерла через час без нагрузки с той же проблемой (это было ясно заранее по графикам).


База маленькая, я быстро перевел ее на self hosted (как было всегда) и живу дальше, все ок, кроме 3ч дайнтайма апи. База — самое критическое, что есть у бизнеса, ваш подход меня совсем не устроил.

Cron этот существует с незапамятных времён. Потому что всё описанное в статье работает внутри компании (для разработчиков Яндекса) с 2016 года.

Дай, пожалуйста, номер обращения в support. И ещё вопрос, кластер состоял из одного хоста?

Кластер из двух хостов, параметры уже не помню.
156208280873784

Посмотрел ещё раз в это обращение. Возможно, база и росла со скоростью 1 МБ в день, но тогда вы её агрессивно перезаписывали, потому что в логах было такое:


[ 2019-07-02 18:45:49.881 MSK ,,,173628,00000 ]:LOG: checkpoints are occurring too frequently (49 seconds apart) [ 2019-07-02 18:45:49.881 MSK ,,,173628,00000 ]:HINT: Consider increasing the configuration parameter "max_wal_size".


Т.е. писали вы явно много. Про это вам support отвечал.


Ну и после того, как вы удалили кластер, к вам приходил менеджер, расспрашивал о произошедшем и рассказывал, почему и как такое произошло. А потому извините, но я буду считать ваш комментарий к статье набросом, а не конструктивным feedback'ом.

Мне жаль, что у меня тогда все было в огне (это реальный прод) и нужно было срочно исправить проблему, поэтому я не собрал подробный лог действий, а сейчас никакого желания пытаться сделать это еще раз.


Но я точно уверен, что с тех пор код не менялся, а база живет на похожей self hosted конфигурации без сбоев.


Может когда-то дойдут руки посмотреть как себя в таком случае ведет AWS RDS или Google Databases. И если у них так же падает бд, то к вам 0 вопросов и накидывать я перестану.


PS. База падала два раза.
image


После первого, сразу после восстановления и в течении часа до следующего


SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_relation_size(C.oid)) AS "size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_relation_size(C.oid) DESC
LIMIT 20;


показывал меньше 2gb. Я не представляю, что такого можно наапдейтить до падения (и до второго падения я написал в тех поддержку в tg, что сейчас все упадет еще раз и я не понимаю причину, ответили через пару часов на почту, что сам дурак стоит докинуть места)

Но я точно уверен, что с тех пор код не менялся, а база живет на похожей self hosted конфигурации без сбоев.

"У меня такая же нога и не болит" © Очевидно, что есть отличия в конфигурации. Например, вы с self-hosted базы архивируете WAL? Если нет, то вероятность закончиться месту под WAL'ом при активной записи, конечно же, сильно ниже, но тогда вы теряете возможность восстановиться из бэкапа на произвольный момент времени (а не только то время, когда был сделан бэкап).


BTW, указанный вами запрос некорректный. Функция pg_relation_size не покажет вам размеры индексов, правильнее использовать pg_total_relation_size.

Я понимаю, что конфигурации разные (и у вас она намного круче, потому что команда которая много лет админит pg). WAL не архивируется, просто master/slave с плейбуками на развертывания/свап и обычные бекапы по расписанию.


Возможно я плохо выразился. Я не хотел делать наброс или еще что. И спокойно допускаю, что мой скил плох (я же не настраиваю архивирования wal).


Но от сервиса, который обещает заботу про мою базу данных я ожидаю на порядок больше, потому что по идее он делается для тех, кто вообще ничего не понимает в администрировании. А если по какой-то причине клиент может косячить и нереально подложить соломы, то стоит выделить на это отдельную страницу в доке.


После каждого инцидента в моей инфраструктуре я добавляю метрики и алерты на это. Обычно повторов не бывает. Вы что-то сделали кроме рекомендации в личку "увеличьте диски, меньше пишите в базу"? Если ответ "мы не обязаны делать", то 0 вопросов.

Возможно я плохо выразился. Я не хотел делать наброс или еще что.

Просто Вы из довольно частного случая сделали довольно общий вывод.


Вы что-то сделали кроме рекомендации в личку "увеличьте диски, меньше пишите в базу"?

Да, у нас теперь значения параметров min_wal_size и max_wal_size выставляются в зависимости от размера диска. Ещё подкрутили параметры архивации WAL, чтобы в таких ситуациях база писала медленнее, а архивация работала быстрее. Ну и запланировали сделать auto resize диска, про это пишу уже не первый раз.

Катализаторов этого вывода послужила позиция "сами виноваты, ищите проблему у себя", без подробностей. Которую вы даже тут гнули до этого ответа. Без подробностей. И я тогда нашел проблему у себя — ваш сервис. Исправил.


Если бы мне на следующей день сказали, что min/max_wal_size поправили, запись замедлили, не повториться, то скорее всего я бы продолжил использовать сервис и перевел еще пару баз туда.


Я рекомендую знакомым ваши виртуалки и object storage, но базы данных… нет.

Оффтопик, конечно, но:
WebDAV на Яндекс.Диске угробили даже на платных тарифах, а альтернативы для бэкапов не предоставили. Использовать для этого Яндекс.Облако — жутко дорого.
Доверие к сервису, мягко говоря, подорвано.
Видимо, решили проспонсировать Mail.ru.
Пользуюсь Yandex Object Storage, на 250GiB пошифрованных бекапов на холодном storage class выходит всего 180 рублей в месяц.

Если сравнить по калькуляторам cloud.yandex.ru/prices, mcs.mail.ru/storage, то получается:
* Яндекс.Облако 0.67 рублей за 1ГБ/месяц.
* MCS 1.6 рублей за 1 ГБ/месяц.
А там есть возможность подключить его как обычный внешний диск?
Да, через s3fs github.com/s3fs-fuse/s3fs-fuse cloud.yandex.ru/docs/storage/instruments/s3fs
Работает с любыми s3 compatible объектными хранилищами.

Но я советую для бекапов пользоваться профильными утилитами, вроде restic.net, они умеют делать дедупликацию, шифрование, снапшоты и складывать в s3 сами без монтирования.

Яндекс.Диск:
image


Облако:
image


А вообще ваш комментарий не имеет никакого отношения к посту.

А теперь попробуйте этот Яндекс.Диск подключить по WebDAV, хотя бы как сетевой диск, и закачать туда файл в пару сотен мегабайт.
А насчёт Яндекс.Облака: вы «случайно» забыли надпись внизу:
«Дополнительно тарифицируется только исходящий трафик при потреблении более 10 ГБ за месяц по цене 0,96 ₽ за 1 ГБ. Входящий трафик не тарифицируется.» Но я уверен, что вы просто не заметили.
И пользоваться им хотя бы стандартным net use несколько проблематично.
Mail.ru за 750р/год для домашнего пользования и бэкапов — куда удобнее.

Какие у вас планы по кастом DNS для managed database?
Этот кейс проявляется, если я создаю managed сущности без публичного адреса и подключаюсь из on prem.

А как вы подключаетесь к базам без публичного адреса из on prem? VPN, Direct connect? Кажется, что пока единственным работающим решением будет на DNS-серверах в on prem (они же есть?) сделать форвардинг зоны mdb.yandexcloud.net в DNS-сервер Облака для вашей сети. Но это вряд ли можно назвать правильным решением.


В планах сейчас такого нет, потому что вы первый, кто спрашивает. Рекомендую это добавить в https://cloud.yandex.ru/community, чтобы другие люди эту идею лайкали и мы понимали приоритет этой задачи.

Всё так, direct connect, подняли как временное решение свои DNS серверы, потому что к Я.Облачным DNS из он према нет доступа. И это однозначно нельзя назвать правильным решением. У нас много разных цодов и облаков, делать форвардинг mdb.yandexcloud.net на эти две виртуалочки – ну прям вообще нехорошо. Разумно было бы в рамках VPC дать возможность прописать свою зону и эту зону уже форвардить. Да, это повлечет за собой историю с ключами и сертификатами. Да, потребуется доработка. Но это, на мой взгляд, единственный правильный вариант.
Очень печально слышать, что вы об этом не слышали. Мы это обсуждали на Yandex Scale, да и ваши аккаунт менеджеры заверяли, что FR завели. Придется усилить натиск.
У меня есть какая-то проблема с яндекс диском, но я не могу понять какая. Второй раз покупаю (на разные аккаунты) терабайт хранилища на год, пытаюсь подключить по webdav и он показывает 70 гигабайт. 9 разных компьютеров, 3 разные оси, 2 разных аккаунта и результат одинаковый. Делал всё по мануалам. Пришёл к выводу, что покупка яндекс диска это не для меня
WebDAV у них уже месяц нормально не работает. Причём так по-тихому отключили. Отличный сервис!
Интересно, у Яндекс.Облака тоже так будут тихо отключать функции?
PS: форумы с теми же проблемами:
toster.ru/q/677787
4pda.ru/forum/index.php?showtopic=375807&st=3840
Зарегистрируйтесь на Хабре, чтобы оставить комментарий