View a markdown version of this page

Menggunakan MySQL-compatible database sebagai target AWS Database Migration Service - AWS Database Migration Service

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

Menggunakan MySQL-compatible database sebagai target AWS Database Migration Service

Anda dapat memigrasikan data ke MySQL-compatible database apa pun menggunakan AWS DMS, dari salah satu mesin data sumber yang AWS DMS mendukung. Jika Anda bermigrasi ke MySQL-compatible database lokal, maka AWS DMS mesin sumber Anda harus berada di dalam ekosistem. AWS Mesin dapat menggunakan layanan yang AWS dikelola seperti Amazon RDS, Amazon Aurora, atau Amazon S3. Atau mesin bisa berada di basis data terkelola mandiri di Amazon EC2.

Anda dapat menggunakan SSL untuk mengenkripsi koneksi antara MySQL-compatible titik akhir dan instance replikasi. Untuk informasi selengkapnya tentang penggunaan SSL dengan MySQL-compatible titik akhir, lihat. Menggunakan SSL dengan AWS Database Migration Service

Untuk informasi tentang versi MySQL AWS DMS yang mendukung sebagai target, lihat. Target untuk AWS DMS

Anda dapat menggunakan MySQL-compatible database berikut sebagai target untuk AWS DMS:

  • MySQL Community Edition

  • MySQL Standard Edition

  • MySQL Enterprise Edition

  • MySQL Cluster Carrier Grade Edition

  • MariaDB Community Edition

  • MariaDB Enterprise Edition

  • MariaDB Column Store

  • Amazon Aurora MySQL

catatan

Terlepas dari mesin penyimpanan sumber (MyISAM, MEMORY, dan sebagainya) AWS DMS , membuat tabel target MySQL-compatible sebagai tabel InnoDB secara default.

Jika Anda memerlukan tabel di mesin penyimpanan selain InnoDB, Anda dapat membuat tabel secara manual pada MySQL-compatible target dan memigrasikan tabel menggunakan opsi Jangan apa-apa. Untuk informasi selengkapnya, lihat Full-load pengaturan tugas.

Untuk detail tambahan tentang bekerja dengan MySQL-compatible database sebagai target AWS DMS, lihat bagian berikut.

Menggunakan MySQL-compatible database apa pun sebagai target AWS Database Migration Service

Sebelum Anda mulai bekerja dengan MySQL-compatible database sebagai target AWS DMS, pastikan Anda telah menyelesaikan prasyarat berikut:

  • Berikan akun pengguna AWS DMS yang memiliki read/write hak istimewa ke MySQL-compatible database. Untuk membuat hak yang diperlukan, jalankan perintah berikut.

    CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  • Selama fase migrasi beban penuh, Anda harus nonaktifkan kunci asing pada tabel target Anda. Untuk menonaktifkan pemeriksaan kunci asing pada MySQL-compatible database selama pemuatan penuh, Anda dapat menambahkan perintah berikut ke bagian Atribut koneksi tambahan AWS DMS konsol untuk titik akhir target Anda.

    Initstmt=SET FOREIGN_KEY_CHECKS=0;
  • Tetapkan parameter basis data local_infile = 1 untuk mengaktifkan AWS DMS agar memuat data ke basis data target.

  • Berikan hak istimewa berikut jika Anda menggunakan penilaian MySQL-specific premi.

    grant select on mysql.user to <dms_user>; grant select on mysql.db to <dms_user>; grant select on mysql.tables_priv to <dms_user>; grant select on mysql.role_edges to <dms_user> #only for MySQL version 8.0.11 and higher

Pertimbangan untuk target Aurora MySQL 8.4

Aurora MySQL 8.4 memperkenalkan perubahan keamanan yang dapat memengaruhi konektivitas titik akhir target. AWS DMS Tinjau hal-hal berikut sebelum memutakhirkan target Aurora MySQL Anda ke versi 8.4.

Penegakan TLS

Aurora MySQL 8.4 ditetapkan secara ON default, yang berarti semua koneksi require_secure_transport harus menggunakan TLS. Jika titik akhir AWS DMS target Anda terhubung ke Aurora MySQL 8.4 dan mode SSL diatur ke tidak ada, koneksi akan ditolak. Jika mode SSL endpoint Anda disetel ke none, Anda akan menerima kesalahan berikut: MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON Setel mode SSL endpoint ke verify-ca atau verify-full. Kedua mode memerlukan sertifikat CA. Atau, atur require_secure_transport ke OFF dalam grup parameter cluster Aurora Anda untuk mengizinkan koneksi yang tidak terenkripsi.

catatan

Aurora MySQL 8.4 hanya mendukung suite cipher GCM untuk TLS 1.2. Semua CBC-mode cipher telah dihapus. AWS DMS menggunakan TLS 1.2 untuk titik akhir MySQL dan Aurora MySQL dan akan secara otomatis menegosiasikan cipher GCM yang didukung. Jika Anda memiliki konfigurasi sandi khusus, verifikasi bahwa mereka menyertakan salah satu cipher yang didukung berikut: ECDHE-RSA-AES128-GCM-SHA256,,, atau. ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384

catatan

AWS DMS tidak mendukung TLS 1.3 untuk endpoint MySQL. Ini tidak mempengaruhi konektivitas ke Aurora MySQL 8.4, karena Aurora MySQL 8.4 terus mendukung TLS 1.2.

Otentikasi (Aurora MySQL dan RDS untuk MySQL 8.4)

Aurora MySQL 8.4 menggantikan parameter dengan, yang defaultnya. default_authentication_plugin authentication_policy *:caching_sha2_password Pengguna database yang ada mempertahankan plugin otentikasi mereka saat ini setelah peningkatan. Jika Anda membuat pengguna AWS DMS endpoint baru setelah memutakhirkan, mereka akan menggunakan secara caching_sha2_password default kecuali Anda menyetel authentication_policy ke *:mysql_native_password dalam grup parameter cluster Anda.

Reset kata sandi pengguna master

Setelah memutakhirkan ke Aurora MySQL 8.4, mengatur ulang kata sandi pengguna master melalui, Konsol Manajemen AWS CLI, atau melalui rotasi Secrets Manager menetapkan plugin otentikasi pengguna master ke default yang ditentukan oleh parameter. authentication_policy Jika authentication_policy disetel ke nilai defaultnya (*:caching_sha2_password), plugin otentikasi pengguna master berubah dari mysql_native_password ke caching_sha2_password pada pengaturan ulang kata sandi berikutnya.

Jika titik akhir AWS DMS target Anda menggunakan akun pengguna utama, verifikasi konektivitas setelah pengaturan ulang kata sandi apa pun. Untuk menghindari perubahan plugin otentikasi, baik:

  • Setel authentication_policy ke *:mysql_native_password dalam grup parameter cluster Anda sebelum mengatur ulang kata sandi, atau

  • Buat pengguna AWS DMS endpoint khusus dengan plugin otentikasi yang ditentukan secara eksplisit (disarankan). Misalnya: CREATE USER 'dms_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Untuk informasi selengkapnya tentang perubahan keamanan Aurora MySQL 8.4, lihat Keamanan dengan Amazon Aurora MySQL dan manajemen Kata Sandi dengan Amazon Aurora dan Secrets Manager di Panduan Pengguna Amazon Aurora. Untuk informasi tentang masalah yang diketahui plugin otentikasi, lihat Plugin otentikasi di Panduan Pengguna Amazon RDS.

Keterbatasan dalam menggunakan MySQL-compatible database sebagai target AWS Database Migration Service

Saat menggunakan database MySQL sebagai target AWS DMS , tidak mendukung hal berikut:

  • Beberapa pernyataan bahasa definisi data (DDL): TRUNCATE PARTITION, DROP TABLE, dan RENAME TABLE.

  • Menggunakan pernyataan ALTER TABLE table_name ADD COLUMN column_name untuk menambahkan kolom ke bagian depan atau tengah tabel.

  • Saat memuat data ke MySQL-compatible target dalam tugas pemuatan penuh, AWS DMS tidak melaporkan kesalahan yang disebabkan oleh kendala dalam log tugas, yang dapat menyebabkan kesalahan kunci duplikat atau ketidakcocokan dengan jumlah catatan. Hal ini disebabkan oleh cara MySQL menangani data lokal dengan perintah. LOAD DATA Pastikan untuk melakukan hal berikut selama fase beban penuh:

    • Nonaktifkan kendala

    • Gunakan AWS DMS validasi untuk memastikan data konsisten.

  • Saat Anda memperbarui nilai kolom ke nilai yang ada, MySQL-compatible database mengembalikan 0 rows affected peringatan. Meskipun secara teknis perilaku ini bukan merupakan kesalahan, penanganan situasi ini berbeda dibandingkan mesin basis data lain. Misalnya Oracle melakukan update dari satu baris. Untuk MySQL-compatible database, AWS DMS buat entri dalam tabel kontrol awsdms_apply_exceptions dan mencatat peringatan berikut.

    Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
  • Aurora Nirserver tersedia sebagai target untuk Amazon Aurora versi 2, kompatibel dengan MySQL versi 5.7. (Pilih Aurora MySQL versi 2.07.1 untuk dapat menggunakan Aurora Nirserver dengan kompatibilitas terhadap MySQL 5.7.) Untuk informasi selengkapnya tentang Aurora Tanpa Server, lihat Menggunakan Aurora Tanpa Server v2 di Panduan Pengguna Amazon Aurora.

  • AWS DMS tidak mendukung penggunaan titik akhir pembaca untuk Aurora atau Amazon RDS, kecuali instans dalam mode yang dapat ditulis, yaitu parameter innodb_read_only dan disetel read_only ke atau. 0 OFF Untuk informasi selengkapnya tentang penggunaan Amazon RDS dan Aurora sebagai target, lihat berikut ini:

  • Saat mereplikasi tipe data TIME, sebagian fraksional dari nilai waktu tidak direplikasi.

  • Saat mereplikasi tipe data TIME dengan Atribut Koneksi EkstraloadUsingCSV=false, nilai waktu dibatasi ke rentang. [00:00:00, 23:59:59]

Pengaturan titik akhir saat menggunakan MySQL-compatible database sebagai target AWS DMS

Anda dapat menggunakan pengaturan titik akhir untuk mengonfigurasi basis data MySQL-compatible target Anda 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 --my-sql-settings '{"EndpointSetting": "value", ...}' JSON.

Tabel berikut menunjukkan pengaturan endpoint yang dapat Anda gunakan dengan MySQL sebagai target.

Nama Deskripsi

ConnectionTimeout

Gunakan atribut koneksi tambahan (ECA) ini untuk mengatur batas waktu koneksi titik akhir untuk instance MySQL, dalam hitungan detik. Nilai bawaannya adalah 10 detik. Contoh ECA:ConnectionTimeout=30.

TargetDbType

Tentukan tujuan untuk migrasi tabel sumber pada target, baik untuk basis data tunggal atau beberapa basis data. Jika Anda menentukanSPECIFIC_DATABASE, Anda perlu menentukan nama database, baik saat menggunakan AWS CLI atau Konsol Manajemen AWS.

Nilai default: MULTIPLE_DATABASES

Nilai valid: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

Contoh: --my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'

ParallelLoadThreads

Meningkatkan kinerja saat memuat data ke database MySQL-compatible target. Menentukan berapa banyak thread untuk digunakan untuk memuat data ke dalam database MySQL-compatible target. Menetapkan sejumlah besar thread dapat memiliki efek yang berlawanan pada performa basis data, karena koneksi terpisah diperlukan untuk setiap utas.

Nilai default: 1

Nilai valid: 1-5

Contoh: --my-sql-settings '{"ParallelLoadThreads": 1}'

AfterConnectScript

Menentukan script untuk menjalankan segera setelah AWS DMS terhubung ke titik akhir.

Misalnya, Anda dapat menentukan bahwa MySQL-compatible target harus menerjemahkan pernyataan yang diterima ke dalam kumpulan karakter latin1, yang merupakan kumpulan karakter default yang dikompilasi dari database. Parameter ini biasanya meningkatkan performa ketika mengonversi dari client UTF8.

Contoh: --my-sql-settings '{"AfterConnectScript": "SET character_set_connection='latin1'"}'

MaxFileSize

Menentukan ukuran maksimum (dalam KB) dari setiap file.csv yang digunakan untuk mentransfer data ke database. MySQL-compatible

Nilai default: 32.768 KB (32 MB)

Nilai valid: 1-1.048.576

--my-sql-settings '{"MaxFileSize": 512}'

Anda juga dapat menggunakan atribut koneksi tambahan untuk mengonfigurasi basis data MySQL-compatible target Anda.

Tabel berikut menunjukkan atribut koneksi tambahan yang dapat Anda gunakan dengan MySQL sebagai target.

Nama Deskripsi

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Menonaktifkan memeriksa kunci asing.

Contoh: --extra-connection-attributes "Initstmt=SET FOREIGN_KEY_CHECKS=0;"

Initstmt=SET time_zone

Menentukan zona waktu untuk MySQL-compatible database target.

Nilai default: UTC

Nilai yang valid: Nama zona waktu yang tersedia di database MySQL target.

Contoh: --extra-connection-attributes "Initstmt=SET time_zone=US/Pacific;"

Atau, Anda dapat menggunakan AfterConnectScript parameter --my-sql-settings perintah untuk menonaktifkan pemeriksaan kunci asing dan menentukan zona waktu untuk database Anda.

Tipe data target untuk MySQL

Tabel berikut menunjukkan tipe data target database MySQL yang didukung saat AWS DMS menggunakan dan pemetaan AWS DMS default dari tipe data.

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

AWS DMS tipe data

Tipe data MySQL

BOOLEAN

BOOLEAN

BYTES

Jika panjangnya dari 1 sampai 65.535, maka gunakan VARBINARY (length).

Jika panjangnya dari 65.536 hingga 2.147.483.647 maka gunakan LONGLOB.

DATE

DATE

TIME

TIME

TIMESTAMP

“If scale => 0 and =< 6, then: DATETIME (Scale)

If scale is => 7 and =< 9, then: VARCHAR (37)"

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (p,s)

REAL4

FLOAT

REAL8

DOUBLE PRECISION

STRING

Jika panjangnya dari 1 sampai 21.845 maka gunakan VARCHAR (panjang).

Jika panjangnya dari 21.846 hingga 2.147.483.647 maka gunakan LONGTEXT.

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

Jika panjangnya dari 1 sampai 32.767 maka gunakan VARCHAR (panjang).

Jika panjangnya dari 32.768 hingga 2.147.483.647 maka gunakan LONGTEXT.

BLOB

Jika panjangnya dari 1 sampai 65.535 maka gunakan BLOB.

Jika panjangnya dari 65.536 hingga 2.147.483.647 maka gunakan LONGBLOB.

Jika panjangnya 0, gunakan LONGBLOB (support LOB penuh).

NCLOB

Jika panjangnya dari 1 sampai 65.535, gunakan TEXT.

Jika panjangnya dari 65.536 hingga 2.147.483.647, gunakan LONGTEXT dengan ucs2 untuk CHARACTER SET.

Jika panjangnya 0, gunakan LONGTEXT (support LOB penuh) dengan ucs2 untuk CHARACTER SET.

CLOB

Jika panjangnya dari 1 sampai 65.535, gunakan TEXT.

Jika panjangnya dari 65.536 hingga 2.147.483.647, gunakan LONGTEXT.

Jika panjangnya 0, gunakan LONGTEXT (supportLOB penuh).