Flyway 4.1, 4.2 несовместим со строгим режимом Percona PXC

После обновления до Flyway 4.2.1 мы начали получать ошибку во время выпуска в кластер Percona MySQL. Ошибка, которую мы получаем:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.dbsupport.FlywaySqlException: 
Unable to acquire MySQL named lock: Flyway-605484229
----------------------------------------------------
SQL State  : HY000
Error Code : 1105
Message    : Percona-XtraDB-Cluster prohibits use of GET_LOCK with pxc_strict_mode = ENFORCING

Похоже, Flyway 4.1+ пытается заблокировать стол, а строгий режим Percona PXC не позволяет этого сделать.

Я полагаю, что мой вопрос: можем ли мы что-то сделать на стороне Flyway 4.1+, чтобы избежать этой ошибки (все работало в Flyway 4.0 раньше), или единственный вариант, который у нас есть, - отключить строгий режим PXC в Percona?

Спасибо!

1 ответ

Явные блокировки в PXC не распространяются на весь кластер. Это может привести к неизвестным / нежелательным последствиям. Таким образом, в более современных версиях PXC, pxc_strict_mode был введен, чтобы предотвратить непреднамеренные побочные эффекты.

Если ваше приложение изолирует записи только на 1 узел, вы можете изменить настройку на MASTER который сохраняет большинство принудительного поведения за исключением проверок блокировки таблицы.

Это также переменная уровня сеанса, поэтому изменение ее только для этой операции не повлияет на другие сеансы.

С другой стороны, если он работал в 4.0 и не работает в 4.1, и ничего не изменилось на стороне БД, то это проблема для разработчиков Flyway. Это явно функция / функциональность, которую они добавили, и она должна была иметь возможность отключить.

Другие вопросы по тегам