PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Експортирайте големи данни от PostgreSQL към AWS s3

Когато експортирате голям дъмп на данни, най-голямата ви грижа трябва да бъде смекчаването на грешките. Дори ако можете да наситете GB мрежова връзка, преместването на 10 TB данни ще отнеме> 24 часа. Не искате да се налага да рестартирате това поради повреда (като изчакване на връзката с базата данни).

Това означава, че трябва да разделите експорта на няколко части. Можете да направите това, като добавите ID диапазон към оператора select вътре в копието (току-що редактирах вашия пример, така че може да има грешки):

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 на GB за трансфер на данни между AZ - с 10TB това са $100 - така че се уверете, че тези EC2 машини са в същата AZ като машината с база данни.

Това също означава, че можете да извършите разтоварването, докато базата данни не е заета по друг начин (т.е. извън нормалното работно време).

И накрая, това означава, че можете да тествате своя процес и можете да коригирате всякакви грешки в данните, без да се налага да изпълнявате цялото експортиране (или да обработвате 10TB данни за всяка корекция).

От страна на импортирането Redshift може да зарежда множество файлове паралелно . Това трябва да подобри общото ви време, въпреки че не мога да кажа колко.

Едно предупреждение:използвайте манифестен файл а не префикс на име на обект. Сблъсквал съм се със случаи, при които евентуалната консистенция на S3 причинява изпускане на файлове по време на зареждане.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се свърже с базата данни на Postgres със стека Bitnami Django

  2. SQL, където обединеният набор трябва да съдържа всички стойности, но може да съдържа повече

  3. Достъп до отдалечен Postgres сървър с pgAdmin

  4. Изведете да/не вместо t/f за булев тип данни в PostgreSQL

  5. Създаване на Django обект и Postgres последователности