Menggunakan basis data Amazon Redshift sebagai target untuk AWS Database Migration Service - AWS Layanan Migrasi Database

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

Menggunakan basis data Amazon Redshift sebagai target untuk AWS Database Migration Service

Anda dapat melakukan migrasi data ke basis data Amazon Redshift menggunakan AWS Database Migration Service. Amazon Redshift adalah layanan gudang data dengan skala petabyte yang terkelola penuh di cloud. Dengan basis data Amazon Redshift sebagai target, Anda dapat memigrasi data dari semua basis data sumber lain yang didukung.

Anda dapat menggunakan Amazon Redshift Serverless sebagai target. AWS DMS Untuk informasi lebih lanjut, lihat Menggunakan AWS DMS Amazon Redshift Serverless sebagai Target berikut ini.

Klaster Amazon Redshift harus berada di akun AWS yang sama dan wilayah AWS yang sama sebagai instans replikasi.

Selama migrasi basis data ke Amazon Redshift, pertama-tama AWS DMS memindahkan data ke Amazon S3 bucket. Ketika file berada di bucket Amazon S3, AWS DMS mentransfer mereka ke tabel yang tepat di gudang data Amazon Redshift. AWS DMS menciptakan bucket S3 di wilayah AWS yang sama dengan basis data Amazon Redshift. Instans replikasi AWS DMS harus ditempatkan di wilayah AWS yang sama.

Jika Anda menggunakan AWS CLI atau DMS API untuk memigrasikan data ke Amazon Redshift, siapkan AWS Identity and Access Management (IAM) role untuk mengizinkan akses S3. Untuk informasi lebih lanjut tentang pembuatan IAM role, lihat Membuat peran IAM untuk digunakan dengan AWS CLI dan API AWS DMS.

Titik akhir Amazon Redshift menyediakan otomatisasi penuh untuk hal berikut:

  • Pembuatan skema dan pemetaan tipe data

  • Beban penuh dari tabel basis data sumber

  • Beban tambahan dari perubahan yang dibuat ke tabel sumber

  • Penerapan perubahan skema dalam bahasa definisi data (DDL) yang dibuat ke tabel sumber

  • Sinkronisasi antara proses beban penuh dan penangkapan perubahan data (CDC).

AWS Database Migration Service mendukung operasi beban penuh dan perubahan pemrosesan. AWS DMS membaca data dari basis data sumber dan menciptakan serangkaian file comma-seperated value(.csv). Untuk operasi beban penuh, AWS DMS menciptakan file untuk setiap tabel. AWS DMS kemudian menyalin file tabel untuk setiap tabel ke folder terpisah di Amazon S3. Ketika file diunggah ke Amazon S3, AWS DMS mengirimkan perintah salin, kemudian data dalam file disalin ke Amazon Redshift. Untuk operasi perubahan-pemrosesan, AWS DMS menyalin net changes ke file .csv. Kemudian AWS DMS mengunggah file net changes ke Amazon S3 dan menyalin data ke Amazon Redshift.

Untuk detail tambahan tentang bekerja dengan Amazon Redshift sebagai target untuk AWS DMS, lihat bagian berikut:

Prasyarat untuk menggunakan basis data Amazon Redshift sebagai target untuk AWS Database Migration Service

Daftar berikut menjelaskan prasyarat yang diperlukan untuk bekerja dengan Amazon Redshift sebagai target migrasi data:

  • Gunakan konsol manajemen AWS untuk meluncurkan klaster Amazon Redshift. Catat informasi dasar tentang akun AWS dan klaster Amazon Redshift Anda, seperti kata sandi, nama pengguna, dan nama basis data. Anda perlu nilai-nilai ini saat membuat titik akhir target Amazon Redshift target.

  • Klaster Amazon Redshift harus berada di akun AWS dan Wilayah AWS yang sama dengan instans replikasi.

  • Instans replikasi AWS DMS membutuhkan konektivitas jaringan ke titik akhir Amazon Redshift (nama host dan port) yang digunakan oleh klaster Anda.

  • AWS DMS Menggunakan bucket Amazon S3 untuk mentransfer data ke basis data Amazon Redshift. Agar AWS DMS dapat membuat bucket, konsol tersebut menggunakan IAM role, dms-access-for-endpoint. Jika Anda menggunakan AWS CLI atau DMS API untuk membuat migrasi basis data dengan Amazon Redshift sebagai basis data target, Anda harus membuat IAM role ini. Untuk informasi lebih lanjut tentang pembuatan peran, lihat Membuat peran IAM untuk digunakan dengan AWS CLI dan API AWS DMS.

  • AWS DMS mengonversi BLOB, CLOB, dan NCLOB ke VARCHAR pada instans target Amazon Redshift. Amazon Redshift tidak support tipe data VARCHAR yang lebih besar dari 64 KB, sehingga Anda tidak dapat menyimpan LOB tradisional di Amazon Redshift.

  • Tetapkan pengaturan tugas metadata target BatchApplyEnabledke true for AWS DMS untuk menangani perubahan pada tabel target Amazon Redshift selama CDC. Diperlukan sebuah Kunci Primer pada sumber dan target tabel. Tanpa Kunci Primer, perubahan diterapkan pernyataan demi pernyataan. Dan hal itu dapat memengaruhi performa tugas selama CDC berlangsung dengan menyebabkan latensi target dan memengaruhi antrean melakukan klaster.

Hak yang diperlukan untuk menggunakan Redshift sebagai target

Gunakan perintah GRANT untuk menentukan hak akses pengguna atau grup pengguna. Hak termasuk pilihan akses seperti dapat membaca data dalam tabel dan view, menulis data, dan membuat tabel. Untuk informasi lebih lanjut tentang penggunaan GRANT dengan Amazon Redshift, lihat GRANT di Panduan Developer Basis data Amazon Redshift.

Berikut adalah sintaks untuk memberikan hak khusus untuk tabel, basis data, skema, fungsi, prosedur, atau hak tingkat-bahasa pada tabel dan view di Amazon Redshift.

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

Berikut adalah sintaks untuk hak tingkat-kolom pada tabel dan views di Amazon Redshift.

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | GROUP group_name | PUBLIC } [, ...]

Berikut adalah sintaks untuk hak ASSUMEROLE yang diberikan kepada pengguna dan kelompok dengan peran tertentu.

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD } [, ...]

Keterbatasan penggunaan Amazon Redshift sebagai target untuk AWS Database Migration Service

Batasan berikut berlaku saat menggunakan database Amazon Redshift sebagai target:

  • Jangan aktifkan pembuatan versi untuk bucket S3 yang Anda gunakan sebagai penyimpanan perantara untuk target Amazon Redshift Anda. Jika Anda memerlukan versi S3, gunakan kebijakan siklus hidup untuk menghapus versi lama secara aktif. Jika tidak, Anda mungkin mengalami kegagalan koneksi pengujian titik akhir karena batas waktu list-object panggilan S3. Untuk membuat kebijakan siklus hidup bucket S3, lihat Mengelola siklus hidup penyimpanan. Untuk menghapus versi objek S3, lihat Menghapus versi objek dari bucket berkemampuan versi.

  • DDL berikut ini tidak didukung:

    ALTER TABLE table name MODIFY COLUMN column name data type;
  • AWS DMS tidak dapat bermigrasi atau mereplikasi perubahan skema dengan nama yang dimulai dengan garis bawah (_). Jika Anda memiliki skema dengan nama yang dimulai dengan garis bawah, gunakan transformasi pemetaan untuk mengubah nama skema pada target.

  • Amazon Redshift tidak mendukung VARCHAR yang lebih besar dari 64 KB. LOB dari basis data tradisional tidak dapat disimpan di Amazon Redshift.

  • Menerapkan pernyataan DELETE ke tabel dengan kunci primer multi-kolom tidak didukung ketika salah satu nama kolom kunci primer menggunakan kata yang dicadangkan. Pergi ke sini untuk melihat daftar kosakata cadangan pada Amazon Redshift.

  • Anda mungkin mengalami masalah performa jika sistem sumber Anda melakukan operasi UPDATE pada kunci primer tabel sumber. Masalah performa ini terjadi saat menerapkan perubahan pada target. Hal ini disebabkan oleh operasi UPDATE (dan DELETE) bergantung pada nilai kunci primer untuk mengidentifikasi baris target. Jika Anda memperbarui kunci primer dari tabel sumber, log tugas Anda akan berisi pesan seperti berikut:

    Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  • DMS tidak mendukung nama DNS khusus saat mengonfigurasi titik akhir untuk klaster Redshift, dan Anda perlu menggunakan nama DNS yang disediakan Amazon. Karena klaster Amazon Redshift harus berada dalam akun dan wilayah AWS yang sama dengan instans replikasi, validasi gagal jika Anda menggunakan titik akhir DNS khusus.

  • Amazon Redshift memiliki batas waktu sesi idle 4 jam default. Jika tidak ada aktivitas apa pun dalam tugas replikasi DMS, Redshift memutus sesi setelah 4 jam. Kesalahan dapat terjadi karena DMS tidak dapat terhubung dan berpotensi perlu memulai ulang. Sebagai solusinya, tetapkan batas WAKTU SESI lebih dari 4 jam untuk pengguna replikasi DMS. Atau, lihat deskripsi ALTER USER di Panduan Pengembang Database Amazon Redshift.

  • Saat AWS DMS mereplikasi data tabel sumber tanpa kunci primer atau unik, latensi CDC mungkin tinggi sehingga menghasilkan tingkat kinerja yang tidak dapat diterima.

Mengonfigurasi basis data Amazon Redshift sebagai target untuk AWS Database Migration Service

AWS Database Migration Service harus dikonfigurasi untuk bekerja dengan instans Amazon Redshift. Tabel berikut menjelaskan properti konfigurasi yang tersedia untuk titik akhir Amazon Redshift.

Properti

Deskripsi

Server

Nama klaster Amazon Redshift yang Anda gunakan.

port

Nomor port untuk Amazon Redshift. Nilai default adalah 5439.

nama pengguna

Nama pengguna Amazon Redshift untuk pengguna terdaftar.

Kata sandi

Kata sandi untuk pengguna yang disebutkan di properti nama pengguna.

basis data

Nama (layanan) gudang data Amazon Redshift yang Anda gunakan.

Jika ingin menambahkan atribut string koneksi tambahan untuk titik akhir Amazon Redshift, Anda dapat menentukan atribut maxFileSize dan fileTransferUploadStreams. Untuk informasi lebih lanjut tentang atribut ini, lihat Pengaturan titik akhir saat menggunakan Amazon Redshift sebagai target untuk AWS DMS.

Menggunakan perutean VPC yang disempurnakan dengan Amazon Redshift sebagai target AWS Database Migration Service

Jika Anda menggunakan Perutean VPC yang disempurnakan dengan target Amazon Redshift, semua lalu lintas COPY antara klaster Amazon Redshift dan repositori data Anda akan melewati VPC tersebut. Karena perutean VPC yang disempurnakan memengaruhi cara Amazon Redshift mengakses sumber daya lain, perintah COPY kmeungkinan gagal jika Anda belum mengonfigurasi VPC Anda dengan benar.

AWS DMS dapat terpengaruh oleh perilaku ini karena menggunakan perintah COPY untuk memindahkan data di S3 menuju klaster Amazon Redshift.

Berikut ini adalah langkah yang diibutuhkan AWS DMS untuk memuat data ke sebuah target Amazon Redshift:

  1. AWS DMS salin data dari sumber ke file .csv pada server replikasi.

  2. AWS DMS menggunakan SDK AWS untuk menyalin file .csv ke dalam bucket S3 pada akun Anda.

  3. AWS DMS kemudian menggunakan perintah COPY di Amazon Redshift untuk menyalin data dari file .csv di S3 ke tabel yang sesuai di Amazon Redshift.

Jika Perutean VPC yang disempurnakan tidak aktif, Amazon Redshift mengarahkan lalu lintas melalui internet, termasuk lalu lintas ke layanan lain dalam jaringan AWS. Jika fitur ini tidak diaktifkan Anda tidak harus mengonfigurasi jalur jaringan. Jika fitur diaktifkan, Anda harus secara khusus membuat jalur jaringan antara Anda VPC dari klaster dan sumber data Anda. Untuk informasi lebih lanjut tentang konfigurasi yang diperlukan, lihat Perutean VPC dalam dokumentasi Amazon Redshift.

Membuat dan menggunakan kunci AWS KMS untuk mengenkripsi data target Amazon Redshift

Anda dapat mengenkripsi data target yang dikirim ke Amazon S3 sebelum disalin ke Amazon Redshift. Untuk melakukannya, Anda dapat membuat dan menggunakan kunci AWS KMS khusus. Anda dapat menggunakan kunci yang Anda buat untuk mengenkripsi data target menggunakan salah satu mekanisme berikut saat Anda membuat titik akhir target Amazon Redshift:

Untuk mengenkripsi data target Amazon Redshift menggunakan kunci KMS, Anda memerlukan (IAM) role AWS Identity and Access Management yang memiliki izin untuk mengakses data Amazon Redshift. IAM role ini kemudian diakses dalam sebuah kebijakan (kebijakan kunci) yang dilampirkan ke kunci enkripsi yang Anda buat. Anda dapat melakukannya melalui konsol IAM Anda dengan membuat hal berikut:

  • IAM role dengan kebijakan yang dikelola oleh AWS.

  • Kunci KMS dengan kebijakan kunci yang mereferensikan peran ini.

Prosedur berikut menjelaskan cara pembuatannya.

Untuk membuat IAM role dengan kebijakan yang dikelola AWS yang diwajibkan
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran. Halaman Peran terbuka.

  3. Pilih Buat peran. Halaman Buat peran terbuka.

  4. Pilih LayananAWS sebagai entitas terpercaya, pilih DMS sebagai layanan untuk menggunakan peran.

  5. Pilih Berikutnya: Izin. Halaman Lampirkan kebijakan izin akan muncul.

  6. Cari dan pilih AmazonDMSRedshiftS3Role kebijakan.

  7. Pilih Berikutnya: Penandaan. Halaman Tambahkan penandaan akan muncul. Di sini, Anda dapat menambahkan tanda apa pun yang Anda inginkan.

  8. Pilih Berikutnya: Tinjauan dan lihat hasil yang dikeluarkan.

  9. Jika Anda membutuhkan pengaturan, masukkan nama untuk peran (misalnya, DMS-Redshift-endpoint-access-role), dan deskripsi tambahan apa pun, lalu pilih Buat peran. Halaman Peran terbuka dengan pesan yang menunjukkan bahwa peran Anda telah dibuat.

Anda sekarang telah membuat peran baru untuk mengakses sumber daya Amazon Redshift untuk enkripsi dengan nama tertentu, misalnya DMS-Redshift-endpoint-access-role.

Untuk membuat AWS KMS kunci enkripsi dengan kebijakan kunci yang mereferensikan IAM role Anda
catatan

Untuk informasi lebih lanjut tentang cara AWS DMS bekerja dengan kunci enkripsi AWS KMS, lihat Menyetel kunci enkripsi dan menentukan izin AWS KMS.

  1. Masuk ke AWS Management Console dan buka konsol AWS Key Management Service (AWS KMS) di https://console.aws.amazon.com/kms.

  2. Untuk mengubah Wilayah AWS, gunakan pemilih Wilayah di sudut kanan atas halaman.

  3. Di panel navigasi, pilih Kunci yang dikelola pelanggan.

  4. Pilih Buat kunci. Halaman Konfigurasi kunci terbuka.

  5. Untuk Tipe Kunci, pilih Simetris.

    catatan

    Ketika Anda membuat kunci ini, Anda hanya bisa membuat kunci simetris, karena semua layanan AWS, seperti Amazon Redshift, hanya bekerja dengan kunci enkripsi simetris.

  6. Pilih Pilihan lanjutan. Untuk Asal material kunci, pastikan bahwa KMS dipilih, lalu pilih Selanjutnya. Halaman Tambahkan label terbuka.

  7. Untuk Buat alias dan deskripsi, masukkan alias untuk kunci (misalnya, DMS-Redshift-endpoint-encryption-key) dan keterangan tambahan apa pun.

  8. Untuk Penandaan, tambahkan tanda apa pun yang Anda inginkan untuk membantu mengidentifikasi kunci dan melacak penggunaannya, lalu pilih Selanjutnya. Halaman Tentukan izin administratif kunci terbuka dan menampilkan daftar pengguna dan peran yang dapat Anda pilih.

  9. Tambahkan pengguna dan peran yang Anda inginkan untuk mengelola kunci. Pastikan bahwa pengguna dan peran ini memiliki izin yang diperlukan untuk mengelola kunci.

  10. Untuk Penghapusan kunci, pilih apakah administrator kunci dapat menghapus kunci, lalu pilih Selanjutnya. Halaman Tentukan izin penggunaan kunci terbuka dan menampilkan daftar pengguna dan peran tambahan yang dapat Anda pilih.

  11. Untuk Akun ini, pilih pengguna yang tersedia yang Anda inginkan untuk melakukan operasi kriptografi pada target Amazon Redshift. Juga pilih peran yang sudah Anda buat sebelumnya di Peran untuk mengaktifkan akses guna mengenkripsi objek target Amazon Redshift, misalnya DMS-Redshift-endpoint-access-role).

  12. Jika Anda ingin menambahkan akun lain yang tidak terdaftar untuk memiliki akses yang sama dengan ini, pada Akun AWS Lainnya, pilih Tambahkan akun AWS lainnya, lalu pilih Selanjutnya. Halaman Meninjau dan mengedit kebijakan kunci terbuka dan menampilkan JSON untuk kebijakan kunci yang dapat Anda tinjau dan edit dengan mengetik ke JSON yang ada. Di sini, Anda dapat melihat tempat kebijakan kunci mereferensikan peran dan pengguna (misalnya, Admin dan User1) yang sudah Anda pilih pada langkah sebelumnya. Anda juga dapat melihat tindakan kunci berbeda diizinkan untuk principals yang berbeda (pengguna dan peran), seperti yang ditunjukkan dalam contoh berikut.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. Pilih Selesai. Halaman kunci Enkripsi terbuka dengan pesan yang menunjukkan bahwa Anda AWS KMS key telah dibuat.

Anda sekarang telah membuat bukti kunci KMS baru dengan nama alias tertentu (misalnya DMS-Redshift-endpoint-encryption-key). Kunci ini memungkinkan AWS DMS untuk mengenkripsi data target Amazon Redshift.

Pengaturan titik akhir saat menggunakan Amazon Redshift sebagai target untuk AWS DMS

Anda dapat menggunakan pengaturan titik akhir untuk mengonfigurasi basis data target Amazon Redshift mirip dengan menggunakan atribut koneksi tambahan. Anda menentukan pengaturan saat Anda membuat titik akhir target menggunakan AWS DMS konsol, atau dengan menggunakan create-endpoint perintah di AWS CLI, dengan sintaks --redshift-settings '{"EndpointSetting": "value", ...}' JSON.

Tabel berikut menunjukkan pengaturan titik akhir yang dapat Anda gunakan dengan Amazon Redshift sebagai target.

Nama Deskripsi

MaxFileSize

Tentukan ukuran maksimum (dalam KB) dari setiap file .csv yang digunakan untuk mentransfer data ke Amazon Redshift.

Nilai default: 32768 KB (32 MB)

Nilai valid: 1-1.048.576

Contoh: --redshift-settings '{"MaxFileSize": 512}'

FileTransferUploadStreams

Tentukan jumlah thread yang digunakan untuk mengunggah satu file.

Nilai default: 10

Nilai valid: 1-64

Contoh: --redshift-settings '{"FileTransferUploadStreams": 20}'

Acceptanydate

Tentukan apakah semua format tanggal diterima, termasuk format tanggal yang tidak valid seperti 0000-00-00. Nilai Boolean.

Nilai default: SALAH

Nilai valid: BETUL | SALAH

Contoh: --redshift-settings '{"Acceptanydate": true}'

Dateformat

Tentukan format tanggal. Ini adalah masukan string yang secara default kosong. Format default adalah YYYY-MM-DD tetapi Anda dapat mengubahnya, misalnya menjadi DD-MM-YYYY. Jika nilai tanggal atau waktu Anda menggunakan format yang berbeda, gunakan argumen auto dengan parameter Dateformat. Argumen auto mengenali beberapa format yang tidak didukung ketika menggunakan String Dateformat. Kata kunci auto bersifat case-sensitive.

Nilai default: kosong

Nilai yang valid: "dateformat_string" atau auto

Contoh:--redshift-settings '{"Dateformat": "auto"}'

Timeformat

Menentukan format waktu. Ini adalah masukan string yang secara default kosong. Argumen auto mengenali beberapa format yang tidak didukung ketika menggunakan string Timeformat. Jika nilai tanggal dan waktu Anda menggunakan format yang berbeda satu sama lain, gunakan argumen auto dengan parameter Timeformat.

Nilai default: 10

Nilai yang valid: "TimeFormat_String" | “auto” | “epochsecs” | “epochmillisecs”

Contoh:--redshift-settings '{"Timeformat": "auto"}'

Emptyasnull

Tentukan apakah AWS DMS harus melakukan migrasi field CHAR dan VARCHAR kosong menjadi null. Nilai benar menetapkan field CHAR dan VARCHAR kosong sebagai null.

Nilai default: SALAH

Nilai valid: BETUL | SALAH

Contoh: --redshift-settings '{"Emptyasnull": true}'

TruncateColumns

Potong data dalam kolom sesuai dengan jumlah karakter sehingga cocok dengan spesifikasi kolom. Berlaku hanya pada kolom dengan tipe data VARCHAR atau CHAR, dan baris berukuran 4 MB atau kurang.

Nilai default: SALAH

Nilai valid: BETUL | SALAH

Contoh: --redshift-settings '{"TruncateColumns": true}'

RemoveQuotes

Hapus tanda kutip yang mengelilingi string pada data yang akan masuk. Semua karakter dalam tanda kutip, termasuk delimiter, dipertahankan. Untuk informasi lebih lanjut tentang menghapus kutipan untuk target Amazon Redshift, lihat Panduan Developer Database Amazon Redshift.

Nilai default: SALAH

Nilai valid: BETUL | SALAH

Contoh: --redshift-settings '{"RemoveQuotes": true}'

TrimBlanks

Menghapus jejak karakter spasi putih dari VARCHAR string. Parameter ini hanya berlaku untuk kolom dengan tipe data VARCHAR.

Nilai default: SALAH

Nilai valid: BETUL | SALAH

Contoh: --redshift-settings '{"TrimBlanks": true}'

EncryptionMode Menentukan mode enkripsi sisi server yang ingin Anda gunakan untuk mengirim data Anda ke S3 sebelum disalin ke Amazon Redshift. Nilai valid adalah SSE_S3 (enkripsi sisi server S3) atau SSE_KMS (enkripsi kunci KMS). Jika Anda memilih SSE_KMS, atur parameter ServerSideEncryptionKmsKeyId Untuk Amazon Resource Name (ARN) untuk kunci KMS yang akan digunakan untuk enkripsi.
catatan

Anda juga dapat menggunakan modify-endpoint perintah CLI untuk mengubah nilai EncryptionMode pengaturan untuk titik akhir yang ada dari ke. SSE_KMS SSE_S3 Tetapi Anda tidak dapat mengubah EncryptionMode nilai dari SSE_S3 keSSE_KMS.

Nilai default: SSE_S3

Nilai valid: SSE_S3 atau SSE_KMS

Contoh:--redshift-settings '{"EncryptionMode": "SSE_S3"}'

ServerSideEncryptionKmsKeyId Jika Anda mengatur EncryptionMode ke SSE_KMS, tetapkan parameter ini ke ARN untuk kunci KMS. Anda dapat menemukan ARN ini dengan memilih alias kunci dalam daftar kunci AWS KMS yang dibuat untuk akun Anda. Bila Anda membuat kunci, Anda harus mengasosiasikan kebijakan dan peran tertentu dengannya. Untuk informasi selengkapnya, lihat Membuat dan menggunakan kunci AWS KMS untuk mengenkripsi data target Amazon Redshift.

Contoh: --redshift-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

EnableParallelBatchInMemoryCSVFiles EnableParallelBatchInMemoryCSVFilesPengaturan ini meningkatkan kinerja tugas beban penuh multithreaded yang lebih besar dengan meminta DMS menulis ke disk, bukan memori. Nilai bawaannya adalah false.
CompressCsvFiles Gunakan atribut ini untuk mengompres data yang dikirim ke target Amazon Redshift selama migrasi. Nilai default adalahtrue, dan kompresi diaktifkan secara default.

Menggunakan kunci enkripsi data, dan bucket Amazon S3 sebagai penyimpanan perantara

Anda dapat menggunakan Amazon Redshift target endpoint pengaturan untuk mengkonfigurasi berikut:

  • Sebuah kunci enkripsi data AWS KMS kustom. Kemudian Anda dapat menggunakan kunci ini untuk mengenkripsi data Anda yang dikirim ke Amazon S3 sebelum disalin ke Amazon Redshift.

  • Sebuah bucket S3 kustom sebagai penyimpanan perantara untuk data yang dimigrasi ke Amazon Redshift.

  • Memetakan boolean sebagai boolean dari sumber PostgreSQL. Secara default, tipe BOOLEAN dimigrasikan sebagai varchar (1). Anda dapat menentukan MapBooleanAsBoolean untuk membiarkan target Redshift Anda memigrasikan jenis boolean sebagai boolean, seperti yang ditunjukkan pada contoh berikut.

    --redshift-settings '{"MapBooleanAsBoolean": true}'

    Perhatikan bahwa Anda harus mengatur pengaturan ini pada titik akhir sumber dan target agar dapat diterapkan.

Pengaturan kunci KMS untuk enkripsi data

Contoh berikut menunjukkan konfigurasi kunci KMS kustom untuk mengenkripsi data Anda yang dikirim ke S3. Anda bisa memulai dengan membuat panggilan create-endpoint menggunakan AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'

Di sini, objek JSON ditentukan oleh pilihan --redshift-settings yang mendefinisikan dua parameter. Satu berupa parameter EncryptionMode dengan nilai SSE_KMS. Yang satu lagi berupa parameter ServerSideEncryptionKmsKeyId dengan nilai arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1. Nilai ini adalah Amazon Resource Name (ARN) untuk kunci KMS kustom Anda.

Secara default, enkripsi data S3 terjadi menggunakan enkripsi pada sisi server S3. Bagi target Amazon Redshift pada contoh sebelumnya, ini juga setara dengan menentukan pengaturan titik akhir, seperti dalam contoh berikut.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_S3"}'

Untuk informasi selengkapnya tentang bekerja dengan enkripsi sisi server S3, lihat Melindungi data menggunakan enkripsi sisi server di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Anda juga dapat menggunakan perintah CLI modify-endpoint untuk mengubah nilai parameter EncryptionMode untuk titik akhir yang ada dari SSE_KMS ke SSE_S3. Tapi Anda tidak dapat mengubah nilai EncryptionMode dari SSE_S3 ke SSE_KMS.

Pengaturan bucket Amazon S3

Ketika Anda memigrasi data ke titik akhir target Amazon Redshift, AWS DMS menggunakan default bucket Amazon S3 sebagai penyimpanan tugas perantara sebelum menyalin data yang dimigrasi ke Amazon Redshift. Misalnya, contoh yang ditampilkan untuk membuat titik akhir target Amazon Redshift dengan kunci enkripsi AWS KMS data menggunakan bucket S3 default ini (lihat). Pengaturan kunci KMS untuk enkripsi data

Sebagai gantinya, Anda dapat menentukan bucket S3 kustom untuk penyimpanan perantara ini dengan menyertakan parameter berikut dalam nilai pilihan --redshift-settings Anda pada perintah AWS CLI create-endpoint:

  • BucketName – String yang Anda tentukan sebagai nama penyimpanan bucket S3. Jika peran akses layanan Anda didasarkan pada AmazonDMSRedshiftS3Role kebijakan, nilai ini harus memiliki awalandms-, misalnya,dms-my-bucket-name.

  • BucketFolder – (Opsional) Sebuah string yang dapat Anda tentukan sebagai nama folder penyimpanan di bucket S3 yang sudah ditetapkan.

  • ServiceAccessRoleArn – ARN dari IAM role yang memberikan akses administratif ke bucket S3. Umumnya, Anda membuat peran ini berdasarkan pada kebijakan AmazonDMSRedshiftS3Role. Sebagai contoh, lihat prosedur untuk membuat IAM role dengan kebijakan terkelola AWS di Membuat dan menggunakan kunci AWS KMS untuk mengenkripsi data target Amazon Redshift.

    catatan

    Jika Anda menetapkan ARN dari IAM role yang berbeda menggunakan pilihan--service-access-role-arn dari perintah create-endpoint, maka pilihan IAM role ini akan diutamakan.

Contoh berikut menunjukkan bagaimana Anda bisa menggunakan parameter ini untuk menentukan bucket Amazon S3 kustom dalam panggilan create-endpoint yang menggunakan AWS CLI berikut ini.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'

Pengaturan tugas multithreaded untuk Amazon Redshift

Anda dapat meningkatkan kinerja tugas full load dan change data capture (CDC) untuk titik akhir target Amazon Redshift dengan menggunakan pengaturan tugas multithreaded. Mereka memungkinkan Anda untuk menentukan jumlah thread serentak dan jumlah catatan untuk disimpan dalam buffer.

Pengaturan tugas beban penuh multithreaded untuk Amazon Redshift

Untuk mempromosikan kinerja beban penuh, Anda dapat menggunakan pengaturan ParallelLoad* tugas berikut:

  • ParallelLoadThreads— Menentukan jumlah thread bersamaan yang digunakan DMS selama pemuatan penuh untuk mendorong catatan data ke titik akhir target Amazon Redshift. Nilai default adalah nol (0) dan nilai maksimum adalah 32. Untuk informasi selengkapnya, lihat Pengaturan tugas beban penuh.

    Anda dapat menggunakan enableParallelBatchInMemoryCSVFiles atribut yang disetel false saat menggunakan pengaturan ParallelLoadThreads tugas. Atribut meningkatkan kinerja tugas beban penuh multithreaded yang lebih besar dengan meminta DMS menulis ke disk, bukan memori. Nilai bawaannya adalah true.

  • ParallelLoadBufferSize— Menentukan permintaan catatan data maksimum saat menggunakan thread beban paralel dengan target Redshift. Nilai default adalah 100 dan nilai maksimum adalah 1.000. Kami menyarankan Anda menggunakan opsi ini ketika ParallelLoadThreads > 1 (lebih besar dari satu).

catatan

Support untuk penggunaan pengaturan ParallelLoad* tugas selama LOAD PENUH ke titik akhir target Amazon Redshift tersedia dalam AWS DMS versi 3.4.5 dan yang lebih tinggi.

Pengaturan titik akhir ReplaceInvalidChars Redshift tidak didukung untuk digunakan selama pengambilan data perubahan (CDC) atau selama tugas migrasi BEBAN PENUH yang diaktifkan beban paralel. Hal ini didukung untuk migrasi FULL LOAD ketika beban paralel tidak diaktifkan. Untuk informasi selengkapnya lihat RedshiftSettingsdi Referensi AWS Database Migration Service API

Pengaturan tugas CDC multithreaded untuk Amazon Redshift

Untuk mempromosikan performa CDC, Anda dapat menggunakan pengaturan tugas ParallelApply* berikut:

  • ParallelApplyThreads - Tentukan jumlah thread serentak yang digunakan AWS DMS selama beban CDC untuk mengirim data catatan ke target titik akhir Amazon Redshift. Nilai default adalah nol (0) dan nilai maksimum adalah 32. Nilai minimum yang disarankan sama dengan jumlah irisan di cluster Anda.

  • ParallelApplyBufferSize - Tentukan permintaan catatan data maksimum saat menggunakan thread penerapan paraleld dengan target Redshift. Nilai default adalah 100 dan nilai maksimum adalah 1.000. Kami merekomendasikan untuk menggunakan opsi ini ketika ParallelApplyThreads > 1 (lebih besar dari satu).

    Untuk mendapatkan manfaat yang paling besar untuk Redshift sebagai target, kami merekomendasikan bahwa nilai ParallelApplyBufferSize setidaknya dua kali (dobel atau lebih) dari jumlah ParallelApplyThreads.

catatan

Support untuk penggunaan pengaturan ParallelApply* tugas selama titik akhir target CDC ke Amazon Redshift tersedia AWS DMS dalam versi 3.4.3 dan yang lebih tinggi.

Tingkat paralelisme yang diterapkan tergantung pada korelasi antara total Ukuran batch dan Ukuran file maksimal yang digunakan untuk mentransfer data. Ketika menggunakan pengaturan tugas CDC multithreaded dengan target Redshift, manfaat yang diperoleh ketika ukuran batch besar dalam kaitannya dengan ukuran file maksimum. Misalnya, Anda dapat menggunakan kombinasi titik akhir dan pengaturan tugas berikut untuk menyetel performa yang optimal.

// Redshift endpoint setting MaxFileSize=250000; // Task settings BatchApplyEnabled=true; BatchSplitSize =8000; BatchApplyTimeoutMax =1800; BatchApplyTimeoutMin =1800; ParallelApplyThreads=32; ParallelApplyBufferSize=100;

Menggunakan pengaturan pada contoh sebelumnya, pelanggan dengan beban kerja transaksional berat mendapat manfaat dengan buffer batch mereka, berisi 8000 catatan, diisi dalam 1800 detik, memanfaatkan 32 thread paralel dengan ukuran file maksimum 250 MB.

Untuk informasi selengkapnya, lihat Mengubah pengaturan penyetelan pemrosesan.

catatan

DMS permintaan yang berjalan selama replikasi berkelanjutan klaster Redshift dapat berbagi sama WLM (beban kerja manajemen) antrean dengan aplikasi lain permintaan yang berjalan. Jadi, pertimbangkan untuk mengonfigurasi properti WLM dengan benar agar memengaruhi performa selama replikasi berkelanjutan ke target Redshift. Sebagai contoh, jika kueri ETL paralel lainnya berjalan, DMS berjalan lebih lambat dan peningkatan performa hilang.

Tipe data target untuk Amazon Redshift

Titik akhir Amazon Redshift untuk AWS DMS mendukung sebagian besar tipe data Amazon Redshift. Tabel berikut menampilkan tipe data target Amazon Redshift yang didukung saat menggunakan AWS DMS dan pemetaan default dari tipe data AWS DMS.

Untuk informasi tambahan tentang tipe data AWS DMS, lihat Tipe data untuk AWS Database Migration Service.

Tipe data AWS DMS

Tipe data Amazon Redshift

BOOLEAN

BOOL

BYTES

VARCHAR (Length)

DATE

DATE

TIME

VARCHAR(20)

DATETIME

Jika skalanya => 0 dan =< 6, tergantung pada jenis kolom target Redshift, maka salah satu dari berikut ini:

TIMESTAMP (s)

TIMESTAMPTZ (s) - Jika stempel waktu sumber berisi offset zona (seperti di SQL Server atau Oracle) itu dikonversi ke UTC saat disisipkan/diperbarui. Jika tidak mengandung offset, maka waktu sudah dipertimbangkan dalam UTC.

Jika skala => 7 dan =< 9, maka:

VARCHAR (37)

INT1

INT2

INT2

INT2

INT4

INT4

INT8

INT8

NUMERIC

Jika skala => 0 dan =< 37, maka:

NUMERIC (p,s)

Jika skala => 38 dan =< 127, maka:

VARCHAR (Length)

REAL4

FLOAT4

REAL8

FLOAT8

STRING

Jika panjangnya 1-65.535, gunakan VARCHAR (length in bytes)

Jika panjangnya 65.536-2.147.483.647, maka gunakan VARCHAR (65535)

UINT1

INT2

UINT2

INT2

UINT4

INT4

UINT8

NUMERIC (20,0)

WSTRING

Jika panjangnya 1-65.535, gunakan NVARCHAR (length in bytes)

Jika panjangnya 65.536-2.147.483.647, gunakan NVARCHAR (65535)

BLOB

VARCHAR (maximum LOB size *2)

Ukuran LOB maksimum tidak dapat melebihi 31 KB. Amazon Redshift tidak mendukung VARCHAR yang lebih besar dari 64 KB.

NCLOB

NVARCHAR (maximum LOB size)

Ukuran LOB maksimum tidak dapat melebihi 63 KB. Amazon Redshift tidak mendukung VARCHAR yang lebih besar dari 64 KB.

CLOB

VARCHAR (maximum LOB size)

Ukuran LOB maksimum tidak dapat melebihi 63 KB. Amazon Redshift tidak mendukung VARCHAR yang lebih besar dari 64 KB.

Menggunakan AWS DMS Amazon Redshift Serverless sebagai Target

AWS DMSmendukung penggunaan Amazon Redshift Serverless sebagai titik akhir target. Untuk informasi tentang menggunakan Amazon Redshift Tanpa Server, lihat Amazon Redshift Tanpa Server di Panduan Manajemen Pergeseran Merah Amazon.

Topik ini menjelaskan cara menggunakan titik akhir Amazon Redshift Tanpa Server dengan. AWS DMS

catatan

Saat membuat titik akhir Amazon Redshift Tanpa Server, untuk DatabaseNamebidang konfigurasi RedshiftSettingstitik akhir Anda, gunakan nama gudang data Amazon Redshift atau nama titik akhir grup kerja. Untuk ServerNamebidang, gunakan nilai untuk Endpoint yang ditampilkan di halaman Workgroup untuk klaster tanpa server (misalnya,). default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com Untuk informasi tentang membuat titik akhir, lihatMembuat titik akhir sumber dan target. Untuk informasi tentang titik akhir workgroup, lihat Menyambung ke Amazon Redshift Tanpa Server.

Kebijakan Kepercayaan dengan Amazon Redshift Tanpa Server sebagai target

Saat menggunakan Amazon Redshift Tanpa Server sebagai titik akhir target, Anda harus menambahkan bagian yang disorot berikut ke kebijakan kepercayaan Anda. Kebijakan kepercayaan ini melekat pada dms-access-for-endpoint peran.

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "IsDefaultVersion": true } }

Untuk informasi selengkapnya tentang menggunakan kebijakan kepercayaan denganAWS DMS, lihatMembuat peran IAM untuk digunakan dengan AWS CLI dan API AWS DMS.

Keterbatasan saat menggunakan Amazon Redshift Serverless sebagai target

Menggunakan Redshift Tanpa Server sebagai target memiliki batasan sebagai berikut: