При экспорте большого дампа данных вашей главной заботой должно быть смягчение сбоев.Даже если вы могли бы заполнить сетевое соединение ГБ, перемещение 10 ТБ данных займет> 24 часа.Вам не нужно перезапускать его из-за сбоя (например, тайм-аут соединения с базой данных).
Это означает, что вы должны разбить экспорт на несколько частей.Вы можете сделать это, добавив диапазон идентификаторов в оператор выбора внутри копии (я только что отредактировал ваш пример, поэтому могут быть ошибки):
COPY (SELECT (ID, NAME, ADDRESS) FROM CUSTOMERS WHERE ID BETWEEN 0 and 1000000) TO ‘CUSTOMERS_DATA_0.CSV WITH DELIMITER '|' CSV;
Вы бы,конечно, генерировать эти заявления с короткой программой;не забудьте изменить имя выходного файла для каждого.Я рекомендую выбрать диапазон идентификаторов, который дает вам гигабайт или около того для каждого выходного файла, в результате чего получается 10 000 промежуточных файлов.
Где вы пишете эти файлы, зависит от вас.Если S3FS достаточно надежен, я думаю, это хорошая идея.
Разбивая выгрузку на несколько более мелких частей, вы также можете разделить ее на несколько экземпляров EC2.Вы, вероятно, насытите пропускную способность машины базы данных всего несколькими читателями.Также имейте в виду, что AWS взимает 0,01 доллара США за ГБ за передачу данных между AZ - с 10 ТБ, что составляет 100 долларов США, поэтому убедитесь, что эти компьютеры EC2 находятся в том же AZ, что и компьютер базы данных.
Это также означает, что выможет выполнять выгрузку, когда база данных не занята (т. е. вне обычного рабочего времени).
Наконец, это означает, что вы можете протестировать свой процесс и исправить любые ошибки данных, не запускаявесь экспорт (или обработка 10 ТБ данных для каждого исправления).
На стороне импорта Redshift может загружать несколько файлов параллельно .Это должно улучшить ваше общее время, хотя я не могу точно сказать, сколько.
Одно предупреждение: используйте файл манифеста вместо префикса имени объекта.Я сталкивался со случаями, когда возможная последовательность S3 приводила к удалению файлов во время загрузки.