Masalah umum saat memigrasi MySQL ke Aurora menggunakan AWS DMS

Database


Kami baru-baru ini memigrasikan beberapa beban kerja EverSQL dari AWS RDS MySQL ke Aurora MySQL. Dalam posting ini saya akan membagikan beberapa opsi yang saya jelajahi dan masalah yang saya temui saat menggunakan masing-masing opsi, khususnya AWS DMS, jadi semoga Anda terhindar dari masalah serupa saat menjalani proses migrasi.

Solusi potensial untuk memigrasi RDS MySQL ke Aurora MySQL

Tentu saja, saya pertama kali memulai dengan dokumentasi AWS, yang menyatakan bahwa Anda dapat memigrasikan RDS MySQL ke Aurora MySQL dengan membuat Aurora Read Replicate dan mempromosikannya setelah replikasi selesai. Sayangnya, solusi ini tidak berlaku dalam kasus kami, karena instans RDS telah ditingkatkan ke MySQL 8.0.28, sementara Aurora MySQL hanya mendukung versi hingga MySQL 8.0.23, dan karena itu berakhir dengan kesalahan pemblokiran di Kami menemukan Konsol AWS. .

Rute manual juga menjadi pilihan yang saya pertimbangkan. Karena saya ingin menghindari crash pada klien saya, saya mencari solusi yang tidak hanya mengekspor data yang ada, tetapi juga terus mengulangi data baru, sehingga saya dapat mengubahnya ketika waktunya tepat. Menggunakan mysqldump/mydumper + menyiapkan replikasi MySQL tampaknya terlalu sulit akhir-akhir ini, jadi saya mengesampingkan opsi itu dan menjadikannya sebagai pilihan terakhir.

Jadi rute selanjutnya yang saya ambil adalah menggunakan AWS DMS yang merupakan layanan migrasi data AWS yang memungkinkan seseorang untuk bermigrasi antar database yang berbeda. Saya membuat titik akhir, menyiapkan instance untuk bermigrasi, dan siap digunakan. Kemudian, saya mengalami beberapa masalah yang akan saya bagikan dengan Anda, jadi saya harap Anda menghindarinya.

Harapan saya tentang migrasi menggunakan AWS DMS

Dalam pikiran saya, migrasi memiliki 3 langkah yang saya harapkan akan ditangani oleh DMS:

  • Memigrasikan skema, jadi sama persis di Aurora seperti di MySQL (indeks yang sama, struktur yang sama, dll.).
  • Transfer data yang ada
  • Mengulangi perubahan yang sedang berlangsung hingga saya memutuskan untuk beralih ke instance baru.

Masalah saat menggunakan AWS DMS untuk memigrasi MySQL ke Aurora

Dokumentasi AWS menyatakan bahwa: “Anda dapat memindahkan skema dan data dari MySQL ke klaster Aurora MySQL DB tanpa menggunakan AWS SCT”. AWS SCT adalah alat konversi skema AWS yang memungkinkan migrasi skema yang berbeda dari database sumber ke tujuan dengan tipe dan mesin database yang berbeda. Jadi pernyataan dalam dokumen ini meyakinkan saya bahwa saya dapat memulai migrasi dan bahwa saya tidak memerlukan alat eksternal (seperti AWS SCT) untuk memigrasikan skema.

Jadi saya memulai migrasi, dan beberapa hari kemudian, ketika migrasi selesai, saya melakukan pemeriksaan kesehatan bahwa data telah bermigrasi dengan baik dan siap untuk beralih. Ketika saya melakukan perubahan, saya perhatikan bahwa kueri akan berhenti selama beberapa menit tanpa mengembalikan hasil apa pun, jadi saya mulai mencari alasannya.

Saya menemukan info ini di Github yang mengatakan: “Perilaku yang Anda lihat adalah bagaimana DMS dirancang. AWS DMS mengambil pendekatan minimalis dan hanya membuat objek yang diperlukan untuk mentransfer data secara efektif. Dengan kata lain, AWS DMS hanya memiliki tabel, kunci utama, dan dalam beberapa kasus indeks . membuat unik tetapi tidak membuat objek lain yang tidak diperlukan untuk mentransfer data dari sumber secara efisien.”

Jadi apa yang gagal dilakukan DMS:

  • Indeks sekunder tidak dimigrasikan, sehingga kueri menjadi jauh lebih lambat dan seluruh database hampir tidak dapat digunakan.
  • Kolom yang sesuai tidak disesuaikan dengan mereka Anggapan nilai, yang merusak beberapa aliran program.
  • Kolom yang sesuai tidak disesuaikan dengan mereka Peningkatan otomatis pengaturan, melanggar beberapa aliran program.

Ini adalah titik di mana saya tidak mencari perbedaan dalam skema, tetapi Anda mungkin mengerti maksudnya. AWS DMS mengambil pendekatan minimal dan membuat skema minimum yang diperlukan untuk menyimpan data, tetapi skema ini tidak dapat digunakan.

Juga, jika saya ingin mengisi bagian yang hilang, saya perlu berhari-hari atau berminggu-minggu untuk menjalankan perubahan skema online untuk mengubah kolom ke pengaturan yang benar karena kami menyimpan sejumlah besar data dalam tabel tersebut.

Bagaimana cara mentransfer skema dengan benar dari MySQL ke Aurora?

Untuk memastikan bahwa Anda memigrasikan skema apa adanya, saya sarankan mengekspor skema asli (misalnya, menggunakan MySQL Workbench) dari database sumber dan mengimpornya sebelum memulai migrasi ke database target. .

Setelah memigrasikan paket, konfigurasikan AWS DMS ke jangan lakukan apapun Pada Mode persiapan meja target Saat membuat tugas migrasi database. Pengaturan ini memberitahu DMS untuk tidak menjatuhkan tabel yang ada (tabel kosong dengan skema yang benar) dan hanya memasukkan data ke dalamnya.

Proses ini kemungkinan akan lebih lambat, karena indeks sekunder sudah dibuat, tetapi ini akan memastikan bahwa skema dimigrasikan dengan benar tanpa perubahan apa pun yang merusak aplikasi Anda.





Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *