Импортировать дамп MySQL в Google SQL - unique_checks = 0 не является детерминированным

0

В настоящее время я пытаюсь импортировать mysqldump (~ 60 ГБ), включая триггеры и хранимые процедуры, в экземпляр базы данных Google Cloud sql.

Я установил log_bin_trust_function_creators в true/on с terraform и лишил часть DEFINER из моих триггеров с помощью perl.

Я попробовал импорт с помощью функции импорта gcloud sql и веб-консоли (импорт из хранилища) каждый раз, когда в стеке появляется такая же ошибка.

серьезность: "ОШИБКА"
textPayload: "2018-06-26T10: 48: 42.727799Z 87406 [Warning] Использование unique_checks = 0, которое не является детерминированным!"

Afaik unique_checks устанавливается во время сброса, чтобы ускорить импорт.
Я не мог ничего найти в Интернете.

Может ли кто-нибудь сказать мне, что означает ошибка, и как я могу это исправить?
Я хотел бы избежать сброса базы данных снова, потому что это берет навсегда.

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

С наилучшими пожеланиями,

Максимум

Теги:
google-cloud-sql

2 ответа

0

Существуют некоторые различия между облачным SQL и стандартными функциями MySQL, о которых вы должны знать. Проблема здесь, скорее всего, в триггерах. Вы можете попытаться отключить двоичные журналы. Взгляните на это сообщение SO.

Однако правильным подходом является выполнение дампа MySQL после документации, о которой вы упомянули.

Если ни один из вышеперечисленных шагов не выполнит эту работу, отправьте ошибки, которые вы получаете в журналах экземпляра Cloud SQL.

0

Предупреждение (а не ошибка!) Напрямую не связано с импортом данных, а также о том, как репликация настроена в целевой среде MySQL.

Как говорится в документации MySQL по определению безопасных и небезопасных выражений в двоичном протоколе (выделение - мое):

"Безопасность" выражения в репликации MySQL относится к правильности репликации оператора и его эффектов с использованием формата, основанного на операторах. Если это относится к утверждению, мы считаем утверждение безопасным; в противном случае мы называем это небезопасным.

В целом, выражение является безопасным, если оно детерминировано и небезопасно, если оно не является.

...

Ссылки на системные переменные. Большинство системных переменных не реплицируются правильно, используя формат, основанный на операторах. См. Раздел 17.4.1.39, "Репликация и переменные". Для исключений см. Раздел 5.4.4.3 "Формат смешанных двоичных журналов".

unique_checks=0 устанавливает системную переменную, и код, вероятно, устанавливает ее на глобальном уровне, что считается небезопасным в репликации на основе инструкций.

Либо измените код, чтобы установить unique_checks=0 на уровне сеанса (рекомендуется), либо измените тип двоичного журнала на mixed.

  • 0
    Я интерпретирую это как ошибку, потому что импорт останавливается из-за этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню