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

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

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

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

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

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

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

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

С уважением,

Макс

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

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

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

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

0 голосов
/ 26 июня 2018

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

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

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

В общем случае утверждение безопасно, если оно детерминировано, и небезопасно, если оно нет.

...

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

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

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

...