[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-диск. Но, увы, нет на той площадке настолько толстой железки. То есть сам реципиент допустим ещё как-то влезет, но всё остальное тоже куда-то девать нужно, а некуда.

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

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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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

Style Credit

Expand Cut Tags

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