Size: a a a

pgsql – PostgreSQL

2021 March 30

С

Сергей in pgsql – PostgreSQL
Добрый день!
Подскажите по синхронной репликации.
Дано мастер - сервер работающие в режиме синхронной репликации, если слейв падает то мастер переходит в readonly.
Можно это поведение как то изменить настройками в конфиге?
Сделать так чтобы мастер продолжил работать с возможностью записи или это лишено смысла?
источник

SM

Setplus Mac in pgsql – PostgreSQL
Setplus Mac
Коллеги, подскажите, пожалуйста.

Есть такой PREPARED MULTIPLE INSERT:

PREPARE p_insert (character varying(20), inet, integer, inet, integer, character varying(64), character varying(96), character varying(255), character varying(64), character varying(64), character varying(9), integer) AS INSERT INTO tablename (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12), ($13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24);

Далее выполняю

EXECUTE p_insert ( ... ) , ( ... );

postgres говорит следующее:

ERROR:  syntax error at or near ","
LINE 1: ...G75VZCQRN6JBKR3I28BXVPYUQ00B6JY','DZEAYFNZ4',4788), ('QIP3I5...

Подскажите, в чём дело?
Если просто INSERT сделать, без PREPARE — запрос проходит
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Сергей
Добрый день!
Подскажите по синхронной репликации.
Дано мастер - сервер работающие в режиме синхронной репликации, если слейв падает то мастер переходит в readonly.
Можно это поведение как то изменить настройками в конфиге?
Сделать так чтобы мастер продолжил работать с возможностью записи или это лишено смысла?
Убрать синхронную репликацию )
Всегда приходится балансировать между надёжностью и доступностью
источник

С

Сергей in pgsql – PostgreSQL
Сергей Кравчук
Убрать синхронную репликацию )
Всегда приходится балансировать между надёжностью и доступностью
Так то я это понимаю)
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Setplus Mac
Коллеги, подскажите, пожалуйста.

Есть такой PREPARED MULTIPLE INSERT:

PREPARE p_insert (character varying(20), inet, integer, inet, integer, character varying(64), character varying(96), character varying(255), character varying(64), character varying(64), character varying(9), integer) AS INSERT INTO tablename (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12), ($13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24);

Далее выполняю

EXECUTE p_insert ( ... ) , ( ... );

postgres говорит следующее:

ERROR:  syntax error at or near ","
LINE 1: ...G75VZCQRN6JBKR3I28BXVPYUQ00B6JY','DZEAYFNZ4',4788), ('QIP3I5...

Подскажите, в чём дело?
EXCUTE  позволяет разбивать параметры на группы. Так что все параметры должны быть внутри одних скобочек.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Konstantin Knizhnik
EXCUTE  позволяет разбивать параметры на группы. Так что все параметры должны быть внутри одних скобочек.
Не очень понял.

В самом PREPARE поместить все $i в одни скобки или в EXECUTE все значения должны быть в одних скобках?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Коллеги, подскажите, пожалуйста.

Есть такой PREPARED MULTIPLE INSERT:

PREPARE p_insert (character varying(20), inet, integer, inet, integer, character varying(64), character varying(96), character varying(255), character varying(64), character varying(64), character varying(9), integer) AS INSERT INTO tablename (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12), ($13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24);

Далее выполняю

EXECUTE p_insert ( ... ) , ( ... );

postgres говорит следующее:

ERROR:  syntax error at or near ","
LINE 1: ...G75VZCQRN6JBKR3I28BXVPYUQ00B6JY','DZEAYFNZ4',4788), ('QIP3I5...

Подскажите, в чём дело?
Покажите лучше всё целиком, без "..." — проблема где-то там, скорее всего.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Сергей
Добрый день!
Подскажите по синхронной репликации.
Дано мастер - сервер работающие в режиме синхронной репликации, если слейв падает то мастер переходит в readonly.
Можно это поведение как то изменить настройками в конфиге?
Сделать так чтобы мастер продолжил работать с возможностью записи или это лишено смысла?
Нет, нельзя. Но никто не мешает перекофигурировать "мастер" в "не мастер" прямо "на лету", впрочем (если правильно помню).
источник

С

Сергей in pgsql – PostgreSQL
Сергей Кравчук
Убрать синхронную репликацию )
Всегда приходится балансировать между надёжностью и доступностью
Есть же параметр synchronous_standby_gap, который по описанию вроде должен давать работать мастеру пока его не догонит слейв.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Покажите лучше всё целиком, без "..." — проблема где-то там, скорее всего.
EXECUTE p_insert ('QIP3I5YG6CC358JCHI2L','113.219.6.208',4607,'77.9.78.87',2146,'XU9MM2B96SRM0WSNZ954SCBDW2603OBDQFFIB8H7872KKBIAIWMITV9TEZX3BPJJ','8ZHDYY2EHKZJJ1AFCAFM5EWU7DHL3C098BQD2MX0SZ6WK1Y1CZP65DGM3C8LHV2EKFMYYJ3FNWNWG2ELJDEAXZOMZJV7MFWZ','aaaaaa','Q0Y7KL5H4T24YH798G7M3S4ZBKGHF2K1UHDQ36E4OOPWA0U5ZQN22NS1O48LFGMX','55O9K3JVJ72Q8HZ5G1W2RDCKDOSC5EJSPG75VZCQRN6JBKR3I28BXVPYUQ00B6JY','DZEAYFNZ4',4788),('YHB0D92HR654DN35ZY5P','200.179.3.153',93,'101.112.115.219',314,'93YY09MRUWZZWFNSEC19ZRGF77AVNC36BNYKN0JEH0TB1ZCS1BXHARTGA0IK5NMW','CIPZHBCCR8INN7LOAMPLXRVC1S37NGZA2ECP1BAXQL4ITABL4SS1B9P50FK1H3GS42ZF60AVB66QYJDN20OVOLT0GWIT8Y7N','aaaaaaaa','7JQNMXECBV3GEOB2244DS7UD4U9MLEU9MWQK4QXQE8DRZUVJWS6KHGT9ZHV48083','LG7X56HMR7G4TJYNL08B1B0UTMD13B4GQQ1E5RJ0M9YPHTLGGGLH5EWXZV7ZQVJY','DWVWW6746',8905);
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Сергей
Есть же параметр synchronous_standby_gap, который по описанию вроде должен давать работать мастеру пока его не догонит слейв.
Нет, в vanilla PostgreSQL такого параметра нет. А про fork-и надо спрашивать у их авторов.
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Сергей
Есть же параметр synchronous_standby_gap, который по описанию вроде должен давать работать мастеру пока его не догонит слейв.
А если мастер при этом рухнет ? Какой тогда смысл от такой "синхронности" ?
Что она есть, что ее нет
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
EXECUTE p_insert ('QIP3I5YG6CC358JCHI2L','113.219.6.208',4607,'77.9.78.87',2146,'XU9MM2B96SRM0WSNZ954SCBDW2603OBDQFFIB8H7872KKBIAIWMITV9TEZX3BPJJ','8ZHDYY2EHKZJJ1AFCAFM5EWU7DHL3C098BQD2MX0SZ6WK1Y1CZP65DGM3C8LHV2EKFMYYJ3FNWNWG2ELJDEAXZOMZJV7MFWZ','aaaaaa','Q0Y7KL5H4T24YH798G7M3S4ZBKGHF2K1UHDQ36E4OOPWA0U5ZQN22NS1O48LFGMX','55O9K3JVJ72Q8HZ5G1W2RDCKDOSC5EJSPG75VZCQRN6JBKR3I28BXVPYUQ00B6JY','DZEAYFNZ4',4788),('YHB0D92HR654DN35ZY5P','200.179.3.153',93,'101.112.115.219',314,'93YY09MRUWZZWFNSEC19ZRGF77AVNC36BNYKN0JEH0TB1ZCS1BXHARTGA0IK5NMW','CIPZHBCCR8INN7LOAMPLXRVC1S37NGZA2ECP1BAXQL4ITABL4SS1B9P50FK1H3GS42ZF60AVB66QYJDN20OVOLT0GWIT8Y7N','aaaaaaaa','7JQNMXECBV3GEOB2244DS7UD4U9MLEU9MWQK4QXQE8DRZUVJWS6KHGT9ZHV48083','LG7X56HMR7G4TJYNL08B1B0UTMD13B4GQQ1E5RJ0M9YPHTLGGGLH5EWXZV7ZQVJY','DWVWW6746',8905);
Ну так у Вас параметры в разных скобках, в самом деле. В EXECUTE нет такого синтаксиса.
EXECUTE name [ ( parameter [, ...] ) ]

https://www.postgresql.org/docs/current/sql-execute.html
источник

С

Сергей in pgsql – PostgreSQL
Сергей Кравчук
А если мастер при этом рухнет ? Какой тогда смысл от такой "синхронности" ?
Что она есть, что ее нет
С этим я согласен.
Но в данной ситуации слейв пропал, а работать базе надо.
Получается данные вещи только скриптом отрабатывать.
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Setplus Mac
Не очень понял.

В самом PREPARE поместить все $i в одни скобки или в EXECUTE все значения должны быть в одних скобках?
В EXECUTE
источник

С

Сергей in pgsql – PostgreSQL
Или не делать синхронную реплику.
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Сергей
С этим я согласен.
Но в данной ситуации слейв пропал, а работать базе надо.
Получается данные вещи только скриптом отрабатывать.
Или отказываться от синхронной репликации
Если вам доступность важнее надёжности
Или иметь 2 реплики
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Ну так у Вас параметры в разных скобках, в самом деле. В EXECUTE нет такого синтаксиса.
EXECUTE name [ ( parameter [, ...] ) ]

https://www.postgresql.org/docs/current/sql-execute.html
Да, точно, спасибо.
Невнимательный
источник

SM

Setplus Mac in pgsql – PostgreSQL
Да-да, спасибо!
источник

С

Сергей in pgsql – PostgreSQL
Спасибо.
источник