Я хочу импортировать очень большой sql-файл в свой тестовый сервер db, файл составляет около 50 ГБ. Проблема в том, что если я делаю mysql -uuser -p < sqlfile.sql
, это займет очень долгое время из-за самого времени загрузки файла.Потоковые файлы в командной строке
Так что я хотел бы разбить файлы на очень мелкие куски размером 100 МБ, используя split -bytes=100M
, но проблема заключается в том, что разделение не будет выровнено по SQL-выражению (сломанные инструкции вставки, охватывающие границы файлов).
Теперь мой вопрос: есть ли способ передать несколько файлов в командной строке? что-то вроде
mysql -user -p <1.sql < 2.sql < 3.sql
и так далее, если это возможно, я смогу сделать некоторые оболочки сценариев-фу, чтобы использовать xargs
и for
цикл, чтобы сделать это для всех файлов в каталоге?
EDIT: Моя попытка разделить файлы регулируется этим сообщением, How to import LARGE sql files into mysql table. Кажется, проблема такая же, как у меня. Ну, тестовый сервер - 8 ГБ, Xeon Quadcore, и я попробовал то же самое на другом сервере с 20 ядрами 144 ГБ, и он закончил отлично с 11-часовым временем исполнения (общий с большим количеством напряжений в CPU/RAM)). На тестовом сервере процесс еще не завершен. Поэтому я думаю, что это оперативная память + загрузка файла. Поправьте меня, если я ошибаюсь.
Почему все это имеет значение, если вы делаете это сразу или нет? Это нужно сделать в конце концов, не так ли? –
11 часов для файлов размером 50 ГБ ??? Не могли бы вы разместить свой 'mycnf.conf'. Также нет проблем с импортом больших файлов: 'nohup mysql -A {учетные данные + база данных при необходимости}
ravnur
попытаться установить большие значения для переменных _max_allowed_packet_ и _read_buffer_size_ в файле конфигурации – vadchen