PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Ekspor data besar dari PostgreSQL ke AWS s3

Saat mengekspor dump data besar, perhatian terbesar Anda adalah mengurangi kegagalan. Bahkan jika Anda dapat memenuhi koneksi jaringan GB, memindahkan 10 TB data akan memakan waktu> 24 jam. Anda tidak ingin memulai ulang karena kegagalan (seperti waktu koneksi database habis).

Ini menyiratkan bahwa Anda harus memecah ekspor menjadi beberapa bagian. Anda dapat melakukannya dengan menambahkan rentang ID ke pernyataan pilih di dalam salinan (saya baru saja mengedit contoh Anda, jadi mungkin ada kesalahan):

COPY (SELECT (ID, NAME, ADDRESS) FROM CUSTOMERS WHERE ID BETWEEN 0 and 1000000) TO ‘CUSTOMERS_DATA_0.CSV WITH DELIMITER '|' CSV;

Anda tentu saja akan menghasilkan pernyataan-pernyataan ini dengan program singkat; jangan lupa untuk mengubah nama file output untuk masing-masing. Sebaiknya pilih rentang ID yang memberi Anda sekitar satu gigabyte per file keluaran, menghasilkan 10.000 file perantara.

Di mana Anda menulis file-file ini terserah Anda. Jika S3FS cukup andal, saya pikir itu ide yang bagus.

Dengan memecah pembongkaran menjadi beberapa bagian yang lebih kecil, Anda juga dapat membaginya di antara beberapa instans EC2. Anda mungkin akan memenuhi bandwidth mesin database dengan hanya beberapa pembaca. Perlu diketahui juga bahwa AWS mengenakan biaya $0,01 per GB untuk transfer data lintas-AZ -- dengan 10TB itu adalah $100 -- jadi pastikan mesin EC2 ini berada di AZ yang sama dengan mesin database.

Ini juga berarti bahwa Anda dapat melakukan pembongkaran saat database tidak sibuk (yaitu, di luar jam kerja normal).

Terakhir, ini berarti Anda dapat menguji proses Anda, dan Anda dapat memperbaiki kesalahan data apa pun tanpa harus menjalankan seluruh ekspor (atau memproses 10 TB data untuk setiap perbaikan).

Di sisi impor, Redshift dapat memuat banyak file secara paralel . Ini akan meningkatkan waktu Anda secara keseluruhan, meskipun saya tidak bisa mengatakan berapa banyak.

Satu peringatan:gunakan file manifes daripada awalan nama objek. Saya pernah mengalami kasus di mana konsistensi S3 pada akhirnya menyebabkan file dijatuhkan selama pemuatan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencari substring di PostgreSQL

  2. Bagaimana mencegah pengguna agar tidak dapat melihat database lain dan tabel dari database lain?

  3. PostgreSQL - Tetapkan nilai integer ke string dalam pernyataan kasus

  4. Agregat PostgreSQL khusus untuk rata-rata melingkar

  5. PL/pgSQL untuk kueri dinamis all-in-one