Я создал инструмент ETL в Perl.Существует три сервера базы данных, с которыми взаимодействует инструмент ETL, например, dbserver1 (OLTP-сервер - Windows Box), dbserver2 (промежуточный сервер - linux Box), dbserver3 (OLAP-сервер, linux Box).Мой ETL-скрипт находится на dbserver 2.
Сценарии считывают данные из dbserver1 и переносят их в dbserver2 для некоторых trnsformation, выполняют преобразования и затем помещают данные в dbserver3.Для этого скрипт создает некоторые данные OUTFILE на dbserver2.Таким образом, существует два типа запросов OUTFILE:
- Запрос OUTFILE, который выполняется на dbserver1, создает .data на dbserver2, а
- Запрос OUTFILE, который выполняется на dbserver2, создает файл .data наdbserver2.
Второй запрос работает нормально, так как он создает файл на том же сервере.Но первый тип запроса дает мне следующую ошибку:
DBD::mysql::st execute failed: Can't create/write to file '\home\dbserver2\dumpfile.2011-11-04-03:02.data' (Errcode: 2) at stagingtransform.pl line 223, <> line 8.
Я полагаю, это связано с некоторыми правами пользователя.И если я не ошибаюсь, MySQL на dbserver2 имеет разрешения на чтение / запись на dbserver2, а MySQL на dbserver1 - нет.
Может ли это быть из-за того, что dbserver1 является Windows, а dbserver2 является Linux box?
Как мне решить эту проблему?
К вашему сведению: формат файла: dumpfile.yyy-mm-dd-hh: mm.data и я также установили параметры AppArmor для MySQL на dbserver2, который предназначен для MySQL на dbserver2.