Memigrasikan Amazon RDS for MySQL ke Azure Database for MySQL menggunakan replikasi data masuk
BERLAKU UNTUK: Azure Database for MySQL - Server Tunggal Azure Database for MySQL - Server Fleksibel
Penting
Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?
Catatan
Artikel ini berisi referensi ke istilah slave, istilah yang tidak lagi digunakan Microsoft. Saat istilah dihapus dari perangkat lunak, kami akan menghapusnya dari artikel ini.
Anda dapat menggunakan metode seperti cadangan dan pemulihan MySQL, MySQL Workbench Export and Import, atau Azure Database Migration Service untuk memigrasikan database MySQL Anda ke server fleksibel Azure Database for MySQL. Anda dapat memigrasikan beban kerja Anda dengan waktu henti minimum dengan menggunakan kombinasi alat sumber terbuka seperti mysqldump atau mydumper dan myloader dengan Replikasi Data-in.
Replikasi dalam Data adalah teknik yang mereplikasi perubahan data dari server sumber ke server tujuan berdasarkan metode posisi file log biner. Dalam skenario ini, instans MySQL yang beroperasi sebagai sumber (tempat perubahan database berasal) menulis pembaruan dan perubahan sebagai peristiwa ke log biner. Informasi dalam log biner disimpan dalam format pencatatan yang berbeda sesuai dengan perubahan {i>database
Siapkan Replikasi Data-in untuk menyinkronkan data dari server MySQL sumber ke server MySQL target. Anda dapat melakukan cutover selektif aplikasi Anda dari database utama (atau sumber) ke replika (atau database target).
Dalam tutorial ini, Anda akan mempelajari cara menyiapkan Replikasi Data-in antara server sumber yang menjalankan Amazon Relational Database Service (RDS) for MySQL dan server target yang menjalankan server fleksibel Azure Database for MySQL.
Pertimbangan performa
Sebelum Memulai tutorial ini, pertimbangkan implikasi performa lokasi, dan kapasitas komputer klien yang akan Anda gunakan untuk melakukan operasi.
Lokasi Klien
Melakukan operasi pencadangan atau pemulihan dari komputer klien yang diluncurkan di lokasi yang sama dengan server database:
- Untuk instans server fleksibel Azure Database for MySQL, komputer klien harus berada di jaringan virtual dan zona ketersediaan yang sama dengan server database target.
- Untuk instans database Amazon RDS sumber, instans klien harus berada di Amazon Virtual Private Cloud (Amazon VPC) dan Zona Ketersediaan yang sama dengan server database sumber. Dalam kasus sebelumnya, Anda dapat memindahkan file cadangan antar komputer klien dengan menggunakan protokol transfer file seperti FTP atau SFTP atau mengunggahnya ke Azure Blob Storage. Untuk mengurangi total waktu migrasi, Anda dapat mengompres file sebelum mentransfernya.
Kapasitas klien
Di mana pun komputer klien berada, komputer klien memerlukan komputasi, I/O, dan kapasitas jaringan yang memadai untuk melakukan operasi yang diminta. Rekomendasi umumnya meliputi:
- Jika cadangan atau pemulihan melibatkan pemrosesan data real-time, misalnya kompresi atau dekompresi, pilih kelas instans dengan setidaknya satu inti CPU per alur cadangan/pemulihan.
- Pastikan ada cukup bandwidth jaringan yang tersedia untuk instans klien. Gunakan jenis instans yang mendukung fitur jaringan yang dipercepat. Untuk informasi selengkapnya, lihat bagian "Jaringan yang Dipercepat" di Panduan Jaringan Azure Virtual Machine.
- Pastikan lapisan penyimpanan komputer klien menyediakan kapasitas baca/tulis yang diharapkan. Sebaiknya Anda menggunakan komputer virtual Azure dengan penyimpanan SSD Premium.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda perlu:
Instal mysqlclient di komputer klien Anda untuk membuat cadangan, dan lakukan operasi pemulihan pada instans server fleksibel Azure Database for MySQL target Anda.
Untuk database yang lebih besar, pasang mydumper dan myloader untuk pencadangan dan pemulihan database paralel.
Catatan
Mydumper hanya dapat berjalan pada distribusi Linux. Untuk informasi selengkapnya, lihat Cara memasang mydumper.
Buat instans server fleksibel Azure Database for MySQL yang menjalankan versi 5.7 atau 8.0.
Penting
Jika target Anda adalah server fleksibel Azure Database for MySQL dengan ketersediaan tinggi (HA) redundan zona, perhatikan bahwa Replikasi Dalam Data tidak didukung untuk konfigurasi ini. Sebagai solusi, selama pembuatan server, siapkan HA redundan zona:
- Buat server dengan ketersediaan tinggi zona-redundan diaktifkan.
- Nonaktifkan ketersediaan tinggi.
- Ikuti artikel untuk menyiapkan Replikasi dalam Data.
- Setelah pemberhentian, hapus konfigurasi Replikasi dalam Data.
- Aktifkan HA.
Pastikan bahwa beberapa parameter dan fitur dikonfigurasi dan disiapkan dengan benar, seperti yang dijelaskan di bawah ini:
- Untuk alasan kompatibilitas, letakkan server database sumber dan target di versi MySQL yang sama.
- Setiap tabel harus memiliki kunci primer. Kurangnya kunci utama pada tabel dapat memperlambat proses replikasi.
- Pastikan tataan Karakter dari database sumber dan target sama.
- Atur parameter
wait_timeout
ke waktu yang wajar. Waktu bergantung pada jumlah data atau beban kerja yang ingin diimpor atau dimigrasi. - Pastikan bahwa semua tabel Anda menggunakan InnoDB. Server fleksibel Azure Database for MySQL hanya mendukung mesin penyimpanan InnoDB.
- Untuk tabel dengan banyak indeks sekunder atau tabel besar, efek overhead performa terlihat selama pemulihan. Ubah file cadangan agar pernyataan
CREATE TABLE
tidak menyertakan definisi kunci sekunder. Setelah Anda mengimpor data, buat kembali indeks sekunder untuk menghindari konsekuensi performa selama proses pemulihan.
Akhirnya, untuk mempersiapkan Replikasi dalam Data:
- Verifikasi bahwa instans server fleksibel Azure Database for MySQL target dapat terhubung ke server Amazon RDS for MySQL sumber melalui port 3306.
- Pastikan komputer yang menghosting server sumber mengizinkan lalu lintas masuk dan keluar di port 3306.
- Pastikan Anda menyediakan konektivitas situs-ke-situs ke server sumber Anda dengan menggunakan Azure ExpressRoute atau Azure VPN Gateway. Untuk informasi selengkapnya tentang pembuatan jaringan virtual, lihat dokumentasi Azure Virtual Network. Lihat juga artikel mulai cepat disertai detail langkah demi langkah.
- Konfigurasikan grup keamanan jaringan server database sumber Anda untuk mengizinkan alamat IP server fleksibel Azure Database for MySQL target.
Penting
Jika instans Amazon RDS for MySQL sumber telah GTID_mode diatur ke AKTIF, instans target server fleksibel Azure Database for MySQL juga harus memiliki GTID_mode diatur ke AKTIF.
Instans Server Fleksibel Azure Database for MySQL
Untuk mengonfigurasi instans target server fleksibel Azure Database for MySQL, yang merupakan target untuk Replikasi Data-in:
Atur nilai parameter
max_allowed_packet
ke maksimum 1073741824, yakni 1 GB. Nilai ini mencegah masalah luapan yang terkait dengan baris panjang.Atur,
slow_query_log
,general_log
,audit_log_enabled
, danquery_store_capture_mode
parameter ke OFF selama migrasi untuk membantu menghilangkan overhead yang terkait dengan pembuatan kueri.Tingkatkan ukuran komputasi instans server fleksibel Azure Database for MySQL target ke maksimum 64 vCore. Ukuran ini menyediakan lebih banyak sumber daya komputasi saat memulihkan cadangan database server sumber.
Anda selalu dapat mengurangi perhitungan untuk memenuhi permintaan aplikasi Anda setelah migrasi selesai.
Tingkatkan ukuran penyimpanan untuk mendapatkan lebih banyak IOPS selama migrasi atau tingkatkan IOPS maksimum untuk migrasi.
Catatan
IOPS maksimum yang tersedia ditentukan oleh ukuran komputasi. Untuk informasi selengkapnya, lihat bagian IOPS di Opsi komputasi dan penyimpanan di Server fleksibel Azure Database for MySQL.
Mengonfigurasi sumber Amazon RDS untuk server MySQL
Untuk menyiapkan dan mengonfigurasi server MySQL yang dihost di Amazon RDS, yang merupakan sumber untuk Replikasi dalam Data:
Pastikan bahwa pengelogan biner diaktifkan di server Amazon RDS for MySQL sumber. Periksa apakah pencadangan otomatis diaktifkan, atau pastikan replika baca ada untuk server Amazon RDS for MySQL sumber.
Pastikan bahwa file log biner di server sumber dipertahankan hingga setelah perubahan diterapkan pada instans target server fleksibel Azure Database for MySQL.
Dengan Replikasi Data-in, server fleksibel Azure Database for MySQL tidak mengelola proses replikasi.
Untuk memeriksa retensi log biner di server Amazon RDS sumber untuk menentukan jumlah jam log biner dipertahankan, panggil prosedur tersimpan
mysql.rds_show_configuration
:mysql> call mysql.rds_show_configuration; +------------------------+-------+-----------------------------------------------------------------------------------------------------------+ | name | value | description | +------------------------+-------+-----------------------------------------------------------------------------------------------------------+ | binlog retention hours | 24 | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. | | source delay | 0 | source delay specifies replication delay in seconds between current instance and its master. | | target delay | 0 | target delay specifies replication delay in seconds between current instance and its future read-replica. | +------------------------+------- +-----------------------------------------------------------------------------------------------------------+ 3 rows in set (0.00 sec)
Untuk mengonfigurasi periode retensi log biner, jalankan
rds_set_configuration
prosedur tersimpan untuk memastikan bahwa log biner disimpan di server sumber untuk waktu yang diinginkan. Contohnya:Mysql> Call mysql.rds_set_configuration(‘binlog retention hours', 96);
Jika Anda membuat cadangan dan memulihkan, perintah sebelumnya membantu Anda mengejar perubahan delta dengan cepat.
Catatan
Pastikan ruang disk yang cukup untuk menyimpan log biner di server sumber berdasarkan periode retensi yang ditentukan.
Ada dua cara untuk mengambil cadangan data dari server Amazon RDS for MySQL sumber. Salah satu pendekatannya adalah mengambil cadangan data secara langsung dari server sumber. Pendekatan lainnya dengan mengambil cadangan dari replika baca Amazon RDS for MySQL.
Untuk mengambil cadangan data secara langsung dari server sumber:
Pastikan Anda menghentikan aktivitas penulisan dari aplikasi selama beberapa menit untuk mendapatkan cadangan data yang konsisten secara transaksional.
Anda juga dapat mengatur parameter
read_only
secara sementara ke nilai 1 sehingga penulisan tidak diproses saat mengambil cadangan data.Setelah menghentikan penulisan di server sumber, kumpulkan nama file log biner dan imbangi dengan menjalankan perintah
Mysql> Show master status;
.Simpan nilai-nilai ini untuk memulai replikasi dari instans server fleksibel Azure Database for MySQL Anda.
Untuk membuat cadangan data, eksekusi
mysqldump
dengan menjalankan perintah berikut:$ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
Jika menghentikan penulisan di server sumber bukan menjadi salah satu opsi atau performa pencadangan data tidak dapat diterima di server sumber, ambil cadangan di server replika:
Buat replika baca Amazon MySQL dengan konfigurasi yang sama dengan server sumber. Kemudian, buat cadangan di sana.
Biarkan Amazon RDS for MySQL membaca replika mengejar ketinggalan dengan sumber Amazon RDS untuk server MySQL.
Ketika lag replika mencapai 0 pada replika baca, hentikan replikasi dengan memanggil prosedur yang
mysql.rds_stop_replication
tersimpan.Mysql> call mysql.rds_stop_replication;
Saat replikasi berhenti, hubungkan ke replika. Kemudian, jalankan perintah
SHOW SLAVE STATUS
untuk mengambil nama file log biner saat ini dari bidang Relay_Master_Log_File dan posisi file log dari bidang Exec_Master_Log_Pos.Simpan nilai-nilai ini untuk memulai replikasi dari instans server fleksibel Azure Database for MySQL Anda.
Untuk membuat cadangan data dari replika baca Amazon RDS for MySQL, eksekusi
mysqldump
dengan menjalankan perintah berikut:$ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
Catatan
Anda juga dapat menggunakan mydumper untuk mengambil cadangan data paralel dari database Amazon RDS for MySQL sumber Anda. Untuk informasi selengkapnya, lihat Memigrasikan database besar ke server fleksibel Azure Database for MySQL menggunakan mydumper/myloader.
Menautkan server sumber dan replika untuk memulai Replikasi Data-in
Untuk memulihkan database menggunakan pemulihan native mysql, jalankan perintah berikut:
$ mysql -h <target_server> -u <targetuser> -p < dumpname.sql
Catatan
Jika Anda menggunakan myloader, lihat Memigrasikan database besar ke server fleksibel Azure Database for MySQL menggunakan mydumper/myloader.
Masuk ke server Amazon RDS for MySQL sumber, dan siapkan pengguna replikasi. Kemudian, berikan hak istimewa yang diperlukan kepada pengguna ini.
Jika Anda menggunakan SSL, jalankan perintah berikut:
Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword'; Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL; Mysql> SHOW GRANTS FOR syncuser@'%';
Jika tidak menggunakan SSL, jalankan perintah berikut:
Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword'; Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%'; Mysql> SHOW GRANTS FOR syncuser@'%';
Prosedur tersimpan melakukan semua fungsi Replikasi Dalam Data. Untuk informasi tentang semua prosedur, lihat Prosedur tersimpan Replikasi dalam Data. Prosedur tersimpan dapat dijalankan di MySQL shell atau MySQL Workbench.
Untuk menautkan server sumber Amazon RDS for MySQL dan server target server fleksibel Azure Database for MySQL, masuk ke instans server fleksibel Azure Database for MySQL target. Atur server Amazon RDS for MySQL sebagai server sumber dengan menjalankan perintah berikut:
CALL mysql.az_replication_change_master('source_server','replication_user_name','replication_user_password',3306,'<master_bin_log_file>',master_bin_log_position,'<master_ssl_ca>');
Untuk memulai replikasi antara server Amazon RDS for MySQL sumber dan instans server fleksibel Azure Database for MySQL target, jalankan perintah berikut:
Mysql> CALL mysql.az_replication_start;
Untuk memeriksa status replikasi di server replika, jalankan perintah berikut:
Mysql> show slave status\G
Jika status parameter
Slave_IO_Running
danSlave_SQL_Running
adalah Ya, replikasi telah dimulai dan dalam status berjalan.Periksa nilai
Seconds_Behind_Master
parameter untuk menentukan seberapa tertunda server target.Jika nilainya 0, target telah memproses semua pembaruan dari server sumber. Jika nilainya selain 0, server target masih memproses pembaruan.
Memastikan{i> cutover
Untuk memastikan keberhasilan pemberhentian:
- Konfigurasikan login dan izin tingkat database yang sesuai di instans server fleksibel Azure Database for MySQL target.
- Mengonfigurasi sumber Amazon RDS untuk server MySQL.
- Pastikan bahwa instans server fleksibel Azure Database for MySQL target telah tertangkap dengan server sumber dan bahwa
Seconds_Behind_Master
nilainya adalah 0 darishow slave status
. - Panggil prosedur
mysql.az_replication_stop
tersimpan untuk menghentikan replikasi karena semua perubahan telah direplikasi ke instans server fleksibel Azure Database for MySQL target. - Panggil
mysql.az_replication_remove_master
untuk menghapus konfigurasi Replikasi dalam Data. - Alihkan klien dan aplikasi klien ke instans server fleksibel Azure Database for MySQL target.
Di poin ini, proses migrasi selesai. Aplikasi Anda terhubung ke server yang menjalankan server fleksibel Azure Database for MySQL.
Langkah berikutnya
- Untuk informasi selengkapnya tentang memigrasikan database ke server fleksibel Azure Database for MySQL, lihat Panduan Migrasi Database.
- Lihat video Memigrasikan aplikasi MySQL/PostgreSQL dengan mudah ke layanan yang dikelola Azure. Ini berisi demo yang menunjukkan cara memigrasikan aplikasi MySQL ke server fleksibel Azure Database for MySQL.