LINUX.ORG.RU

История изменений

Исправление manul91, (текущая версия) :

ЕМНИП я делал statement based репликацию, не знаю, лучший ли это вариант, но у меня проблем не было.

Statement-based можно только если есть абсолютная уверенность, что изменения в базе всегда абсолютно детерминированы (не зависят от внешнего мира/окружения, crypto, random, всяких там датах и т.д.).

Вам наверное, повезло; это может привести к необнаруживаемым ошибкам и неконсистентностей

Например (второй случай), если приложение выкатывает такую последовательность на мастере:

insert into author author.id=uuid(), …..

{select last-insert-id … берет последний primary key для автора какой получился, пусть id=‘blah-blah-87AZ..’)

insert into article …., author.id = ‘blah-blah-87AZ..’

… на слейве при statement-репликации такое либо не пройдет, либо данные вообще откатятся и запись будет отсутствовать (если в трансакции, и innodb с foreign key constraint) т.к. для author.id слейв у себя сгенерит другой uuid.

С датами еще хуже

Исправление manul91, :

ЕМНИП я делал statement based репликацию, не знаю, лучший ли это вариант, но у меня проблем не было.

Statement-based можно только если есть абсолютная уверенность, что изменения в базе всегда абсолютно детерминированы (не зависят от внешнего мира/окружения, crypto, всяких там датах и т.д.).

Вам наверное, повезло; это может привести к необнаруживаемым ошибкам и неконсистентностей

Например (второй случай), если приложение выкатывает такую последовательность на мастере:

insert into author author.id=uuid(), …..

{select last-insert-id … берет последний primary key для автора какой получился, пусть id=‘blah-blah-87AZ..’)

insert into article …., author.id = ‘blah-blah-87AZ..’

… на слейве при statement-репликации такое либо не пройдет, либо данные вообще откатятся и запись будет отсутствовать (если в трансакции, и innodb с foreign key constraint) т.к. для author.id слейв у себя сгенерит другой uuid.

С датами еще хуже

Исходная версия manul91, :

ЕМНИП я делал statement based репликацию, не знаю, лучший ли это вариант, но у меня проблем не было. Statement-based можно только если есть абсолютная уверенность, что изменения в базе всегда абсолютно детерминированы (не зависят от внешнего мира/окружения, crypto, всяких там датах и т.д.).

Вам наверное, повезло; это может привести к необнаруживаемым ошибкам и неконсистентностей

Например (второй случай), если приложение выкатывает такую последовательность на мастере:

insert into author author.id=uuid(), …..

{select last-insert-id … берет последний primary key для автора какой получился, пусть id=‘blah-blah-87AZ..’)

insert into article …., author.id = ‘blah-blah-87AZ..’

… на слейве при statement-репликации такое либо не пройдет, либо данные вообще откатятся и запись будет отсутствовать (если в трансакции, и innodb с foreign key constraint) т.к. для author.id слейв у себя сгенерит другой uuid.

С датами еще хуже