Не удалось выполнить задачу миграции при загрузке локального файла данных во время переноса данных из 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