Не удалось выполнить задачу миграции при загрузке локального файла данных во время переноса данных из RDS MySQL в базу данных Azure для MySQL с использованием Attunity Replicate MSM

Я пытаюсь перенести данные из Amazon RDS MySQL в базу данных Azure для MySQL, используя "Attunity Replicate for Microsoft Migrations(Replicate MSM)".
Для этого я локально устанавливаю инструмент "Репликация МСМ" на компьютере с Windows 10, затем определяю и тестирую конечные точки исходной и целевой базы данных, например. RDS в качестве источника и Azure в качестве цели, установите необходимые драйверы mysql, odbc и включите двоичное ведение журнала, параметры локального infile в обеих базах данных. Но теперь, когда я запускаю задачу переноса, она только создает схемы перенесенных таблиц в целевой базе данных и не выполняет команду "load data local infile". Вот трассировка стека:

00014468: 2019-06-20T11:17:41 [SOURCE_UNLOAD   ]I:  Unload finished for table 'TestDb'.'Employee' (Id = 1). 2000 rows sent.  (streamcomponent.c:2892)
00014968: 2019-06-20T11:17:41 [TARGET_LOAD     ]I:  Loading table 'migrationtesting'.'Employee' with parallel threads  (odbc_endpoint_imp.c:5256)
00014968: 2019-06-20T11:17:41 [TARGET_LOAD     ]I:  Use parallel load thread pool with '3' threads  (csv_target.c:280)
00014968: 2019-06-20T11:17:42 [TARGET_LOAD     ]I:  Load finished for table 'TestDb'.'Employee' (Id = 1). 2000 rows received. 0 rows skipped. Volume transfered 904960  (streamcomponent.c:3116)
00014968: 2019-06-20T11:17:43 [TARGET_LOAD     ]E:  Failed to execute statement: 'load data local infile "C:\\Program Files\\Attunity\\ReplicateMSM\\data\\tasks\\Aws2Azure\\data_files\\1\\LOAD00000001.csv" into table `migrationtesting`.`Employee` CHARACTER SET UTF8 fields terminated by ','  enclosed by '"' lines terminated by '\n'( `id`,`name`,`gender`,`mobile`,`city` ) ;' [1022502]  (ar_odbc_stmt.c:4349)
00014968: 2019-06-20T11:17:43 [TARGET_LOAD     ]E:  RetCode: SQL_ERROR  SqlState: HY000 NativeError: 1148 Message: [MySQL][ODBC 5.3(w) Driver][mysqld-5.6.39.0]The used command is not allowed with this MySQL version [1022502]  (ar_odbc_stmt.c:4355)
00007376: 2019-06-20T11:17:43 [TASK_MANAGER    ]W:  Table 'TestDb'.'Employee' (subtask 1 thread 1) is suspended  (replicationtask.c:2050)
00014968: 2019-06-20T11:17:43 [TARGET_LOAD     ]E:  Failed to start load process for file '1' [1022502]  (csv_target.c:1350)
00007376: 2019-06-20T11:17:43 [TASK_MANAGER    ]I:  All tables are loaded. Full load only task is stopped  (replicationtask.c:2992)
00014968: 2019-06-20T11:17:43 [TARGET_LOAD     ]E:  Failed to load file '1' [1022502]  (csv_target.c:1418)
00014968: 2019-06-20T11:17:43 [TARGET_LOAD     ]E:  Failed to load data from csv file. [1022502]  (odbc_endpoint_imp.c:5331)

Согласно документам Azure:

LOAD DATA INFILE поддерживается, но параметр [LOCAL] должен быть указан и направлен в UNC-путь (хранилище Azure, смонтированное через SMB).

если это решение, пожалуйста, объясните, как его реализовать.

Примечание. Версия MySQL Server для RDS и AZURE - 5.6.

1 ответ

Решение

Поскольку в журналах ошибок указывается, что вы используете v5.3 MySQL ODBC Driver, в котором функциональность LOAD DATA INFILE по умолчанию отключена, для этого нам нужно явно установить значение ENABLE_LOCAL_INFILE равным 1. В репликации Attunity для миграций Microsoft, вы должны включить этот флаг для конечной точки вашей целевой базы данных, вы можете включить его, выполнив следующие действия...

  • Откройте настройки целевой конечной точки.

  • Перейдите на вкладку "Дополнительно"> "Внутренние параметры".

  • Добавьте поисковый ключ AdditionalConnectionProperties и нажмите Enter. (он чувствителен к регистру, так что просто скопируйте / вставьте то же самое)

  • Вы можете видеть, что новый ключ был создан во внутренних параметрах, введите значение для этого вновь созданного ключа как: ENABLE_LOCAL_INFILE = 1;

  • Сохраните, а затем перезагрузите вашу задачу.

Кредиты: Официальное сообщество Attunity/ команда поддержки Microsoft Migrations

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