Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menyiapkan Replikasi data ke Azure Database for MySQL - Server Fleksibel di Azure Database for MySQL Flexible Server dengan mengonfigurasi server sumber dan replika. Artikel ini menganggap Anda sudah berpengalaman dengan server dan database 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.
Untuk membuat replika di instans Azure Database for MySQL Flexible Server, Replikasi data ke Azure Database for MySQL - Flexible Server menyinkronkan data dari server MySQL sumber lokal, di komputer virtual (VM), atau di layanan database cloud. Replikasi data-in dapat dikonfigurasi menggunakan replikasi berbasis posisi file log biner (binlog) ATAU replikasi berbasis GTID. Untuk mempelajari selengkapnya tentang replikasi binlog, lihat Replikasi MySQL.
Tinjau batasan dan persyaratan replikasi Data-in sebelum melakukan langkah-langkah dalam artikel ini.
Membuat instans Azure Database for MySQL Flexible Server untuk digunakan sebagai replika
Buat instance baru dari Azure Database for MySQL Flexible Server (misalnya,
replica.mysql.database.azure.com). Lihat Panduan Cepat: Membuat instans Azure Database for MySQL dengan portal Azure untuk membuat server. Server ini adalah server "replika" untuk Replikasi Data-in.Buat akun pengguna yang sama dan hak istimewa terkait.
Akun pengguna tidak direplikasi dari server sumber ke server replika. Jika Anda berencana memberi pengguna akses ke server replika, Anda perlu membuat semua akun dan hak istimewa yang sesuai secara manual pada instans Azure Database for MySQL Flexible Server yang baru dibuat ini.
Mengonfigurasikan server MySQL sumber
Langkah-langkah berikut ini mempersiapkan dan mengonfigurasikan server MySQL yang dihosting secara lokal, di komputer virtual, atau layanan database yang dihosting oleh penyedia cloud lain untuk Replikasi Data-in. Server ini adalah "sumber" untuk replikasi data masuk.
Tinjau persyaratan server sumber sebelum melanjutkan.
Persyaratan Jaringan
Pastikan server sumber mengizinkan lalu lintas masuk dan keluar pada port 3306, dan yang memiliki alamat IP publik, DNS dapat diakses secara publik, atau yang memiliki nama domain yang sepenuhnya memenuhi syarat (FQDN).
Jika akses privat (Integrasi VNet) sedang digunakan, pastikan Anda memiliki konektivitas antara server Sumber dan Vnet tempat server replika dihosting.
Pastikan kami menyediakan konektivitas situs-ke-situs ke server sumber lokal Anda dengan menggunakan ExpressRoute atau VPN. Untuk mengetahui informasi selengkapnya tentang cara membuat jaringan virtual, lihat Dokumentasi Jaringan Virtual, terutama artikel mulai cepat yang disertai detail langkah demi langkah.
Jika akses privat (Integrasi VNet) digunakan di server replika dan sumber Anda adalah Azure VM, pastikan bahwa konektivitas VNet ke VNet dibuat. Peering VNet-VNet terdapat dukungan. Anda juga dapat menggunakan metode konektivitas lain untuk berkomunikasi antara VNet di wilayah yang berbeda seperti VNet ke VNet Connection. Untuk informasi selengkapnya, lihat VPN gateway VNet-ke-VNet
Pastikan aturan Grup Keamanan Jaringan pada jaringan virtual Anda tidak memblokir port keluar 3306 (Juga masuk jika MySQL berjalan di Azure VM). Untuk mengetahui detail selengkapnya tentang pemfilteran lalu lintas NSG jaringan virtual, lihat artikel Memfilter lalu lintas jaringan dengan kelompok keamanan jaringan.
Mengonfigurasi aturan firewall server sumber Anda untuk memperbolehkan alamat IP server replika.
Ikuti langkah-langkah yang sesuai tergantung pada apakah Anda ingin menggunakan posisi berbasis bin-log atau replikasi data-dalam berbasis GTID.
Periksa apakah pengelogan biner telah diaktifkan pada sumber dengan menjalankan perintah berikut:
SHOW VARIABLES LIKE 'log_bin';Jika variabel
log_bindikembalikan dengan nilai "ON", pengelogan biner diaktifkan di server Anda.Jika
log_bindikembalikan dengan nilai "NONAKTIF" dan server sumber Anda berjalan secara lokal atau di komputer virtual tempat Anda dapat mengakses file konfigurasi (my.cnf), Anda dapat mengikuti langkah-langkah berikut:Temukan file konfigurasi MySQL (my.cnf) di server sumber. Misalnya: /etc/my.cnf
Buka file konfigurasi untuk mengeditnya dan menemukan bagian mysqld dalam file.
Di bagian mysqld, tambahkan baris berikut:
log-bin=mysql-bin.logMulai ulang layanan MySQL di server sumber (atau Mulai Ulang) agar perubahan diterapkan.
Setelah server dimulai ulang, verifikasikan bahwa pengelogan biner diaktifkan dengan menjalankan kueri yang sama seperti sebelumnya:
SHOW VARIABLES LIKE 'log_bin';
Konfigurasikan pengaturan server sumber.
Replikasi Data-in mengharuskan agar parameter
lower_case_table_namestetap konsisten di antara server sumber dan server replika. Parameter ini adalah 1 secara default di Azure Database for MySQL Flexible Server.SET GLOBAL lower_case_table_names = 1;Buat peran replikasi baru dan siapkan izin.
Buat akun pengguna pada server sumber yang dikonfigurasi dengan hak istimewa replikasi. Tindakan ini dapat dilakukan melalui perintah SQL atau alat seperti MySQL Workbench. Pertimbangkan apakah Anda berencana untuk mereplikasi dengan SSL, karena ini perlu ditentukan saat membuat pengguna. Lihat dokumentasi MySQL untuk memahami cara menambahkan akun pengguna di server sumber.
Dalam perintah berikut, peran replikasi baru yang dibuat dapat mengakses sumber dari komputer apa pun, bukan hanya komputer yang menjadi host sumber itu sendiri. Hal ini dilakukan dengan menentukan "syncuser@'%'" dalam perintah buat pengguna. Lihat dokumentasi MySQL untuk mempelajari selengkapnya tentang menentukan nama akun.
Replikasi dengan SSL
Untuk meminta SSL bagi semua koneksi pengguna, gunakan perintah berikut untuk membuat pengguna:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword' REQUIRE SSL; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';Replikasi tanpa SSL
Jika SSL tidak diperlukan untuk semua koneksi, gunakan perintah berikut untuk membuat pengguna:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';Atur server sumber ke mode baca-saja.
Sebelum mulai mengekspor database, server harus ditempatkan dalam mode hanya baca. Sementara dalam mode baca-saja, sumber tidak akan dapat memproses transaksi tulis apa pun. Evaluasi dampak terhadap bisnis Anda dan jadwalkan periode baca-saja pada waktu di luar jam sibuk jika perlu.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;Dapatkan nama dan offset file log biner.
Jalankan perintah
show master statusuntuk menentukan nama dan offset file log biner saat ini.show master status;Hasilnya tampak mirip dengan di bawah ini. Pastikan mencatat nama file biner untuk digunakan di langkah-langkah selanjutnya.
Mencadangkan dan memulihkan server sumber
Tentukan database dan tabel mana yang ingin direplikasikan ke Azure Database for MySQL Flexible Server dan lakukan rekam cadang dari server sumber.
Anda dapat menggunakan mysqldump untuk mengekspor basis data dari server utama Anda. Untuk detailnya, lihat Rekam cadang & Pulihkan. Tidak perlu meng-ekspor pustaka MySQL dan perpustakaan uji.
Atur server sumber ke mode baca/tulis.
Setelah database dicadangkan, ubah server MySQL sumber kembali ke mode baca/tulis.
SET GLOBAL read_only = OFF; UNLOCK TABLES;Catatan
Sebelum server diatur kembali ke mode baca/tulis, Anda dapat mengambil informasi GTID dengan memanfaatkan variabel global GTID_EXECUTED. Ini akan digunakan pada tahap selanjutnya untuk mengatur GTID pada server replika.
Pulihkan file cadangan ke server baru.
Pulihkan file cadangan ke server yang dibuat di Azure Database for MySQL Flexible Server. Lihat Pencadangan & Pemulihan untuk cara memulihkan file cadangan ke server MySQL. Jika file cadangan cukup besar, unggah ke komputer virtual di Azure dalam wilayah yang sama dengan server replika Anda. Pulihkan ke instans Azure Database for MySQL Flexible Server dari komputer virtual.
Catatan
Jika Anda ingin menghindari mengatur database ke hanya-baca saat menyalin dan memulihkan, Anda dapat menggunakan mydumper/myloader.
Mengatur GTID di Server Replika
Lewati langkah ini jika menggunakan replikasi berbasis posisi log biner
Informasi GTID dari file cadangan yang diambil dari sumber diperlukan untuk mengatur ulang riwayat GTID server target (replika).
Gunakan informasi GTID ini dari sumber untuk menjalankan reset GTID pada server replika menggunakan perintah CLI berikut:
az mysql flexible-server gtid reset --resource-group <resource group> --server-name <replica server name> --gtid-set <gtid set from the source server> --subscription <subscription id>
Untuk informasi lebih lanjut, lihat GTID Reset.
Catatan
Reset GTID tidak dapat dilakukan pada server yang diaktifkan cadangan Geo-redundansi. Nonaktifkan Geo-redundansi untuk melakukan reset GTID pada server. Anda dapat mengaktifkan opsi Geo-redundansi lagi setelah reset GTID. Tindakan reset GTID membatalkan semua cadangan yang tersedia dan oleh karena itu, setelah Geo-redundansi diaktifkan lagi, mungkin perlu waktu sehari sebelum pemulihan geografis dapat dilakukan di server
Menautkan server sumber dan replika untuk memulai Replikasi Data-in
Atur server sumber.
Semua fungsi-fungsi replikasi data masuk dilaksanakan oleh prosedur yang tersimpan. Anda dapat menemukan semua prosedur di Prosedur Tersimpan Replikasi Data-in. Prosedur tersimpan dapat dijalankan di shell MySQL atau MySQL Workbench.
Untuk menautkan dua server dan memulai replikasi, masuk ke server replika target di layanan Azure Database for MySQL dan atur instans eksternal sebagai server sumber. Ini dilakukan dengan menggunakan prosedur tersimpan
mysql.az_replication_change_masterataumysql.az_replication_change_master_with_gtiddi server Azure Database for MySQL.CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', <master_port>,'<master_ssl_ca>');- master_host: nama host server sumber
- master_user: nama pengguna untuk server sumber
- master_password: kata sandi untuk server sumber
- master_port: nomor port tempat server sumber mendengarkan koneksi. (3306 adalah port default tempat MySQL mendengarkan)
- master_log_file: nama file log biner dari menjalankan
show master status - master_log_pos: posisi log biner dari proses berjalan
show master status - master_ssl_ca: konteks sertifikat CA. Jika tidak menggunakan SSL, gunakan string kosong.
Sebaiknya teruskan parameter ini dalam bentuk variabel. Untuk informasi selengkapnya, kunjungi contoh berikut.
Catatan
- Jika server sumber dihosting di Azure VM, atur "Izinkan akses ke layanan Azure" ke "ON" untuk memungkinkan server sumber dan replika berkomunikasi satu sama lain. Pengaturan ini dapat diubah dari opsi Keamanan koneksi. Untuk informasi selengkapnya, lihat Mengelola aturan firewall untuk Azure Database for MySQL - Server Fleksibel menggunakan portal Azure.
- Jika Anda menggunakan mydumper/myloader untuk melakukan pencadangan database, Anda bisa mendapatkan master_log_file dan master_log_pos dari file /backup/metadata.
Contoh
Replikasi dengan SSL
Variabel
@certdibuat dengan menjalankan perintah MySQL berikut:SET @cert = '-----BEGIN CERTIFICATE----- PLACE YOUR PUBLIC KEY CERTIFICATE'`S CONTEXT HERE -----END CERTIFICATE-----'Replikasi dengan SSL diatur antara server sumber yang dihosting di domain "companya.com" dan server replika yang dihosting di Azure Database for MySQL Flexible Server. Prosedur tersimpan ini dijalankan pada replika.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @cert);CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, @cert);Replikasi tanpa SSL
Replikasi tanpa SSL diatur antara server sumber yang dihosting di domain "companya.com" dan server replika yang dihosting di Azure Database for MySQL Flexible Server. Prosedur tersimpan ini dijalankan pada replika.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, '');Mulai replikasi.
Panggil prosedur tersimpan
mysql.az_replication_startuntuk memulai replikasi.CALL mysql.az_replication_start;Periksa status replikasi.
Panggil perintah
show slave statuspada server replika untuk melihat status replikasi.show slave status;Untuk mengetahui status replikasi yang benar, lihat metrik replikasi - Status Replika IO dan Status Replika SQL di bawah halaman pemantauan.
Seconds_Behind_MasterJika "0", replikasi bekerja dengan baik.Seconds_Behind_Mastermenunjukkan seberapa terlambat replikanya. Jika nilainya bukan "0", artinya replika sedang memproses pembaruan.
Prosedur tersimpan lain yang berguna untuk operasi Replikasi Data-in
Hentikan replikasi
Untuk menghentikan replikasi antara sumber dan server replika, gunakan prosedur tersimpan berikut:
CALL mysql.az_replication_stop;
Hapus hubungan replikasi
Untuk menghapus hubungan antara sumber dan server replika, gunakan prosedur tersimpan berikut ini:
CALL mysql.az_replication_remove_master;
Lewati kesalahan replikasi
Untuk melompati kesalahan replikasi dan memperbolehkan replikasi untuk dilanjutkan, gunakan prosedur tersimpan berikut ini:
CALL mysql.az_replication_skip_counter;
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos][LIMIT [offset,] row_count]