Menggunakan Amazon S3 sebagai sumber untuk AWS DMS - 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 Amazon S3 sebagai sumber untuk AWS DMS

Anda dapat memigrasikan data dari Amazon S3 bucket menggunakan AWS DMS. Untuk melakukan ini, berikan akses ke Amazon S3 bucket yang berisi file data satu atau lebih. Dalam bucket S3, termasuk file JSON yang menggambarkan pemetaan antara data dan tabel basis data data dalam file-file tersebut.

File data sumber harus ada dalam Amazon S3 bucket sebelum beban penuh dimulai. Anda menentukan nama bucket menggunakan parameter bucketName.

File data sumber harus dalam format comma-separated value (.csv). Nama mereka menggunakan konvensi penamaan berikut. Dalam konvensi ini, schemaName adalah skema sumber dan tableNameadalah nama tabel dalam skema itu.

/schemaName/tableName/LOAD001.csv /schemaName/tableName/LOAD002.csv /schemaName/tableName/LOAD003.csv ...

Misalnya, anggaplah file data Anda berada di mybucket, di jalur Amazon S3 berikut.

s3://mybucket/hr/employee

Pada waktu unggah, AWS DMS mengasumsikan bahwa nama skema sumber adalah hr, dan bahwa nama tabel sumber adalah employee.

Selain bucketName (diperlukan), Anda dapat memberikan parameter bucketFolderuntuk menentukan di mana AWS DMS harus mencari file data dalam Amazon S3 bucket. Melanjutkan contoh sebelumnya, jika Anda mengatur bucketFolder menjadi sourcedata, maka AWS DMS membaca file data di jalur berikut.

s3://mybucket/sourcedata/hr/employee

Anda dapat menentukan pembatas kolom, baris pembatas, indikator nilai null, dan parameter lainnya menggunakan atribut sambungan tambahan. Untuk informasi selengkapnya, lihat Pengaturan titik akhir untuk Amazon S3 sebagai sumberAWS DMS.

Anda dapat menentukan pemilik bucket dan mencegah sniping dengan menggunakanExpectedBucketOwnerPengaturan titik akhir Amazon S3, seperti yang ditunjukkan berikut. Kemudian, ketika Anda membuat permintaan untuk menguji sambungan atau melakukan migrasi, S3 memeriksa ID akun pemilik bucket terhadap parameter yang ditentukan.

--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'

Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS

Selain file data, Anda juga harus memberikan definisi tabel eksternal. Definisi tabel eksternaladalah dokumen JSON yang menjelaskan bagaimana AWS DMS harus menafsirkan data dari Amazon S3. Ukuran maksimum dokumen ini adalah 2 MB. Jika Anda membuat titik akhir sumber menggunakan AWS DMS Konsol Manajemen, Anda dapat memasukkan JSON langsung ke kotak pemetaan table. Jika Anda menggunakan API AWS Command Line Interface (AWS CLI) atau AWS DMS untuk melakukan migrasi, Anda dapat membuat file JSON untuk menentukan definisi tabel eksternal.

Misalkan Anda memiliki file data yang mencakup hal berikut.

101,Smith,Bob,2014-06-04,New York 102,Smith,Bob,2015-10-08,Los Angeles 103,Smith,Bob,2017-03-13,Dallas 104,Smith,Bob,2017-03-13,Dallas

Berikut ini adalah contoh definisi tabel eksternal untuk data ini.

{ "TableCount": "1", "Tables": [ { "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ { "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true" }, { "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20" }, { "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30" }, { "ColumnName": "HireDate", "ColumnType": "DATETIME" }, { "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" } ], "TableColumnsTotal": "5" } ] }

Unsur-unsur dalam dokumen JSON ini adalah sebagai berikut:

TableCount — jumlah tabel sumber. Dalam contoh ini, hanya ada satu tabel.

Tables — susunan yang terdiri dari satu peta JSON per tabel sumber. Dalam contoh ini, hanya ada satu peta. Setiap peta terdiri atas elemen-elemen berikut:

  • TableName — nama tabel sumber.

  • TablePath — jalur di Amazon S3 bucket Anda di mana AWS DMS dapat menemukan file beban data lengkap. JikabucketFoldernilai yang ditentukan, nilainya adalah prepended ke jalan.

  • TableOwner — nama skema untuk tabel ini.

  • TableColumns — susunan dari satu peta atau lebih, masing-masing menggambarkan kolom dalam tabel sumber:

    • ColumnName — nama kolom dalam tabel sumber.

    • ColumnType — jenis data untuk kolom. Untuk jenis data yang valid, lihat Jenis data sumber untuk Amazon S3.

    • ColumnLength — jumlah byte dalam kolom ini. Panjang kolom maksimum dibatasi untuk2147483647 Bytes (2.047MegaBytes) karena sumber S3 tidak mendukung mode LOB LENGKAP.ColumnLengthberlaku untuk tipe data berikut:

      • BYTE

      • STRING

    • ColumnNullable — nilai Boolean yang true jika kolom ini dapat berisi nilai-nilai NULL (default=false).

    • ColumnIsPk — nilai Boolean yang true jika kolom ini adalah bagian dari kunci primer (default=false).

    • ColumnDateFormat- Format tanggal masukan untuk kolom dengan tipe DATE, TIME, dan DATETIME, dan digunakan untuk mengurai string data menjadi objek tanggal. Nilai yang mungkin termasuk:

      - YYYY-MM-dd HH:mm:ss - YYYY-MM-dd HH:mm:ss.F - YYYY/MM/dd HH:mm:ss - YYYY/MM/dd HH:mm:ss.F - MM/dd/YYYY HH:mm:ss - MM/dd/YYYY HH:mm:ss.F - YYYYMMdd HH:mm:ss - YYYYMMdd HH:mm:ss.F
  • TableColumnsTotal — jumlah total kolom. Nomor ini harus sesuai dengan jumlah elemen dalam susunan TableColumns.

Jika Anda tidak menentukan sebaliknya, AWS DMS mengasumsikan bahwa ColumnLength adalah nol.

catatan

Dalam versi yang didukung AWS DMS, data sumber S3 juga dapat berisi kolom operasi opsional sebagai kolom pertama sebelum nilai kolom TableName. Kolom operasi ini mengidentifikasi operasi (INSERT) yang digunakan untuk memigrasikan data ke titik akhir target S3 selama beban penuh.

Jika ada, nilai kolom ini adalah karakter awal dari operasi kata kunci INSERT (I). Jika ditentukan, kolom ini umumnya menunjukkan bahwa sumber S3 dibuat oleh DMS sebagai target S3 selama migrasi sebelumnya.

Dalam versi DMS sebelum 3.4.2, kolom ini tidak ada dalam data sumber S3 yang dibuat dari beban penuh DMS sebelumnya. Menambahkan kolom ini ke data target S3 memungkinkan format semua baris ditulis ke target S3 agar konsisten apakah mereka ditulis selama beban penuh atau selama beban CDC. Untuk informasi lebih lanjut tentang pilihan format S3 target data, lihat Menunjukkan operasi sumber DB dalam data S3 bermigrasi.

Untuk kolom dari jenis NUMERIC, tentukan presisi dan skala. Presisi adalah jumlah digit dalam angka, dan skala adalah jumlah digit di sebelah kanan titik desimal. Anda menggunakan unsur-unsur ColumnPrecision dan ColumnScale untuk ini, seperti yang ditunjukkan berikut.

... { "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" } ...

Untuk kolom tipe DATETIME dengan data yang berisi detik pecahan, tentukan skalanya. Skalaadalah jumlah digit untuk detik fraksional, dan dapat berkisar dari 0 sampai 9. Anda menggunakanColumnScaleelemen untuk ini, seperti yang ditunjukkan berikut.

... { "ColumnName": "HireDate", "ColumnType": "DATETIME", "ColumnScale": "3" } ...

Jika Anda tidak menentukan sebaliknya,AWS DMSmengasumsikanColumnScaleadalah nol dan memotong detik fraksional.

Menggunakan CDC dengan Amazon S3 sebagai sumber untuk AWS DMS

Setelah AWS DMS melakukan beban data penuh, DMS secara opsional dapat mereplikasi perubahan data pada titik akhir target. Untuk melakukannya, Anda mengunggah file change data capture (file CDC) untuk Amazon S3 bucket Anda. AWS DMS membaca file CDC ini ketika Anda mengunggah file-file ini, dan kemudian menerapkan perubahan pada titik akhir target.

File CDC dinamakan sebagai berikut:

CDC00001.csv CDC00002.csv CDC00003.csv ...
catatan

Untuk mereplikasi file CDC di folder data perubahan unggahlah file-file ini secara berhasil dalam urutan leksikal (sekuensial). Sebagai contoh, unggah file CDC00002.csv sebelum file CDC00003.csv. Jika tidak, CDC00002.csv dilewati dan tidak direplikasi jika Anda memuat setelah CDC00003.csv. Tapi file CDC00004.csv berhasil bereplikasi jika dimuat setelah CDC00003.csv.

Untuk menunjukkan di manaAWS DMSdapat menemukan file, tentukancdcPathparameter. Melanjutkan contoh sebelumnya, jika Anda mengatur cdcPath menjadi changedata, maka AWS DMS membaca file CDC di jalur berikut.

s3://mybucket/changedata

Jika Anda mengaturcdcPathkepadachangedatadanbucketFolderkepadamyFolder, makaAWS DMSmembaca file CDC di jalur berikut.

s3://mybucket/myFolder/changedata

Catatan dalam file CDC diformat sebagai berikut:

  • Operasi – perubahan yang akan dilakukan:INSERT atau I, UPDATE atau U, atau DELETE atau D. Nilai-nilai kata kunci dan karakter ini bersifat tidak peka huruf kapital.

    catatan

    Dalam versi yang didukung AWS DMS, AWS DMS dapat mengidentifikasi operasi untuk melakukan setiap catatan beban dalam dua cara. AWS DMS dapat melakukan ini dari nilai kata kunci catatan (misalnya, INSERT) atau dari karakter awal kata kuncinya (misalnya, I). Dalam versi sebelumnya, AWS DMS mengakui operasi beban hanya dari nilai kata kunci penuh.

    Dalam AWS DMS versi sebelumnya, nilai kata kunci penuh ditulis untuk log data CDC. Selain itu, versi sebelumnya menulis nilai operasi untuk setiap target S3 hanya menggunakan kata kunci awal.

    Mengenali kedua format memungkinkan AWS DMS untuk menangani operasi terlepas dari bagaimana kolom operasi ditulis untuk membuat data sumber S3. Pendekatan ini mendukung penggunaan data target S3 sebagai sumber untuk migrasi berikutnya. Dengan pendekatan ini, Anda tidak perlu mengubah format nilai awal kata kunci yang muncul di kolom operasi sumber S3 berikutnya.

  • Tabel nama - nama tabel sumber.

  • Skema nama - nama skema sumber.

  • Data - kolom satu atau lebih yang mewakili data yang akan diubah.

Berikut ini adalah contoh file CDC untuk tabel bernama employee.

INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas

Prasyarat saat menggunakan Amazon S3 sebagai sumber untuk AWS DMS

Untuk menggunakan Amazon S3 sebagai sumber untuk AWS DMS, bucket S3 sumber Anda harus berada dalam Wilayah AWS sebagai instans replikasi DMS yang memigrasikan data Anda. Selain itu, akun AWS yang Anda gunakan untuk migrasi harus memiliki akses baca ke bucket sumber.

AWS Identity and Access Management (IAM) role yang diberikan kepada akun pengguna yang digunakan untuk membuat tugas migrasi harus memiliki serangkaian izin berikut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

YangAWS Identity and Access ManagementPeran (IAM) yang ditetapkan ke akun pengguna yang digunakan untuk membuat tugas migrasi harus memiliki set izin berikut jika versi diaktifkan pada bucket Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "S3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

Batasan saat menggunakan Amazon S3 sebagai sumberAWS DMS

Batasan berikut berlaku saat menggunakan Amazon S3 sebagai sumber:

  • Jangan aktifkan versi untuk S3. Jika Anda memerlukan versi S3, gunakan kebijakan siklus hidup untuk menghapus versi lama secara aktif. Jika tidak, Anda mungkin mengalami kegagalan koneksi pengujian endpoint karena S3list-objectpanggilan batas waktu. Untuk membuat kebijakan siklus hidup untuk bucket S3, lihatMengelola siklus hidup penyimpanan. Untuk menghapus versi objek S3, lihatMenghapus versi objek dari bucket versioning-enabled.

  • Bucket S3 berkemampuan VPC (gateway VPC) didukung dalam versi 3.4.7 dan yang lebih tinggi.

Pengaturan titik akhir untuk Amazon S3 sebagai sumberAWS DMS

Anda dapat menggunakan pengaturan titik akhir untuk mengonfigurasi basis data sumber Amazon S3 yang serupa dengan menggunakan atribut koneksi tambahan. Anda menentukan pengaturan saat Anda membuat titik akhir sumber menggunakanAWS DMSkonsol, atau dengan menggunakancreate-endpointperintah diAWS CLI, dengan--s3-settings '{"EndpointSetting": "value", ...}'sintaks JSON.

Tabel berikut menunjukkan pengaturan titik akhir yang dapat Anda gunakan dengan Amazon S3 sebagai sumber.

Pilihan Deskripsi
BucketFolder

(Opsional) Nama folder dalam bucket S3. Jika atribut ini disediakan, file data sumber dan file CDC dibaca dari jalurs3://myBucket/bucketFolder/schemaName/tableName/dans3://myBucket/bucketFolder/masing-masing. Jika atribut ini tidak ditentukan, maka jalur yang digunakan adalah schemaName/tableName/.

'{"BucketFolder": "sourceData"}'

BucketName

Nama bucket S3.

'{"BucketName": "myBucket"}'

CdcPath Lokasi file CDC. Atribut ini diperlukan jika tugas menangkap perubahan data; jika tidak, itu opsional. Jika CdcPath ada, maka AWS DMS membaca file CDC dari jalur ini dan mereplikasi perubahan data ke titik akhir target . Untuk informasi selengkapnya, lihat Menggunakan CDC dengan Amazon S3 sebagai sumber untuk AWS DMS.

'{"CdcPath": "changeData"}'

CsvDelimiter

Pembatas digunakan untuk memisahkan kolom dalam file sumber. Default adalah koma. Contoh sebagai berikut.

'{"CsvDelimiter": ","}'

CsvNullValue

String yang ditentukan pengguna ituAWS DMSmemperlakukan sebagai nol saat membaca dari sumbernya. Default-nya adalah string kosong. Jika Anda tidak mengatur parameter ini,AWS DMSmemperlakukan string kosong sebagai nilai null. Jika Anda mengatur parameter ini ke string seperti “\ N”,AWS DMSmemperlakukan string ini sebagai nilai null, dan memperlakukan string kosong sebagai nilai string kosong.

CsvRowDelimiter

Pembatas digunakan untuk memisahkan baris dalam file sumber. Default adalah newline (\n).

'{"CsvRowDelimiter": "\n"}'

IgnoreHeaderRows

Ketika nilai ini diatur menjadi 1, AWS DMS mengabaikan header baris pertama dalam file .csv. Nilai 1 memungkinkan fitur tersebut, nilai 0 menonaktifkannya.

Default adalah 0.

'{"IgnoreHeaderRows": 1}'

Rfc4180

Ketika nilai ini diatur ketrueatauy, setiap tanda kutip ganda terkemuka harus diikuti oleh tanda kutip ganda akhir. Format ini sesuai dengan RFC 4180. Ketika nilai ini diatur kefalseataun, string literal disalin ke target sebagaimana adanya. Dalam kasus ini, pembatas (baris atau kolom) menandakan akhir bidang. Dengan demikian, Anda tidak dapat menggunakan pembatas sebagai bagian dari string, karena pembatas menandakan akhir nilai.

Default adalah true.

Nilai yang valid: true, false, y, n

'{"Rfc4180": false}'

Jenis data sumber untuk Amazon S3

Migrasi data yang menggunakan Amazon S3 sebagai sumber untuk AWS DMS perlu memetakan data dari Amazon S3 ke jenis data AWS DMS. Untuk informasi selengkapnya, lihat Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS.

Untuk informasi tentang cara melihat jenis data yang dipetakan dalam target, lihat bagian titik akhir target yang Anda gunakan.

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

Jenis data AWS DMS berikut digunakan dengan Amazon S3 sebagai sumber: