Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengekspor data snapshot DB ke Amazon S3
Anda dapat mengekspor data snapshot DB ke bucket Amazon S3. Proses ekspor berjalan di latar belakang dan tidak memengaruhi kinerja database aktif Anda.
Saat Anda mengekspor snapshot DB, Amazon RDS mengekstrak data dari snapshot dan menyimpannya di bucket Amazon S3. Data disimpan dalam format Apache Parquet yang dikompresi dan konsisten.
Anda dapat mengekspor semua jenis snapshot DB—termasuk snapshot manual, snapshot sistem otomatis, dan snapshot yang dibuat oleh layanan. AWS Backup Secara default, semua data dalam snapshot akan diekspor. Namun, Anda dapat memilih untuk mengekspor set basis data, skema, atau tabel tertentu.
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 lebih lanjut tentang menggunakan Redshift Spectrum untuk membaca data Parquet, lihat COPY dari format data columnar dalam Panduan Developer Basis Data Amazon Redshift.
Topik
- Ketersediaan wilayah dan versi
- Batasan
- Ikhtisar pengeksporan data snapshot
- Menyiapkan akses ke bucket Amazon S3
- Mengekspor data snapshot DB ke bucket Amazon S3
- Memantau ekspor snapshot
- Membatalkan tugas ekspor snapshot
- Pesan kegagalan untuk tugas ekspor Amazon S3
- Memecahkan masalah kesalahan izin PostgreSQL
- Konvensi penamaan file
- Konversi data saat mengekspor ke bucket Amazon S3
Ketersediaan wilayah dan versi
Ketersediaan dan dukungan fitur bervariasi di seluruh versi spesifik dari setiap mesin basis data dan di seluruh Wilayah AWS. Untuk mengetahui informasi selengkapnya tentang versi dan ketersediaan Wilayah pengeksporan snapshot ke S3, lihat Daerah yang Didukung dan engine DB untuk mengekspor snapshot ke S3 di Amazon RDS.
Batasan
Mengekspor data snapshot DB ke Amazon S3 memiliki batasan sebagai berikut:
-
Anda tidak dapat menjalankan beberapa tugas ekspor untuk snapshot DB yang sama secara bersamaan. Ini berlaku untuk ekspor penuh dan sebagian.
-
Mengekspor snapshot dari database yang menggunakan penyimpanan magnetik tidak didukung.
-
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 dengan garis miring (/) di namanya dilewati selama ekspor.
-
Tabel sementara dan yang tidak tercatat RDS for PostgreSQL dilewati selama ekspor.
-
Jika data berisi objek besar, seperti BLOB atau CLOB, yang mendekati atau lebih dari 500 MB, ekspor tersebut 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:
ExportTaskAlreadyExistsFault: 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 instans DB baru atau mengimpor data snapshot dari S3 ke instans DB yang ada.
-
Anda dapat memiliki hingga lima tugas ekspor snapshot DB bersamaan yang sedang berlangsung per. Akun AWS
-
Untuk mengekspor snapshot DB ke bucket Amazon S3 lintas akun, Anda harus menggunakan atau RDS AWS CLI API.
Ikhtisar pengeksporan data snapshot
Anda menggunakan proses berikut untuk mengekspor data snapshot DB ke bucket Amazon S3. Untuk detail selengkapnya, lihat bagian berikut.
-
Identifikasi snapshot yang akan diekspor.
Gunakan snapshot otomatis atau manual yang ada, atau buat snapshot manual dari instans DB atau cluster DB multi-AZ.
-
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:
-
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.
-
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.
-
-
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:CreateGrant
dankms:DescribeKey
. Untuk informasi selengkapnya tentang menggunakan kunci KMS di Amazon RDS, lihat AWS KMS key manajemen.Jika Anda memiliki pernyataan penolakan dalam kebijakan kunci KMS Anda, pastikan untuk secara eksplisit mengecualikan prinsipal 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 akun silang AWS KMS key untuk mengenkripsi ekspor Amazon S3.
-
Ekspor snapshot ke Amazon S3 menggunakan konsol atau perintah CLI
start-export-task
. Untuk informasi selengkapnya, lihat Mengekspor data snapshot DB ke bucket Amazon S3. -
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
Untuk mengekspor data snapshot DB ke file Amazon S3 Anda terlebih dahulu memberikan izin snapshot untuk mengakses bucket Amazon S3. Kemudian, Anda membuat peran IAM untuk memungkinkan layanan Amazon RDS menulis ke bucket Amazon S3.
Topik
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 ke peran tersebut. Kemudian, tetapkan 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 data snapshot DB ke bucket Amazon S3.
Untuk memberi tugas snapshot DB akses ke Amazon S3
-
Buat kebijakan IAM. Kebijakan ini memberikan bucket dan izin objek yang memungkinkan tugas ekspor snapshot Anda mengakses Amazon S3.
Dalam kebijakan tersebut, sertakan tindakan yang diperlukan berikut untuk mengizinkan transfer file dari Amazon RDS ke bucket S3:
-
s3:PutObject*
-
s3:GetObject*
-
s3:ListBuckets
-
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 mengetahui informasi selengkapnya tentang cara membuat kebijakan IAM untuk Amazon RDS, lihat Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM. Lihat juga Tutorial: Membuat dan melampirkan kebijakan yang dikelola pelanggan pertama Anda di Panduan Pengguna IAM.
AWS CLI Perintah berikut membuat kebijakan IAM bernama
ExportPolicy
dengan opsi ini. Ini memberikan akses ke bucket bernamaDOC-EXAMPLE-BUCKET
.catatan
Setelah Anda membuat kebijakan, catat ARN kebijakan tersebut. Anda memerlukan ARN ini untuk langkah berikutnya ketika Anda melampirkan kebijakan ke peran IAM.
aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBuckets", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ] } ] }' -
-
Buat peran IAM, sehingga Amazon RDS dapat mengambil peran IAM ini atas nama Anda untuk mengakses bucket Amazon S3. Lihat mengetahui informasi yang lebih lengkap di Membuat peran untuk melimpahkan izin ke pengguna IAM dalam Panduan Pengguna IAM.
Contoh berikut menunjukkan menggunakan AWS CLI perintah untuk membuat peran bernama
rds-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" } ] }'
-
Lampirkan kebijakan IAM yang Anda buat pada peran IAM yang Anda buat.
AWS CLI Perintah berikut melampirkan kebijakan yang dibuat sebelumnya ke peran bernama
rds-s3-export-role
. Ganti
dengan ARN kebijakan yang Anda catat di langkah sebelumnya.your-policy-arn
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:ListBuckets", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET
/*" ] } ] }
Menggunakan akun silang AWS KMS key untuk mengenkripsi ekspor Amazon S3
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
-
Tambahkan kebijakan kunci ke akun lokal.
Contoh berikut memberi
ExampleRole
danExampleUser
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": "*" }
-
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 ke
ExampleRole
danExampleUser
di akun 444455556666, lampirkan kebijakan 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 data snapshot DB 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. Untuk mengekspor snapshot DB ke bucket Amazon S3 lintas akun, gunakan atau RDS AWS CLI API.
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 mesin DB tidak didukung untuk ekspor S3.
-
Ekspor S3 tidak didukung di AWS Wilayah tempat snapshot dibuat.
Untuk mengekspor snapshot DB
-
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Snapshot.
-
Dari tabnya, pilih jenis snapshot yang ingin Anda ekspor.
-
Dalam daftar snapshot, pilih snapshot yang ingin Anda ekspor.
-
Untuk Tindakan, pilih Ekspor ke Amazon S3.
Jendela Ekspor ke Amazon S3 akan muncul.
-
Untuk Pengidentifikasi ekspor, masukkan nama untuk mengidentifikasi tugas ekspor. Nilai ini juga akan digunakan untuk nama file yang dibuat di bucket S3.
-
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
] ...database
n[.schema
n][.table
n]Contohnya:
mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
-
-
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.
-
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.
-
-
Untuk AWS KMS key, masukkan ARN untuk kunci yang akan digunakan untuk mengenkripsi data yang diekspor.
-
Pilih Ekspor ke Amazon S3.
Untuk mengekspor snapshot DB ke Amazon S3 menggunakan AWS CLI, gunakan perintah dengan start-export-taskopsi yang diperlukan berikut:
-
--export-task-identifier
-
--source-arn
-
--s3-bucket-name
-
--iam-role-arn
-
--kms-key-id
Dalam contoh berikut, tugas ekspor snapshot diberi nama, yang mengekspor snapshot ke
my-snapshot-export
bucket S3 bernama DOC-EXAMPLE-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-nameDOC-EXAMPLE-BUCKET
\ --iam-role-arniam-role
\ --kms-key-idmy-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-nameDOC-EXAMPLE-BUCKET
^ --iam-role-arniam-role
^ --kms-key-idmy-key
Berikut adalah contoh output.
{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my-export-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 di bucket S3 untuk ekspor snapshot, sertakan --s3-prefix
opsi dalam perintah. start-export-task
Untuk mengekspor snapshot DB ke Amazon S3 menggunakan Amazon RDS API, gunakan operasi dengan parameter StartExportTaskyang diperlukan berikut:
-
ExportTaskIdentifier
-
SourceArn
-
S3BucketName
-
IamRoleArn
-
KmsKeyId
Memantau ekspor snapshot
Anda dapat memantau ekspor snapshot DB menggunakan AWS Management Console, AWS CLI, atau RDS API.
Untuk memantau ekspor snapshot DB
-
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Snapshot.
-
Untuk melihat daftar ekspor snapshot, pilih tab Ekspor di Amazon S3.
-
Untuk melihat informasi tentang ekspor snapshot khusus, pilih tugas ekspor.
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 edgcuc-export 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 describe-export-tasksperintah.
Untuk menampilkan informasi tentang ekspor snapshot DB menggunakan Amazon RDS API, gunakan operasi. DescribeExportTasks
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 Menggunakan 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
-
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Snapshot.
-
Pilih tab Ekspor di Amazon S3.
-
Pilih tugas ekspor snapshot yang ingin Anda batalkan.
-
Pilih Batalkan.
-
Pilih Batalkan tugas ekspor di halaman konfirmasi.
Untuk membatalkan tugas ekspor snapshot menggunakan AWS CLI, gunakan cancel-export-taskperintah. 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 CancelExportTaskoperasi 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:
Kode kesalahan ini menunjukkan pengaturan salah konfigurasi untuk peran IAM, bucket S3, atau kunci KMS. |
Peran IAM [role ARN] 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. Baik tidak terletak di Wilayah AWS
saat ini maupun tidak ada. Tinjau nama bucket S3 Anda dan coba lagi ekspor. |
Bucket S3 tidak valid. |
Bucket S3 [nama bucket] tidak terletak di AWS Wilayah saat ini. Tinjau nama bucket S3 Anda, lalu coba lagi ekspor. |
Bucket S3 berada di AWS Wilayah yang salah. |
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 ketika superuser, yang Anda tentukan saat membuat database, tidak memiliki izin untuk mengakses tabel tersebut.
Untuk memperbaiki kesalahan ini, jalankan perintah berikut:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA
schema_name
TOsuperuser_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
, dengan prefiks dasar sebagai berikut:base_prefix
/files
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-
. Jika tabel Anda dipartisi, akan ada beberapa file yang diawali dengan indeks partisipartition_index
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 adalah100
dan1000
. 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-
hinggarandom_uuid
.gz.parquetpart-00008-
. Namun, jika tidak ada baris dengan ID antararandom_uuid
.gz.parquet200
dan350
, maka salah satu partisi yang telah selesai akan kosong, dan tidak ada file yang dibuat untuk partisi itu. Dalam contoh sebelumnya,part-00001-
tidak dibuat.random_uuid
.gz.parquet -
Konvensi yang lebih lama:
part-
partition_index
-random_uuid
.format-based_extension
Konvensi ini sama seperti konvensi saat ini, tetapi tanpa prefiks
, contohnya:batch_index
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 RDS mengonversi data ke, mengekspor data dalam, dan menyimpan data dalam format Parquet. Untuk mengetahui informasi selengkapnya tentang Parquet, lihat situs web Parquet Apache
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
yang menandai jenis BYTE_ARRAY
, menunjukkan bahwa rangkaian byte harus diinterpretasikan sebagai string karakter yang dienkode UTF-8. Setelah tugas ekspor selesai, Amazon RDS memberi tahu Anda jika terjadi konversi string. Data ekspor yang mendasarinya selalu sama dengan data dari sumber. Namun, karena perbedaan encoding dalam UTF-8, beberapa karakter mungkin terlihat berbeda dari sumber saat dibaca di alat seperti Athena.
Untuk mengetahui informasi selengkapnya, lihat Parquet logical type definitions
Pemetaan jenis data MySQL dan MariaDB ke Parquet
Tabel berikut menunjukkan pemetaan dari jenis data MySQL dan MariaDB 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 |