Mengekspor data snapshot klaster DB ke Amazon S3 - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengekspor data snapshot klaster DB ke Amazon S3

Anda dapat mengekspor data snapshot klaster DB ke bucket Amazon S3. Proses ekspor berjalan di latar belakang dan tidak memengaruhi performa klaster DB aktif Anda.

Saat Anda mengekspor snapshot klaster DB, Amazon Aurora akan mengekstrak data dari snapshot tersebut dan menyimpannya di bucket Amazon S3. Anda dapat mengekspor snapshot manual dan snapshot sistem otomatis. Secara default, semua data dalam snapshot akan diekspor. Namun, Anda dapat memilih untuk mengekspor set basis data, skema, atau tabel tertentu.

Data disimpan dalam format Apache Parquet yang dikompresi dan konsisten. Setiap file Parquet biasanya berukuran 1–10 MB.

Setelah data diekspor, Anda dapat menganalisis data yang diekspor secara langsung melalui alat seperti Amazon Athena atau Amazon Redshift Spectrum. Untuk informasi lebih lanjut tentang menggunakan Athena untuk membaca data Parket, lihat Parket di Panduan Pengguna SerDe Amazon Athena. Untuk informasi selengkapnya tentang cara menggunakan Redshift Spectrum untuk membaca data Parquet, lihat COPY dari format data berkolom dalam Panduan Developer Basis Data Amazon Redshift.

Ketersediaan dan dukungan fitur bervariasi di semua versi spesifik setiap mesin basis data dan di seluruh Wilayah AWS. Untuk informasi selengkapnya tentang ketersediaan versi dan Wilayah untuk mengekspor data snapshot klaster DB ke S3, lihat Daerah yang Didukung dan mesin Aurora DB untuk mengekspor data snapshot ke Amazon S3.

Batasan

Batasan berikut berlaku untuk ekspor data snapshot DB ke Amazon S3:

  • Anda tidak dapat menjalankan beberapa tugas ekspor untuk snapshot klaster DB yang sama secara bersamaan. Batasan ini berlaku untuk ekspor penuh dan sebagian.

  • Anda dapat memiliki hingga lima tugas ekspor snapshot DB bersamaan yang sedang berlangsung per. Akun AWS

  • Anda tidak dapat mengekspor data snapshot dari cluster Aurora Serverless v1 DB ke S3.

  • Ekspor ke S3 tidak mendukung awalan S3 yang berisi titik dua (:).

  • Karakter berikut di jalur file S3 akan diubah menjadi garis bawah (_) selama ekspor berlangsung:

    \ ` " (space)
  • Jika basis data, skema, atau tabel memiliki karakter dalam namanya selain yang berikut ini, maka ekspor parsial tidak didukung. Namun, Anda dapat mengekspor seluruh snapshot DB.

    • Huruf latin (A-Z)

    • Digit (0–9)

    • Simbol dolar ($)

    • Garis bawah (_)

  • Spasi ( ) dan karakter-karakter tertentu tidak didukung dalam nama kolom tabel basis data. Tabel yang nama kolomnya berisi karakter berikut akan dilewati selama ekspor berlangsung:

    , ; { } ( ) \n \t = (space)
  • Tabel yang namanya berisi garis miring (/) akan dilewati selama ekspor berlangsung.

  • Tabel Aurora PostgreSQL yang bersifat sementara dan tidak tercatat akan dilewati selama ekspor berlangsung.

  • Jika data berisi objek besar, seperti BLOB atau CLOB, yang berukuran mendekati atau lebih dari 500 MB, maka ekspornya akan gagal.

  • Jika suatu tabel berisi baris besar yang berukuran mendekati atau lebih dari 2 GB, maka tabel tersebut akan dilewati selama ekspor berlangsung.

  • Untuk ekspor sebagian, ExportOnly daftar memiliki ukuran maksimum 200 KB.

  • Sebaiknya Anda menggunakan nama unik untuk setiap tugas ekspor. Jika tidak menggunakan nama tugas yang unik, Anda mungkin menerima pesan kesalahan berikut:

    ExportTaskAlreadyExistsKesalahan: Terjadi kesalahan (ExportTaskAlreadyExists) saat memanggil StartExportTask operasi: Tugas ekspor dengan ID xxxxx sudah ada.

  • Anda dapat menghapus snapshot saat sedang mengekspor datanya ke S3, tetapi Anda masih dikenai biaya penyimpanan untuk snapshot tersebut hingga tugas ekspor selesai.

  • Anda tidak dapat memulihkan data snapshot yang diekspor dari S3 ke klaster DB baru.

Ringkasan pengeksporan data snapshot

Anda menggunakan proses berikut untuk mengekspor data snapshot DB ke bucket Amazon S3. Untuk detail selengkapnya, lihat bagian berikut.

  1. Identifikasi snapshot yang akan diekspor.

    Gunakan snapshot otomatis atau manual yang ada, atau buat snapshot manual instans DB.

  2. Siapkan akses ke bucket Amazon S3.

    Bucket adalah kontainer untuk objek atau file Amazon S3. Untuk memberikan informasi agar dapat mengakses bucket, lakukan langkah-langkah berikut:

    1. Identifikasi bucket S3 tempat snapshot akan diekspor. Bucket S3 harus berada di AWS Wilayah yang sama dengan snapshot. Untuk informasi selengkapnya, lihat Mengidentifikasi bucket Amazon S3 untuk ekspor.

    2. Buat peran AWS Identity and Access Management (IAM) yang memberikan akses tugas ekspor snapshot ke bucket S3. Untuk informasi selengkapnya, lihat Memberikan akses ke bucket Amazon S3 menggunakan peran IAM.

  3. Buat enkripsi simetris AWS KMS key untuk enkripsi sisi server. Kunci KMS digunakan oleh tugas ekspor snapshot untuk mengatur enkripsi AWS KMS sisi server saat menulis data ekspor ke S3.

    Kebijakan kunci KMS harus menyertakan izin kms:DescribeKey dan kms:CreateGrant. Untuk informasi selengkapnya tentang cara menggunakan kunci KMS di Amazon Aurora, lihat Manajemen AWS KMS key.

    Jika Anda memiliki pernyataan penolakan dalam kebijakan kunci KMS Anda, pastikan untuk secara eksplisit mengecualikan prinsip layanan. AWS export.rds.amazonaws.com

    Anda dapat menggunakan kunci KMS dalam AWS akun Anda, atau Anda dapat menggunakan kunci KMS lintas akun. Untuk informasi selengkapnya, lihat Menggunakan cross-account AWS KMS key.

  4. Ekspor snapshot ke Amazon S3 menggunakan konsol atau perintah CLI start-export-task. Untuk informasi selengkapnya, lihat Mengekspor snapshot ke bucket Amazon S3.

  5. Untuk mengakses data Anda yang diekspor di bucket Amazon S3 lihat Mengunggah, mengunduh, dan mengelola objek dalam Panduan Pengguna Amazon Simple Storage Service.

Menyiapkan akses ke bucket Amazon S3

Identifikasi bucket Amazon S3, lalu berikan izin snapshot untuk mengaksesnya.

Mengidentifikasi bucket Amazon S3 untuk ekspor

Identifikasi bucket Amazon S3 untuk mengekspor snapshot DB. Gunakan bucket S3 yang ada atau buat bucket S3 baru.

catatan

Bucket S3 yang akan diekspor harus berada di AWS Wilayah yang sama dengan snapshot.

Untuk informasi selengkapnya tentang cara bekerja dengan bucket Amazon S3, lihat informasi berikut dalam Panduan Pengguna Amazon Simple Storage Service:

Memberikan akses ke bucket Amazon S3 menggunakan peran IAM

Sebelum Anda mengekspor data snapshot DB ke Amazon S3, beri tugas ekspor snapshot izin akses tulis ke bucket Amazon S3.

Untuk memberikan izin ini, buat kebijakan IAM yang memberikan akses ke bucket, lalu buat peran IAM dan lampirkan kebijakan pada peran tersebut. Setelah itu, Anda dapat menetapkan peran IAM ke tugas ekspor snapshot Anda.

penting

Jika Anda berencana untuk menggunakan AWS Management Console untuk mengekspor snapshot Anda, Anda dapat memilih untuk membuat kebijakan IAM dan peran secara otomatis ketika Anda mengekspor snapshot. Untuk mendapatkan petunjuk, lihat Mengekspor snapshot ke bucket Amazon S3.

Untuk memberi tugas snapshot DB akses ke Amazon S3
  1. Buat kebijakan IAM. Kebijakan ini memberi bucket dan objek izin yang memungkinkan tugas ekspor snapshot Anda mengakses Amazon S3.

    Dalam kebijakan tersebut, sertakan tindakan yang diperlukan berikut untuk memungkinkan transfer file dari Amazon Aurora ke bucket S3:

    • s3:PutObject*

    • s3:GetObject*

    • s3:ListBucket

    • s3:DeleteObject*

    • s3:GetBucketLocation

    Dalam kebijakan tersebut, sertakan sumber daya berikut untuk mengidentifikasi bucket S3 dan objek dalam bucket. Daftar sumber daya berikut menunjukkan format Amazon Resource Name (ARN) untuk mengakses Amazon S3.

    • arn:aws:s3:::DOC-EXAMPLE-BUCKET

    • arn:aws:s3:::DOC-EXAMPLE-BUCKET/*

    Untuk informasi selengkapnya tentang cara membuat kebijakan IAM untuk Amazon Aurora, lihat Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM. Lihat juga Tutorial: Membuat dan melampirkan kebijakan yang dikelola pelanggan pertama Anda dalam Panduan Pengguna IAM.

    AWS CLI Perintah berikut membuat kebijakan IAM bernama ExportPolicy dengan opsi ini. Ini memberikan akses ke bucket bernama DOC-EXAMPLE-BUCKET.

    catatan

    Setelah Anda membuat kebijakan, catat ARN kebijakan tersebut. Anda memerlukan ARN ini untuk langkah berikutnya saat Anda melampirkan kebijakan tersebut pada peran IAM.

    aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }'
  2. Buat peran IAM agar Aurora dapat mengambil peran IAM ini atas nama Anda untuk mengakses bucket Amazon S3 Anda. Untuk informasi selengkapnya, lihat Membuat peran untuk mendelegasikan izin kepada pengguna IAM dalam Panduan Pengguna IAM.

    Contoh berikut menunjukkan menggunakan AWS CLI perintah untuk membuat peran bernamards-s3-export-role.

    aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. Lampirkan kebijakan IAM yang Anda buat pada peran IAM yang Anda buat.

    AWS CLI Perintah berikut melampirkan kebijakan yang dibuat sebelumnya ke peran bernamards-s3-export-role. Ganti your-policy-arn dengan ARN kebijakan yang Anda catat di langkah sebelumnya.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role

Menggunakan bucket Amazon S3 lintas akun

Anda dapat menggunakan bucket Amazon S3 di seluruh akun. AWS Untuk menggunakan bucket lintas akun, tambahkan kebijakan bucket untuk mengizinkan akses ke peran IAM yang Anda gunakan untuk ekspor S3. Untuk informasi selengkapnya, lihat Contoh 2: Pemilik bucket yang memberikan izin bucket lintas akun.

  • Lampirkan kebijakan bucket pada bucket Anda, seperti yang ditunjukkan dalam contoh berikut.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/Admin" }, "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" ] } ] }

Menggunakan cross-account AWS KMS key

Anda dapat menggunakan akun silang AWS KMS key untuk mengenkripsi ekspor Amazon S3. Pertama-tama, tambahkan kebijakan kunci ke akun lokal, lalu tambahkan kebijakan IAM di akun eksternal. Untuk informasi selengkapnya, lihat Mengizinkan pengguna di akun lain untuk menggunakan kunci KMS.

Untuk menggunakan kunci KMS lintas akun
  1. Tambahkan kebijakan kunci ke akun lokal.

    Contoh berikut memberi ExampleRole dan ExampleUser di akun eksternal 444455556666 izin di akun lokal 123456789012.

    { "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" }
  2. Tambahkan kebijakan IAM ke akun eksternal tersebut.

    Contoh kebijakan IAM berikut memungkinkan pengguna utama menggunakan kunci KMS di akun 123456789012 untuk operasi kriptografi. Untuk memberikan izin ini kepada ExampleRole dan ExampleUser di akun 444455556666, lampirkan kebijakan pada keduanya di akun tersebut.

    { "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Mengekspor snapshot ke bucket Amazon S3

Anda dapat memiliki hingga lima tugas ekspor snapshot DB bersamaan yang sedang berlangsung per. Akun AWS

catatan

Mengekspor snapshot RDS dapat memerlukan banyak waktu, tergantung pada jenis dan ukuran basis data Anda. Tugas ekspor akan terlebih dahulu memulihkan dan menskalakan seluruh basis data sebelum mengekstrak data ke Amazon S3.​ Dalam fase ini, progres tugas tersebut akan ditampilkan sebagai Memulai. Saat tugas beralih menjadi mengekspor data ke S3, progres akan ditampilkan sebagai Sedang berlangsung.

Waktu yang diperlukan untuk menyelesaikan ekspor tergantung pada data yang disimpan di basis data. Misalnya, tabel yang berisi kolom indeks atau kunci primer numerik yang terdistribusi dengan baik akan diekspor paling cepat. Tabel yang tidak berisi kolom yang sesuai untuk partisi dan tabel yang hanya berisi satu indeks pada kolom berbasis string memerlukan waktu lebih lama. Waktu ekspor yang lebih lama ini terjadi karena ekspor menggunakan proses alur tunggal yang lebih lambat.

Anda dapat mengekspor snapshot DB ke Amazon S3 menggunakan, AWS Management Console API, AWS CLI atau RDS.

Jika Anda menggunakan fungsi Lambda untuk mengekspor snapshot, tambahkan tindakan kms:DescribeKey ke kebijakan fungsi Lambda. Untuk informasi selengkapnya, lihat izin AWS Lambda.

Opsi konsol Ekspor ke Amazon S3 hanya muncul untuk snapshot yang dapat diekspor ke Amazon S3. Snapshot mungkin tidak tersedia untuk diekspor karena alasan berikut:

  • Mesin DB tidak didukung untuk ekspor S3.

  • Versi instans DB tidak didukung untuk ekspor S3.

  • Ekspor S3 tidak didukung di AWS Wilayah tempat snapshot dibuat.

Untuk mengekspor snapshot DB
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Snapshot.

  3. Dari tabnya, pilih jenis snapshot yang ingin Anda ekspor.

  4. Dalam daftar snapshot, pilih snapshot yang ingin Anda ekspor.

  5. Untuk Tindakan, pilih Ekspor ke Amazon S3.

    Jendela Ekspor ke Amazon S3 akan muncul.

  6. Untuk Pengidentifikasi ekspor, masukkan nama untuk mengidentifikasi tugas ekspor. Nilai ini juga akan digunakan untuk nama file yang dibuat di bucket S3.

  7. Pilih data yang akan diekspor:

    • Pilih Semua untuk mengekspor semua data dalam snapshot.

    • Pilih Sebagian untuk mengekspor bagian tertentu dari snapshot. Untuk mengidentifikasi bagian snapshot yang akan diekspor, masukkan satu atau beberapa basis data, skema, atau tabel untuk Pengidentifikasi, dipisahkan dengan spasi.

      Gunakan format berikut:

      database[.schema][.table] database2[.schema2][.table2] ... databasen[.scheman][.tablen]

      Contohnya:

      mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
  8. Untuk Bucket S3, pilih bucket yang akan dijadikan tujuan ekspor.

    Untuk menetapkan data yang diekspor ke jalur folder dalam bucket S3, masukkan jalur opsional untuk Prefiks S3.

  9. Untuk Peran IAM, pilih peran yang memberi Anda akses tulis ke bucket S3 yang Anda pilih, atau buat peran baru.

    • Jika Anda membuat peran dengan mengikuti langkah-langkah di Memberikan akses ke bucket Amazon S3 menggunakan peran IAM, pilih peran tersebut.

    • Jika Anda tidak membuat peran yang memberi Anda akses tulis ke bucket S3 yang Anda pilih, pilih Buat peran baru untuk membuat peran secara otomatis. Berikutnya, masukkan nama untuk peran tersebut di Nama peran IAM.

  10. Untuk AWS KMS key, masukkan ARN untuk kunci yang akan digunakan untuk mengenkripsi data yang diekspor.

  11. Pilih Ekspor ke Amazon S3.

Untuk mengekspor snapshot DB ke Amazon S3 menggunakan AWS CLI perintah start-export-task dengan opsi wajib berikut:

  • --export-task-identifier

  • --source-arn

  • --s3-bucket-name

  • --iam-role-arn

  • --kms-key-id

Dalam contoh berikut, tugas ekspor snapshot diberi nama my-snapshot-export, yang mengekspor snapshot ke bucket S3 bernama DOC-EXAMPLE-DESTINATION-BUCKET.

Untuk Linux, macOS, atau Unix:

aws rds start-export-task \ --export-task-identifier my-snapshot-export \ --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name \ --s3-bucket-name DOC-EXAMPLE-DESTINATION-BUCKET \ --iam-role-arn iam-role \ --kms-key-id my-key

Untuk Windows:

aws rds start-export-task ^ --export-task-identifier my-snapshot-export ^ --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name ^ --s3-bucket-name DOC-EXAMPLE-DESTINATION-BUCKET ^ --iam-role-arn iam-role ^ --kms-key-id my-key

Berikut adalah contoh output.

{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "DOC-EXAMPLE-DESTINATION-BUCKET", "PercentProgress": 0, "KmsKeyId": "my-key", "ExportTaskIdentifier": "my-snapshot-export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name" }

Untuk menyediakan jalur folder dalam bucket S3 untuk ekspor snapshot, sertakan opsi --s3-prefix dalam perintah start-export-task.

Untuk mengekspor snapshot DB ke Amazon S3 menggunakan Amazon RDS API, gunakan operasi StartExportTugas dengan parameter wajib berikut:

  • ExportTaskIdentifier

  • SourceArn

  • S3BucketName

  • IamRoleArn

  • KmsKeyId

Performa ekspor di Aurora MySQL

Snapshot klaster DB Aurora MySQL versi 2 dan versi 3 menggunakan mekanisme ekspor canggih untuk meningkatkan performa dan mengurangi waktu ekspor. Mekanisme ini mencakup pengoptimalan seperti beberapa alur ekspor dan kueri paralel Aurora MySQL untuk memanfaatkan arsitektur penyimpanan bersama Aurora. Pengoptimalan diterapkan secara adaptif, tergantung pada ukuran dan struktur set data.

Anda tidak perlu mengaktifkan kueri paralel untuk menggunakan proses ekspor yang lebih cepat, tetapi prosesnya memiliki batasan yang sama dengan kueri paralel. Selain itu, nilai data tertentu tidak didukung, seperti tanggal yang hari dalam sebulannya adalah 0 atau tahunnya adalah 0000. Untuk informasi selengkapnya, lihat Bekerja dengan kueri paralel untuk Amazon Aurora MySQL.

Saat pengoptimalan performa diterapkan, Anda mungkin juga melihat file Parket yang berukuran jauh lebih besar (~200 GB) untuk ekspor Aurora MySQL versi 2 dan 3.

Jika proses ekspor yang lebih cepat tidak dapat digunakan, misalnya karena jenis atau nilai data yang tidak kompatibel, Aurora akan otomatis beralih ke mode ekspor alur tunggal tanpa kueri paralel. Bergantung pada proses yang digunakan dan jumlah data yang akan diekspor, performa ekspor dapat bervariasi.

Memantau ekspor snapshot

Anda dapat memantau ekspor snapshot DB menggunakan AWS Management Console, API AWS CLI, atau RDS.

Untuk memantau ekspor snapshot DB
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Ekspor di Amazon S3.

    Ekspor snapshot DB ditunjukkan di kolom Jenis sumber. Status ekspor ditampilkan di kolom Status.

  3. Untuk melihat informasi mendetail tentang ekspor snapshot tertentu, pilih tugas ekspornya.

Untuk memantau ekspor snapshot DB menggunakan AWS CLI, gunakan perintah describe-export-tasks.

Contoh berikut menunjukkan cara menampilkan informasi saat ini tentang semua ekspor snapshot Anda.

aws rds describe-export-tasks { "ExportTasks": [ { "Status": "CANCELED", "TaskEndTime": "2019-11-01T17:36:46.961Z", "S3Prefix": "something", "ExportTime": "2019-10-24T20:23:48.364Z", "S3Bucket": "DOC-EXAMPLE-BUCKET", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "anewtest", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-25T19:10:58.885Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:parameter-groups-test" }, { "Status": "COMPLETE", "TaskEndTime": "2019-10-31T21:37:28.312Z", "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}", "S3Prefix": "", "ExportTime": "2019-10-31T06:44:53.452Z", "S3Bucket": "DOC-EXAMPLE-BUCKET1", "PercentProgress": 100, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "thursday-events-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 263, "TaskStartTime": "2019-10-31T20:58:06.998Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-31-06-44" }, { "Status": "FAILED", "TaskEndTime": "2019-10-31T02:12:36.409Z", "FailureCause": "The S3 bucket my-exports isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.", "S3Prefix": "", "ExportTime": "2019-10-30T06:45:04.526Z", "S3Bucket": "DOC-EXAMPLE-BUCKET2", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "wednesday-afternoon-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-30T22:43:40.034Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-30-06-45" } ] }

Untuk menampilkan informasi tentang ekspor snapshot tertentu, sertakan opsi --export-task-identifier dengan perintah describe-export-tasks. Sertakan opsi --Filters untuk memfilter output. Untuk opsi lainnya, lihat perintah describe-export-tasks.

Untuk menampilkan informasi tentang ekspor snapshot DB menggunakan Amazon RDS API, gunakan operasi Tugas. DescribeExport

Untuk melacak penyelesaian alur kerja ekspor atau memulai alur kerja lainnya, Anda dapat berlangganan topik Amazon Simple Notification Service. Untuk informasi selengkapnya tentang Amazon SNS, lihat Bekerja dengan pemberitahuan peristiwa Amazon RDS.

Membatalkan tugas ekspor snapshot

Anda dapat membatalkan tugas ekspor snapshot DB menggunakan AWS Management Console, AWS CLI, atau RDS API.

catatan

Membatalkan tugas ekspor snapshot tidak akan menghapus data apa pun yang telah diekspor ke Amazon S3. Untuk informasi tentang cara menghapus data menggunakan konsol, lihat Bagaimana cara menghapus objek dari bucket S3? Untuk menghapus data menggunakan CLI, gunakan perintah delete-object.

Untuk membatalkan tugas ekspor snapshot
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Ekspor di Amazon S3.

    Ekspor snapshot DB ditunjukkan di kolom Jenis sumber. Status ekspor ditampilkan di kolom Status.

  3. Pilih tugas ekspor snapshot yang ingin Anda batalkan.

  4. Pilih Batalkan.

  5. Pilih Batalkan tugas ekspor di halaman konfirmasi.

Untuk membatalkan tugas ekspor snapshot menggunakan AWS CLI, gunakan perintah cancel-export-task. Perintah tersebut memerlukan opsi --export-task-identifier.

aws rds cancel-export-task --export-task-identifier my_export { "Status": "CANCELING", "S3Prefix": "", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "DOC-EXAMPLE-BUCKET", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "my_export", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:export-example-1" }

Untuk membatalkan tugas ekspor snapshot menggunakan Amazon RDS API, gunakan operasi CancelExportTugas dengan parameter. ExportTaskIdentifier

Pesan kegagalan untuk tugas ekspor Amazon S3

Tabel berikut menjelaskan pesan yang akan ditampilkan jika tugas ekspor Amazon S3 gagal.

Pesan kegagalan Deskripsi
Terjadi kesalahan internal yang tidak diketahui.

Tugas telah gagal karena kesalahan yang tidak diketahui, pengecualian, atau kegagalan.

Terjadi kesalahan internal yang tidak diketahui saat menulis metadata tugas ekspor ke bucket S3 [nama bucket].

Tugas telah gagal karena kesalahan yang tidak diketahui, pengecualian, atau kegagalan.

Ekspor RDS gagal menulis metadata tugas ekspor karena tidak dapat mengambil peran IAM [peran ARN].

Tugas ekspor mengambil peran IAM Anda untuk memvalidasi apakah tugas tersebut diperbolehkan menulis metadata ke bucket S3 Anda. Jika tidak dapat mengambil peran IAM Anda, berarti tugas tersebut gagal.

Ekspor RDS gagal menulis metadata tugas ekspor ke bucket S3 [nama bucket] menggunakan peran IAM [ARN peran] dengan kunci KMS [ID kunci]. Kode kesalahan: [kode kesalahan]

Satu atau beberapa izin tidak ada, sehingga tugas ekspor tidak dapat mengakses bucket S3. Pesan kegagalan ini muncul saat menerima salah satu kode kesalahan berikut:

  • AWSSecurityTokenServiceException dengan kode kesalahan AccessDenied

  • AmazonS3Exception dengan kode kesalahan NoSuchBucket, AccessDenied, KMS.KMSInvalidStateException, 403 Forbidden, atau KMS.DisabledException

Kode kesalahan ini menunjukkan bahwa pengaturan salah dikonfigurasi untuk peran IAM, bucket S3, atau kunci KMS.

Peran IAM [ARN peran] tidak diizinkan untuk memanggil [tindakan S3] pada bucket S3 [nama bucket]. Tinjau izin Anda dan coba lagi ekspor.

Kebijakan IAM salah dikonfigurasi. Izin untuk tindakan S3 tertentu pada bucket S3 tidak ada, sehingga menyebabkan tugas ekspor gagal.

Pemeriksaan kunci KMS gagal. Periksa kredensial pada kunci KMS Anda, lalu coba lagi. Pemeriksaan kredensial kunci KMS gagal.
Pemeriksaan kredensial S3 gagal. Periksa izin pada bucket S3 dan kebijakan IAM Anda. Pemeriksaan kredensial S3 gagal.
Bucket S3 [nama bucket] tidak valid. Bucket tersebut tidak berada di Wilayah AWS saat ini atau tidak ada. Tinjau nama bucket S3 Anda, lalu coba lagi ekspor. Bucket S3 tidak valid.
Bucket S3 [nama bucket] tidak berada di Wilayah AWS saat ini. Tinjau nama bucket S3 Anda, lalu coba lagi ekspor. Ember S3 salah Wilayah AWS.

Memecahkan masalah kesalahan izin PostgreSQL

Saat mengekspor basis data PostgreSQL ke Amazon S3, Anda mungkin melihat kesalahan PERMISSIONS_DO_NOT_EXIST yang menyatakan bahwa tabel tertentu dilewati. Kesalahan ini biasanya terjadi saat pengguna super, yang Anda tetapkan saat membuat instans DB, tidak memiliki izin untuk mengakses tabel tersebut.

Untuk memperbaiki kesalahan ini, jalankan perintah berikut:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name

Untuk informasi selengkapnya tentang hak pengguna super, lihat Hak akses akun pengguna master.

Konvensi penamaan file

Data yang diekspor untuk tabel tertentu disimpan dalam format base_prefix/files, dengan prefiks dasar sebagai berikut:

export_identifier/database_name/schema_name.table_name/

Contohnya:

export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/

Ada dua konvensi cara penamaan file.

  • Konvensi saat ini:

    batch_index/part-partition_index-random_uuid.format-based_extension

    Indeks batch adalah nomor urut yang mewakili batch data yang dibaca dari tabel. Jika kami tidak dapat mempartisi tabel Anda menjadi bagian-bagian kecil untuk diekspor secara paralel, akan ada beberapa indeks batch. Hal yang sama akan terjadi jika tabel Anda dipartisi menjadi beberapa tabel. Beberapa indeks batch akan tersedia, dengan satu untuk setiap partisi tabel dari tabel utama Anda.

    Jika kami dapat mempartisi tabel Anda menjadi bagian-bagian kecil yang akan dibaca secara paralel, hanya akan ada folder 1 indeks batch.

    Di dalam folder indeks batch, akan ada satu atau beberapa file Parquet yang berisi data tabel Anda. Prefiks file Parket adalah part-partition_index. Jika tabel Anda dipartisi, akan ada beberapa file yang diawali dengan indeks partisi 00000.

    Mungkin ada kesenjangan dalam urutan indeks partisi. Hal ini terjadi karena setiap partisi diperoleh dari kueri dengan rentang di tabel Anda. Jika tidak ada data dalam rentang partisi tersebut, maka nomor urut itu akan dilewati.

    Misalnya, anggap kolom id adalah kunci primer tabel, dan nilai minimum dan maksimumnya adalah 100 dan 1000. Saat kami mencoba mengekspor tabel ini dengan sembilan partisi, kami membacanya dengan kueri paralel seperti berikut:

    SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300

    Partisi ini akan menghasilkan sembilan file, dari part-00000-random_uuid.gz.parquet hingga part-00008-random_uuid.gz.parquet. Namun, jika tidak ada baris dengan ID antara 200 dan 350, maka salah satu partisi yang telah selesai akan kosong, dan tidak ada file yang dibuat untuk partisi itu. Dalam contoh sebelumnya, part-00001-random_uuid.gz.parquet tidak dibuat.

  • Konvensi yang lebih lama:

    part-partition_index-random_uuid.format-based_extension

    Konvensi ini sama seperti konvensi saat ini, tetapi tanpa prefiks batch_index, contohnya:

    part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet

Konvensi penamaan file dapat berubah sewaktu-waktu. Oleh karena itu, saat membaca tabel target, sebaiknya baca segala sesuatu di dalam prefiks dasar untuk tabel tersebut.

Konversi data saat mengekspor ke bucket Amazon S3

Saat Anda mengekspor snapshot DB ke bucket Amazon S3 Amazon Aurora akan mengonversi data ke, mengekspor data dalam, dan menyimpan data dalam format Parquet. Untuk informasi selengkapnya tentang Parquet, lihat situs web Apache Parquet.

Parquet menyimpan semua data sebagai salah satu jenis primitif berikut:

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY – Array byte dengan panjang variabel, juga dikenal sebagai biner

  • FIXED_LEN_BYTE_ARRAY – Array byte dengan panjang tetap yang digunakan saat nilai memiliki ukuran konstan

Jenis data Parquet berjumlah sedikit untuk mengurangi kerumitan membaca dan menulis format. Parquet menyediakan jenis logis untuk memperluas jenis primitif. Jenis logis diimplementasikan sebagai anotasi dengan data di kolom metadata LogicalType. Anotasi jenis logis menjelaskan cara menginterpretasikan jenis primitif.

Saat jenis logis STRING menganotasi jenis BYTE_ARRAY, hal ini menunjukkan bahwa array byte harus diinterpretasikan sebagai string karakter yang dienkode UTF-8. Setelah tugas ekspor selesai, Amazon Aurora akan memberi tahu Anda jika terjadi konversi string. Data dasar yang diekspor selalu sama seperti data dari sumbernya. Namun, karena perbedaan encoding dalam UTF-8, beberapa karakter mungkin terlihat berbeda dari sumber saat dibaca di alat seperti Athena.

Untuk informasi selengkapnya, lihat Parquet logical type definitions dalam dokumentasi Parquet.

Pemetaan jenis data MySQL ke Parquet

Tabel berikut menunjukkan pemetaan dari jenis data MySQL ke jenis data Parquet saat data dikonversi dan diekspor ke Amazon S3.

Jenis data sumber Jenis primitif Parquet Anotasi jenis logis Catatan konversi
Jenis data numerik
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet hanya mendukung jenis yang ditandatangani, sehingga pemetaannya memerlukan tambahan byte (8 plus 1) untuk menyimpan jenis BIGINT_UNSIGNED.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL(p,s) Jika nilai sumber kurang dari 231, maka nilai tersebut akan disimpan sebagai INT32.
INT64 DECIMAL(p,s) Jika nilai sumber adalah 231 atau lebih besar, tetapi kurang dari 263, maka nilai tersebut akan disimpan sebagai INT64.
FIXED_LEN_BYTE_ARRAY(N) DECIMAL(p,s) Jika nilai sumber adalah 263 atau lebih besar, maka nilai tersebut akan disimpan sebagai FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet tidak mendukung presisi Desimal yang lebih besar dari 38. Nilai Desimal akan dikonversi menjadi string dalam jenis BYTE_ARRAY dan dienkode sebagai UTF8.
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL(p,s)

Jika nilai sumber kurang dari 231, maka nilai tersebut akan disimpan sebagai INT32.

INT64 DECIMAL(p,s) Jika nilai sumber adalah 231 atau lebih besar, tetapi kurang dari 263, maka nilai tersebut akan disimpan sebagai INT64.
FIXED_LEN_ARRAY(N) DECIMAL(p,s) Jika nilai sumber adalah 263 atau lebih besar, maka nilai tersebut akan disimpan sebagai FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet tidak mendukung presisi Numerik yang lebih besar dari 38. Nilai Numerik ini akan dikonversi menjadi string dalam jenis BYTE_ARRAY dan dienkode sebagai UTF8.
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32
Jenis data string
BINARY BYTE_ARRAY
BLOB BYTE_ARRAY
CHAR BYTE_ARRAY
ENUM BYTE_ARRAY STRING
LINESTRING BYTE_ARRAY
LONGBLOB BYTE_ARRAY
LONGTEXT BYTE_ARRAY STRING
MEDIUMBLOB BYTE_ARRAY
MEDIUMTEXT BYTE_ARRAY STRING
MULTILINESTRING BYTE_ARRAY
SET BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TINYBLOB BYTE_ARRAY
TINYTEXT BYTE_ARRAY STRING
VARBINARY BYTE_ARRAY
VARCHAR BYTE_ARRAY STRING
Jenis data tanggal dan waktu
DATE BYTE_ARRAY STRING Tanggal akan dikonversi menjadi string dalam jenis BYTE_ARRAY dan dienkode sebagai UTF8.
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING Jenis TIME akan dikonversi menjadi string dalam jenis BYTE_ARRAY dan dienkode sebagai UTF8.
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
Jenis data geometris
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
Jenis data JSON
JSON BYTE_ARRAY STRING

Pemetaan jenis data PostgreSQL ke Parquet

Tabel berikut menunjukkan pemetaan dari dan jenis data PostgreSQL ke jenis data Parquet saat data dikonversi dan diekspor ke Amazon S3.

Jenis data PostgreSQL Jenis primitif Parquet Anotasi jenis logis Catatan pemetaan
Jenis data numerik
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING Jenis DECIMAL akan dikonversi ke string dalam jenis BYTE_ARRAY dan dienkode sebagai UTF8.

Konversi ini dimaksudkan untuk menghindari kerumitan akibat presisi data dan nilai data yang bukan berupa angka (NaN).

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT_16
SMALLSERIAL INT32 INT_16
Jenis data string dan terkait
ARRAY BYTE_ARRAY STRING

Array akan dikonversi menjadi string dan dienkode sebagai BINARY (UTF8).

Konversi ini dimaksudkan untuk menghindari kerumitan akibat presisi data, nilai data yang bukan berupa angka (NaN), dan nilai data waktu.

BIT BYTE_ARRAY STRING
BIT VARYING BYTE_ARRAY STRING
BYTEA BINARY
CHAR BYTE_ARRAY STRING
CHAR(N) BYTE_ARRAY STRING
ENUM BYTE_ARRAY STRING
NAME BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TEXT SEARCH BYTE_ARRAY STRING
VARCHAR(N) BYTE_ARRAY STRING
XML BYTE_ARRAY STRING
Jenis data tanggal dan waktu
DATE BYTE_ARRAY STRING
INTERVAL BYTE_ARRAY STRING
TIME BYTE_ARRAY STRING
TIME WITH TIME ZONE BYTE_ARRAY STRING
TIMESTAMP BYTE_ARRAY STRING
TIMESTAMP WITH TIME ZONE BYTE_ARRAY STRING
Jenis data geometris
BOX BYTE_ARRAY STRING
CIRCLE BYTE_ARRAY STRING
LINE BYTE_ARRAY STRING
LINESEGMENT BYTE_ARRAY STRING
PATH BYTE_ARRAY STRING
POINT BYTE_ARRAY STRING
POLYGON BYTE_ARRAY STRING
Jenis data JSON
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
Jenis data lainnya
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING Jenis data jaringan
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING Jenis data jaringan
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER N/A
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING