|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Ковыряюсь сейчас с древним Astra Linux 1.3 (Debian Wheezy с ядром 3.2.0), и нужно мне сделать синхронизацию идентичных таблиц на 5-ти хостах. Таблицы имеют идентичную структуру, имеют поле с PRIMARY KEY id, имеют поле с TIMESTAMP, имеют поле с UUID. Содержимое записей не меняется. Синхронизация должна быть двунаправленная (master-master?). То есть, нет никакой «главной» таблицы. Просто все записи, созданные на разных хостах, должны в итоге присутствовать на инстансах PostgreSQL на всех хостах. Скорость репликации не важна. Достаточно, если синхронизация будет происходить периодически. В минуту каждый хост может добавить в таблицу от 0 до ~1000 новых записей. В любой момент сеть может «развалиться» и хосты не смогут видеть друг друга, при этом новые записи будут создаваться. После восстановления сети все новые записи должны засинхронизироваться на всех хостах. Не факт, что все хосты будут работать одновременно. Может 4 хоста работать, а 1 быть выключен. После его включения он должен принять все данные, которые «пропустил» когда был выключен. Может быть и наоборот: работает только 1 хост, остальные выключены. После включения остальных хостов, данные с первого хоста должны перетечь на все остальные. * * * Сейчас я раздумываю, с помощью каких инструментов проще всего решить эту задачу. Насколько я понял, средства репликации, существующие для PostgreSQL 9.1 (тот же slony), умеют делать только master-slave репликацию, да и работа такой репликации в условиях нестабильной сети под большим вопросом. Мне нужно что-то более простое, типа pt-table-sync от Percona, только не для MySQL, а для PostgreSQL. И чтобы оно работало на древних линухах. Перед тем, как я начну писать решение на коленке, я хочу попробовать решить задачу уже готовыми инструментами . Кто что может предложить? Да, сменить дистрибутив не получится, ибо при аттестации/сертификации/лицензиации средства стандартного программного обеспечения зафиксированы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 16:34 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Что за форма регистрации Перед тем, как я начну писать решение на коленке, я хочу попробовать решить задачу уже готовыми инструментами . Кто что может предложить? Да, сменить дистрибутив не получится, ибо при аттестации/сертификации/лицензиации средства стандартного программного обеспечения зафиксированы. при такой постановке задачи вам придется таки велосипед делать... может поверх slony через http://www.slony.info/documentation/2.2/logshipping.html (чтобы хотя бы эту часть не писать самому). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 19:31 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
авторимеют поле с PRIMARY KEY id, Кстати, а что вы будете делать если на 2х хостах образуется 2 разные записи с одинаковым id. Или если это невозможно в вашей архитектуре то как это обеспечивается? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 21:36 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 08:11 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Maxim BogukКстати, а что вы будете делать если на 2х хостах образуется 2 разные записи с одинаковым id. Или если это невозможно в вашей архитектуре то как это обеспечивается? Конечно, могут быть одинаковые id в разных базах. Для уникальной идентификации сделано поле UUID. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 08:38 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
fte а оно есть 9.1? да еще и сертифицЫрованное... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 09:28 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
mefman, Дык в Астролинуксе вроде 9.6 есть, или я ошибаюсь? Postgres Pro Enterprise - ФСТЭК, МО нету BDR - естественно нет ничего ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 10:06 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Что за форма регистрации Maxim BogukКстати, а что вы будете делать если на 2х хостах образуется 2 разные записи с одинаковым id. Или если это невозможно в вашей архитектуре то как это обеспечивается? Конечно, могут быть одинаковые id в разных базах. Для уникальной идентификации сделано поле UUID. т.е. у вас в разных базах будет разные id для одного и того же uuid? а зачем вам вообще тогда id primary key? какую он функцию выполняет если идентификация записи по uuid идет? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 10:46 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
fte mefman, Дык в Астролинуксе вроде 9.6 есть, или я ошибаюсь? Postgres Pro Enterprise - ФСТЭК, МО нету BDR - естественно нет ничего Я не вникал. ТС написал, что текущие версии поменять не удастся. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 10:52 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
mefman Я не вникал. ТС написал, что текущие версии поменять не удастся. Да, не удасться. У нас сертифицирован Astra Linux 1.3, это да же не 1.5. Поэтому имеем PostgreSQL 9.1. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 10:55 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Maxim Boguk а зачем вам вообще тогда id primary key? какую он функцию выполняет если идентификация записи по uuid идет? Есть идея синхронизироваться по "точкам синхронизации", которые и представляют из себя id. То есть, иметь, например, на каждом узле список точек синхронизации с другими узлами. Например, для 1-го узла будет таблица: Код: php 1. 2. 3. 4. 5.
И тогда для получения новых данных нужно будет просто запросить новые строки с id больше, чем записано в таблице, после чего обновить значение id в таблице. Запрашивать новые данные по точке во времени нельзя по следующей причине. В сети, помимо пяти хостов с PostgreSQL имеется куча хостов, которые на PostgreSQL-хост складывают данные (этот хост Мастером зовется, но не в смысле репликации master-slave). Когда сеть распадается, в отвалившемся сегменте появляется свой Мастер. Далее возможна ситуация, когда в этом отвалившемся сегменте «проснулся» давно не работавший хост, и выстрелил на мастер из своего кеша старые данные со старым временем (да у всех хостов еще есть SQLite-кеш). То есть, на Мастере отвалившегося сегмента появилась "вставка" старых данных. И таких вставок может быть несколько. И не надо забывать, что на нем же происходит и добавление новых данных. Потом сеть собирается, и Мастера должны засинхрить свои таблицы. Если ориентироваться по времени, то есть синхрить от последней временнОй точки синхронизации, то "вставка" старых данных обнаружена не будет. А вот если синхрится по id, то старые данные со старым временем, в момент их приема Мастером, получат новый id, и при синхронизации с другими Мастерами они будут обнаружены. Но и у этой идеи есть проблемы. Если на каком-то Мастере будет очищена база, или база будет "откатана" назад из какого-то бекапа, то новые id будут считаться с нуля. А в таблице синхронизации записаны какие-то большие id. И поэтому синхронизация заработает только после того, как id доберется до нужного значения. Или нужно каким-то образом следить, что если база обнулена, то и в таблице синхронизации нужно обнулить значение. Как такое слежение сделать, я пока не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 11:22 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Что за форма регистрации, сам не использую, не вникал, но на мейлинг лист пришло, и как-то вспомнил вопрос Bucardo можно посмотреть, может подойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 11:41 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Скачать свежую PG значит нельзя, а скачать Slony/Bucardo итд можно? Где логика? Почему бы не скачать подобным образом исходники БД, слегка их поправить, чтобы говорила всем что она версии 9.1, и не заниматься другими извращениями? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 13:19 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
mefman Скачать свежую PG значит нельзя, а скачать Slony/Bucardo итд можно? Где логика? Почему бы не скачать подобным образом исходники БД, слегка их поправить, чтобы говорила всем что она версии 9.1, и не заниматься другими извращениями? Ага. А потом после аудита безопасности идти в тюрьму?! :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 14:01 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
mad_nazgul mefman Скачать свежую PG значит нельзя, а скачать Slony/Bucardo итд можно? Где логика? Почему бы не скачать подобным образом исходники БД, слегка их поправить, чтобы говорила всем что она версии 9.1, и не заниматься другими извращениями? Ага. А потом после аудита безопасности идти в тюрьму?! :-) тогда и за внедрение Slony/Bucardo можно в тюрму сесть, и за самописные решения, если не озаботиться их сертификацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 14:50 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
mefman fte mefman, Дык в Астролинуксе вроде 9.6 есть, или я ошибаюсь? Postgres Pro Enterprise - ФСТЭК, МО нету BDR - естественно нет ничего Я не вникал. ТС написал, что текущие версии поменять не удастся. Дык, связываетесь с Postgres Pro ..., ежели Вас, всё устроит, то покупаете Postgres Pro Enterprise + support ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 15:46 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
mefman тогда и за внедрение Slony/Bucardo можно в тюрму сесть, и за самописные решения, если не озаботиться их сертификацией. Да, левые пакеты низзя, сертификацию не пройдешь. Можно, с гемором, самосборные из исходников пакеты, с полным описанием каждой переменной и функции на русском языке. Поэтому небольшой скрипт (до 10 тыщ строк) я смогу таки документировать, а что-то большее - это еще заняться автотрансляцией комментариев на руссиш и исправлением фраз их чтоб была связная речь а не бред транслятора. Для такого действия нужен очень серьезный повод: поставил, прописал IP хостов и имя синхронизирующейся таблицы, и оно сразу само заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 15:49 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Что за форма регистрации mefman тогда и за внедрение Slony/Bucardo можно в тюрму сесть, и за самописные решения, если не озаботиться их сертификацией. Да, левые пакеты низзя, сертификацию не пройдешь. Можно, с гемором, самосборные из исходников пакеты, с полным описанием каждой переменной и функции на русском языке. Поэтому небольшой скрипт (до 10 тыщ строк) я смогу таки документировать, а что-то большее - это еще заняться автотрансляцией комментариев на руссиш и исправлением фраз их чтоб была связная речь а не бред транслятора. Для такого действия нужен очень серьезный повод: поставил, прописал IP хостов и имя синхронизирующейся таблицы, и оно сразу само заработало. Думаю, если вы в состоянии написать собственную репликацию, вас с руками оторвут в месте где не будет сертЫфикаций. Этот вариант предпочтительней изобретения велосипеда для работы с бабушкиным дистрибутивом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 16:57 |
|
Синхронизация содержимого таблицы для PostgreSQL 9.1 в 2020 году
|
|||
---|---|---|---|
#18+
Что за форма регистрации mefman тогда и за внедрение Slony/Bucardo можно в тюрму сесть, и за самописные решения, если не озаботиться их сертификацией. Да, левые пакеты низзя, сертификацию не пройдешь. Можно, с гемором, самосборные из исходников пакеты, с полным описанием каждой переменной и функции на русском языке. Поэтому небольшой скрипт (до 10 тыщ строк) я смогу таки документировать, а что-то большее - это еще заняться автотрансляцией комментариев на руссиш и исправлением фраз их чтоб была связная речь а не бред транслятора. Для такого действия нужен очень серьезный повод: поставил, прописал IP хостов и имя синхронизирующейся таблицы, и оно сразу само заработало. Таких решений в готовом виде под вашу задачу - нет. Тем более под настолько старую версию базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 19:47 |
|
|
start [/forum/topic.php?fid=53&msg=39934907&tid=1994787]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 461ms |
0 / 0 |