[personal profile] klink0v

Прилетело мне от неких мурзилок (вместо слова "мурзилка" подставьте конструкцию из трехэтажного мата) весёлое наследство. Пара десятков Postgres-овских серверов, "размазанных" по куче виртуалок в пределах одной технической площадки. Мягко говоря, очень хочется "слить" всё это хозяйство в один "большой" Postgres чтобы его можно было хоть как-то обслуживать. И вроде бы с виду задача не то чтобы сильно сложная: на каждом таком сервере хранится ровно одна база данных, размер которой не превышает 50 ГБайт, а большинство из них по 1...2 ГБайта. Но всё это существенно усугубляется комбинацией из нижеследующих вводных.

  • Там CentOS 7 + PostgreSQL 12. Да-да, вот такой давным-давно никем не поддерживаемый тухляк в 2026-м году.
  • Это всё крутится в проде и останавливать его больше чем на полчаса нельзя.
  • Внутри некоторых из таких баз данных содержатся таблицы с примерно 10...15 миллионами строк, в которых лежат BLOB-ы.
  • На хост-машинах установлены обычные 2.5" SAS-овые шпиндели.

Сперва я пошёл "в лоб". pg_dump | pg_restore и всё вот это. Результат не понравился. Всё затыкается на импорте тех самых BLOB-ов: шпиндели "не вывозят". На тестовую "перекачку" самой толстой базы ушло более пяти часов. Такой downtime мне никто никогда не согласует.

Что с этим делать, не очень понятно. В бинарном виде не перегнать, потому что идет объединение нескольких инстансов постгреса в один, к тому же и версии разные. Перегонять "по кускам" теоретически возможно, практически малореально: велик риск напортачить, плюс базы данных не партиционированные и непонятно что там реально нужно, а что просто балласт. Да и человеко-часов на такое уйдёт тоже мама не горюй. Оставить "как есть", просто подняв версию постгреса и перевесить на актуальный дистрибутив? Тоже плохо. Уже сейчас-то это всё поддерживать не возьмешься, а г...но ещё и ширится. И когда в бинарном виде мигрируешь с красных шапок на Debian, у постгреса бьются построенные по строкам индексы, не спрашивайте почему. Тоже так себе вариант.

Пока что на ум приходит только вытащить из закромов of Rодина пару SSDшек, заменить ими шпиндели в каком-нибудь сервере, поотключать все возможные журналы, fsync, synchronous_commit и попробовать ещё раз. Может и случится чудо.

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

Можно было бы долбануться на отличненько и засунуть целиком виртуалку с постгресом-реципиентом в RAM-диск. Но, увы, нет на той площадке настолько толстой железки. То есть сам реципиент допустим ещё как-то влезет, но всё остальное тоже куда-то девать нужно, а некуда.

Шо то фигня, шо это фигня.

Избегайте мурзилок и весёлого наследства.

Date: 2026-03-13 02:47 pm (UTC)
burbilog: (Default)
From: [personal profile] burbilog
Ой.

Что-то у меня очко жим-жим при идее слить в один большой постгрес разные базы. Это какая-то мегаединая точка отказа....

Profile

Sergeich

March 2026

S M T W T F S
12345 6 7
8 91011 121314
15 16 17 18 1920 21
22232425262728
293031    

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 23rd, 2026 06:11 pm
Powered by Dreamwidth Studios