Re: Логическая репликация 10

Поиск
Список
Период
Сортировка
От vlads
Тема Re: Логическая репликация 10
Дата
Msg-id web-42075095@mx62.intranet.ru
обсуждение исходный текст
Ответ на Re: Логическая репликация 10  (Sergey Grinko <sergey.grinko@gmail.com>)
Ответы Re: Логическая репликация 10  (Dmitriy Dobrotvorskiy <ddobrotvorskiy@plesk.com>)
Список pgsql-ru-general
Хорошие идеи, но платные.
Задача проста - между двумя базами следует производить 
обмен через одну таблицу:
ВКакуюБазуИдутДанные  Данные 
 ДатаПередачиДанныхДляСортировки

Пока всё работает через сторонние таблицы и планировщиком 
обмена, который стягивает информацию с других баз.

Второй вариант попробовал успешно, но настроек просто 
море:
В обоих БД:
CREATE TABLE public.test
(
     x SERIAL NOT NULL,
     val text,
     ok boolean NOT NULL DEFAULT false,
     CONSTRAINT test_pkey PRIMARY KEY (x)
)
WITH (
     OIDS = FALSE
)


БД1 последовательно
DROP SUBSCRIPTION slave;
DROP PUBLICATION master;
DELETE from test
CREATE PUBLICATION master FOR TABLE test   WITH (publish = 
'insert,delete');
CREATE SUBSCRIPTION slave CONNECTION 'hostaddr=127.0.0.1 
user=postgres dbname=postgres password=пароль port=порт' 
   PUBLICATION master;

INSERT INTO test(val) VALUES ('v1'), ('v2');
DELETE from test WHERE ok=true;
SELECT * FROM test;


БД2
DROP SUBSCRIPTION slave;
DROP PUBLICATION master;
DELETE from test
CREATE PUBLICATION master FOR TABLE test   WITH (publish = 
'update');
CREATE SUBSCRIPTION slave CONNECTION 'hostaddr=127.0.0.1 
user=postgres dbname=postgres password=пароль port=порт' 
   PUBLICATION master;

UPDATE test set ok=true where val='v1';
SELECT * FROM test;

Так получается, что БД1 может отправлять данные для БД2, А 
как только БД2 поставит ОК=true БД1 сама удалит эту 
строку. Т.е. БД1 создаёт строки и удаляет, БД2 - обновляет 
строки.
Т.е. для каждого направления обмена надо создавать свою 
таблицу, публицакию и свою подписку.
А можно ли в строке
CREATE PUBLICATION master FOR TABLE test   WITH (publish = 
'update');
сделать вместо (publish = 'update') - ещё какие-то 
условия, например, AND ВкакуюБазу='База2', что не уменьшит 
подписок, но по крайней мере уменьшит число таблиц. Надо 
попробовать.

Ну или предложите ещё альтернативу.


> Можно посмотреть ещё в этом направлении (шардирование 
>таблиц по нескольким
> узлам, писать можно на любой узел):
> https://postgrespro.ru/docs/enterprise/10/pg-shardman
> но тут или брать уже готовую за деньги сборку от 
>компании postgrespro или
> же попробовать самому собрать свой форк по их 
>инструкции.
> Пока ещё тоже находится в развитии..
> 
> С уважением, Сергей Гринько
> Email: sergey.grinko@gmail.com
> 
> 7 августа 2018 г., 15:01 пользователь Москаленко Сергей 
><
> msvpersonal@yandex.ru> написал:
> 
>> https://www.2ndquadrant.com/en/resources/postgres-bdr-2ndquadrant/
>> пока за деньги
>> opensource анонсировано в 12-й версии postgresql
>>
>> 07.08.2018, 12:48, "vlads" <vlads@ngs.ru>:
>>
>> Добрый день.
>> Почитал я про логическую репликацию, довольно удобно
>> работает.
>> Однако она рассчитана на master-slave
>> А есть ли логическая репликация master-master (ОС 
>>Windows)
>> подскажите варианты.
>>
>>
>>
>>
>>
>> --
>> С уважением!
>> Москаленко Сергей
>> Эл. почта: MSVpersonal@yandex.ru
>> Skype: servlamo
>>
>>



В списке pgsql-ru-general по дате отправления:

Предыдущее
От: Sergey Grinko
Дата:
Сообщение: Re: Логическая репликация 10
Следующее
От: Dmitriy Dobrotvorskiy
Дата:
Сообщение: Re: Логическая репликация 10