У меня есть много ограничений на то, где я могу запускать сценарии, получать доступ к источникам и целям и иметь достаточно места для подготовки данных для задачи.
Я получаю заархивированный дамп базы данных от хостинг-провайдера.
Я разделяю распакованные команды так, чтобы INSERT INTO
строк помещались в один файл, а все остальные — во второй.
Затем я создаю структуры базы данных из второй.
Я конвертирую операторы INSERT INTO
в CSV-файлы, связанные с таблицами.
Наконец, я загружаю CSV-файлы параллельно (до 50 таблиц одновременно), и таким образом Дамп текстового файла объемом 130 ГБ клонируется за 3 часа вместо 17 часов, которые потребовались бы при использовании метода «оператор за оператором».
В 3 часа я включаю:
- копия окончена (10 минут),
- проверка работоспособности (10 минут) и
- фильтрация журналов (10 минут), так как записи в журнале должны быть только за последний учебный год.
Удаленный заархивированный файл размером от 7 ГБ до 13 ГБ передается по линии 40 МБ/с.
Загрузка осуществляется на удаленный сервер по линии 40 МБ/с.
Если ваш сервер mysql является локальным, скорость загрузки может быть выше.
Я использую scp, gzip, zgrep, sed, awk, ps, mysqlimport, mysql и некоторые другие утилиты для ускорения распаковки и фильтрации (pv, rg, pigz), если они доступны.
Если бы у меня был прямой доступ к серверу базы данных, предпочтительным решением был бы LVM с возможностями моментальных снимков на уровне папок, дающий вам скорость, ограниченную только скоростью копирования носителя.
person
amfipolis
schedule
25.03.2021