Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat memigrasikan data dari bucket Amazon S3 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 dapat dalam format berikut:
Nilai yang dipisahkan koma (.csv)
Parket (DMS versi 3.5.3 dan yang lebih baru). Untuk informasi tentang menggunakan file format Parket, lihat. Menggunakan file format Parket di Amazon S3 sebagai sumber untuk AWS DMS
Untuk file data sumber dalam format nilai dipisahkan koma (.csv), beri nama menggunakan konvensi penamaan berikut. Dalam konvensi ini,
adalah skema sumber dan schemaName
adalah nama tabel dalam skema itu.tableName
/
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 muat, AWS DMS mengasumsikan bahwa nama skema sumber adalahhr
, dan bahwa nama tabel sumber adalah. employee
Selain bucketName
(yang diperlukan), Anda dapat memberikan bucketFolder
parameter opsional untuk menentukan di mana AWS DMS harus mencari file data di bucket Amazon S3. Melanjutkan contoh sebelumnya, jika Anda mengatur bucketFolder
kesourcedata
, kemudian 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 sumber untuk AWS DMS.
Anda dapat menentukan pemilik bucket dan mencegah sniping dengan menggunakan setelan endpoint ExpectedBucketOwner
Amazon S3, seperti yang ditunjukkan berikut ini. Kemudian, saat Anda membuat permintaan untuk menguji koneksi atau melakukan migrasi, S3 memeriksa ID akun pemilik bucket terhadap parameter yang ditentukan.
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
Topik
- Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS
- Menggunakan CDC dengan Amazon S3 sebagai sumber untuk AWS DMS
- Prasyarat saat menggunakan Amazon S3 sebagai sumber untuk AWS DMS
- Keterbatasan saat menggunakan Amazon S3 sebagai sumber AWS DMS
- Pengaturan titik akhir untuk Amazon S3 sebagai sumber untuk AWS DMS
- Jenis data sumber untuk Amazon S3
- Menggunakan file format Parket di Amazon S3 sebagai sumber untuk AWS DMS
Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS
Selain file data, Anda juga harus memberikan definisi tabel eksternal. Definisi tabel eksternal adalah dokumen JSON yang menjelaskan bagaimana AWS DMS seharusnya menafsirkan data dari Amazon S3. Ukuran maksimum dokumen ini adalah 2 MB. Jika Anda membuat titik akhir sumber menggunakan AWS DMS Management Console, Anda dapat memasukkan JSON langsung ke kotak pemetaan tabel. Jika Anda menggunakan AWS Command Line Interface (AWS CLI) atau AWS DMS API 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. JikabucketFolder
nilai ditentukan, nilainya ditambahkan ke jalur. -
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.047 MegaBytes) karena sumber S3 tidak mendukung mode LOB PENUH.ColumnLength
berlaku untuk tipe data berikut:-
BYTE
-
STRING
-
-
ColumnNullable
— nilai Boolean yangtrue
jika kolom ini dapat berisi nilai-nilai NULL (default=false
). -
ColumnIsPk
— nilai Boolean yangtrue
jika kolom ini adalah bagian dari kunci primer (default=false
). -
ColumnDateFormat
— format tanggal input 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 susunanTableColumns
.
Jika Anda tidak menentukan sebaliknya, AWS DMS asumsikan ColumnLength
itu nol.
catatan
Dalam versi yang didukung AWS DMS, data sumber S3 juga dapat berisi kolom operasi opsional sebagai kolom pertama sebelum nilai TableName
kolom. 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 skala. Skala adalah jumlah digit untuk detik pecahan, dan dapat berkisar dari 0 hingga 9. Anda menggunakan ColumnScale
elemen untuk ini, seperti yang ditunjukkan berikut.
...
{
"ColumnName": "HireDate",
"ColumnType": "DATETIME",
"ColumnScale": "3"
}
...
Jika Anda tidak menentukan sebaliknya, AWS DMS asumsi ColumnScale
adalah nol dan memotong detik pecahan.
Menggunakan CDC dengan Amazon S3 sebagai sumber untuk AWS DMS
Setelah AWS DMS melakukan pemuatan data penuh, secara opsional dapat mereplikasi perubahan data ke titik akhir target. Untuk melakukan ini, Anda meng-upload file change data capture (file CDC) ke bucket Amazon S3 Anda. AWS DMS membaca file CDC ini saat Anda mengunggahnya, 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 mana AWS DMS dapat menemukan file, tentukan cdcPath
parameter. Melanjutkan contoh sebelumnya, jika Anda mengatur cdcPath
menjadi
, maka AWS DMS membaca file CDC di jalur berikut.changedata
s3://mybucket
/changedata
Jika Anda mengatur cdcPath
ke
dan changedata
bucketFolder
ke
, maka AWS DMS membaca file CDC di jalur berikut.myFolder
s3://mybucket
/myFolder
/changedata
Catatan dalam file CDC diformat sebagai berikut:
-
Operasi – perubahan yang akan dilakukan:
INSERT
atauI
,UPDATE
atauU
, atauDELETE
atauD
. Nilai-nilai kata kunci dan karakter ini bersifat tidak peka huruf kapital.catatan
Dalam AWS DMS versi yang didukung, AWS DMS dapat mengidentifikasi operasi untuk melakukan untuk setiap catatan beban dalam dua cara. AWS DMS dapat melakukan ini dari nilai kata kunci catatan (misalnya,
INSERT
) atau dari karakter awal kata kunci (misalnya,I
). Dalam versi sebelumnya, AWS DMS mengenali operasi beban hanya dari nilai kata kunci penuh.Dalam versi sebelumnya AWS DMS, nilai kata kunci lengkap ditulis untuk mencatat 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 AWS DMS, bucket S3 sumber Anda harus berada di AWS Wilayah yang sama dengan instance replikasi DMS yang memigrasikan data Anda. Selain itu, akun AWS yang Anda gunakan untuk migrasi harus memiliki akses baca ke bucket sumber. Untuk AWS DMS versi 3.4.7 dan yang lebih tinggi, DMS harus mengakses bucket sumber melalui titik akhir VPC atau rute umum. Untuk informasi tentang titik akhir VPC, lihat. Mengkonfigurasi titik akhir VPC sebagaiAWSSumber DMS dan titik akhir target
Peran AWS Identity and Access Management (IAM) yang ditetapkan ke akun pengguna yang digunakan untuk membuat tugas migrasi harus memiliki kumpulan 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*"
]
}
]
}
Peran AWS Identity and Access Management (IAM) yang ditetapkan ke akun pengguna yang digunakan untuk membuat tugas migrasi harus memiliki kumpulan izin berikut jika pembuatan versi diaktifkan di 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*"
]
}
]
}
Keterbatasan saat menggunakan Amazon S3 sebagai sumber AWS DMS
Batasan berikut berlaku saat menggunakan Amazon S3 sebagai sumber:
-
Jangan aktifkan pembuatan 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 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. -
Bucket S3 berkemampuan VPC (gateway VPC) didukung dalam versi 3.4.7 dan yang lebih tinggi.
MySQL mengonversi
time
tipe data ke.string
Untuk melihat nilai tipetime
data di MySQL, tentukan kolom dalam tabel targetstring
sebagai, dan atur pengaturan mode persiapan tabel Target tugas ke Truncate.AWS DMS menggunakan tipe
BYTE
data secara internal untuk data baikBYTE
dan tipeBYTES
data.Titik akhir sumber S3 tidak mendukung fitur muat ulang tabel DMS.
-
AWS DMS tidak mendukung mode LOB Penuh dengan Amazon S3 sebagai Sumber.
Batasan berikut berlaku saat menggunakan file format Parket di Amazon S3 sebagai sumber:
-
Tanggal masuk
MMYYYYDD
, atau tidakDDMMYYYY
didukung untuk fitur partisi tanggal Sumber Parket S3.
Pengaturan titik akhir untuk Amazon S3 sebagai sumber untuk AWS DMS
Anda dapat menggunakan pengaturan titik akhir untuk mengonfigurasi basis data sumber Amazon S3 mirip dengan menggunakan atribut koneksi tambahan. Anda menentukan pengaturan saat Anda membuat titik akhir sumber menggunakan AWS DMS konsol, atau dengan menggunakan create-endpoint
perintah di AWS CLI, dengan sintaks --s3-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
Tabel berikut menunjukkan pengaturan titik akhir yang dapat Anda gunakan dengan Amazon S3 sebagai sumber.
Opsi | Deskripsi |
---|---|
BucketFolder |
(Opsional) Nama folder dalam bucket S3. Jika atribut ini disediakan, file data sumber dan file CDC dibaca dari jalur
|
BucketName |
Nama bucket S3.
|
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.
|
CsvDelimiter |
Pembatas digunakan untuk memisahkan kolom dalam file sumber. Default adalah koma. Berikut contohnya.
|
CsvNullValue |
String yang ditentukan pengguna yang AWS DMS diperlakukan sebagai null saat membaca dari sumbernya. Default-nya adalah string kosong. Jika Anda tidak mengatur parameter ini, AWS DMS memperlakukan string kosong sebagai nilai null. Jika Anda mengatur parameter ini ke string seperti “\ N”, AWS DMS memperlakukan 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 (
|
DataFormat |
Tetapkan nilai ini
|
IgnoreHeaderRows |
Ketika nilai ini diatur ke 1, AWS DMS mengabaikan header baris pertama dalam file.csv. Nilai 1 memungkinkan fitur tersebut, nilai 0 menonaktifkannya. Default adalah 0.
|
Rfc4180 |
Ketika nilai ini diatur ke Default adalah Nilai yang valid:
|
Jenis data sumber untuk Amazon S3
Migrasi data yang menggunakan Amazon S3 sebagai sumber AWS DMS kebutuhan untuk memetakan data dari Amazon S3 AWS DMS ke tipe data. 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 tipe AWS DMS data, lihatTipe data untuk AWS Database Migration Service.
Tipe AWS DMS data berikut digunakan dengan Amazon S3 sebagai sumber:
-
BYTE - Membutuhkan
ColumnLength
. Untuk informasi selengkapnya, lihat Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS. -
DATE
-
TIME
-
DATETIME - Untuk informasi selengkapnya dan contoh, lihat contoh tipe DATETIME di. Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS
-
INT1
-
INT2
-
INT4
-
INT8
-
NUMERIK — Membutuhkan
ColumnPrecision
danColumnScale
. AWS DMS mendukung nilai maksimum berikut:ColumnPrecision: 38
ColumnScale: 31
Untuk informasi selengkapnya dan contoh, lihat contoh tipe NUMERIK diMendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS.
-
REAL4
-
REAL8
-
STRING - Membutuhkan
ColumnLength
. Untuk informasi selengkapnya, lihat Mendefinisikan tabel eksternal untuk Amazon S3 sebagai sumber untuk AWS DMS. -
UINT1
-
UINT2
-
UINT4
-
UINT8
-
BLOB
-
CLOB
-
BOOLEAN
Menggunakan file format Parket di Amazon S3 sebagai sumber untuk AWS DMS
Di AWS DMS versi 3.5.3 dan yang lebih baru, Anda dapat menggunakan file format Parquet di bucket S3 sebagai sumber untuk replikasi Full-Load atau CDC.
DMS hanya mendukung file format Parket sebagai sumber yang dihasilkan DMS dengan memigrasikan data ke titik akhir target S3. Nama file harus dalam format yang didukung, atau DMS tidak akan menyertakannya dalam migrasi.
Untuk file data sumber dalam format Parket, mereka harus dalam folder dan konvensi penamaan berikut.
schema/table1/LOAD00001.parquet
schema/table2/LOAD00002.parquet
schema/table2/LOAD00003.parquet
Untuk file data sumber untuk data CDC dalam format Parket, beri nama dan simpan menggunakan folder dan konvensi penamaan berikut.
schema/table/20230405-094615814.parquet
schema/table/20230405-094615853.parquet
schema/table/20230405-094615922.parquet
Untuk mengakses file dalam format Parket, atur pengaturan titik akhir berikut:
Atur
DataFormat
keParquet
.Jangan mengatur
cdcPath
pengaturan. Pastikan Anda membuat file format Parket di folder skema/tabel yang ditentukan.
Untuk informasi selengkapnya tentang setelan untuk titik akhir S3, lihat S3Settings di Referensi API.AWS Database Migration Service
Jenis data yang didukung untuk file format Parket
AWS DMS mendukung tipe data sumber dan target berikut saat memigrasi data dari file format Parket. Pastikan tabel target Anda memiliki kolom tipe data yang benar sebelum bermigrasi.
Jenis data sumber | Jenis data target |
---|---|
BYTE |
BINARY |
DATE |
DATE32 |
TIME |
TIME32 |
DATETIME |
TIMESTAMP |
INT1 |
INT8 |
INT2 |
INT16 |
INT4 |
INT32 |
INT8 |
INT64 |
NUMERIC |
DECIMAL |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
STRING |
UINT1 |
UINT8 |
UINT2 |
UINT16 |
UINT4 |
UINT32 |
UINT8 |
UINT |
WSTRING |
STRING |
BLOB |
BINARY |
NCLOB |
STRING |
CLOB |
STRING |
BOOLEAN |
BOOL |