Mengonfigurasi Replikasi data-in di Azure Database for MariaDB

Penting

Azure Database for MariaDB berada di jalur penghentian. Kami sangat menyarankan Anda bermigrasi ke Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke Azure Database for MySQL, lihat Apa yang terjadi pada Azure Database for MariaDB?.

Artikel ini menjelaskan cara menyiapkan Replikasi Data-in di Azure Database for MariaDB dengan mengonfigurasi server sumber dan replika. Artikel ini menganggap Anda sudah berpengalaman dengan database dan server MariaDB.

Untuk membuat replika di layanan Azure Database for MariaDB, Replikasi Data-in menyinkronkan data dari server MariaDB sumber lokal, di komputer virtual (VM), atau di layanan database cloud. Replikasi dalam data didasarkan pada replikasi berbasis posisi log biner (binlog) native untuk MariaDB. Untuk mempelajari selengkapnya tentang replikasi binlog, lihat ringkasan replikasi binlog.

Tinjau batasan dan persyaratan Replikasi data-in sebelum melakukan langkah-langkah dalam artikel ini.

Catatan

Jika server sumber Anda versi 10.2 atau yang lebih baru, kami sarankan Anda menyiapkan Replikasi Data-in dengan menggunakan ID Transaksi Global.

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.

Buat server MariaDB untuk digunakan sebagai replika

  1. Buat server Azure Database for MariaDB baru (misalnya, replica.mariadb.database.azure.com). Server ini adalah server replika di Replikasi Data-in.

    Untuk mempelajari tentang pembuatan server, lihat Membuat server Azure Database for MariaDB dengan menggunakan portal Azure.

    Penting

    Anda harus membuat server Azure Database for MariaDB di Tujuan Umum atau tingkat harga Memori Dioptimalkan.

  2. Buat akun pengguna yang sama dan hak istimewa terkait.

    Akun pengguna tidak direplikasi dari server sumber ke server replika. Untuk menyediakan akses pengguna ke server replika, Anda harus membuat semua akun dan hak istimewa terkait secara manual di server Azure Database for MariaDB yang baru dibuat.

  3. Tambahkan alamat IP server sumber ke aturan firewall replika.

    Perbarui aturan firewall menggunakan portal Microsoft Azure atau Azure CLI.

Konfigurasi server sumber

Langkah-langkah berikut ini mempersiapkan dan mengonfigurasi server MariaDB yang dihosting secara lokal di VM, atau di layanan database cloud untuk Replikasi Data-in. Server MariaDB adalah sumber di Replikasi Data-in.

  1. Tinjau persyaratan server sumber sebelum melanjutkan.

  2. Pastikan server sumber mengizinkan lalu lintas masuk dan keluar pada port 3306, dan server sumber memiliki alamat IP publik, DNS dapat diakses secara publik, atau memiliki nama domain yang sepenuhnya memenuhi syarat (FQDN).

    Uji konektivitas ke server sumber dengan mencoba menyambungkan dari alat seperti baris perintah MySQL yang dihosting di komputer lain atau dari Azure Cloud Shell yang tersedia di portal Azure.

    Jika organisasi Anda memiliki kebijakan keamanan yang ketat dan tidak akan mengizinkan semua alamat IP di server sumber mengaktifkan komunikasi dari Azure ke server sumber, Anda mungkin dapat menggunakan perintah di bawah ini untuk menentukan alamat IP server Azure Database for MariaDB.

    1. Masuk ke Azure Database for MariaDB menggunakan alat seperti baris perintah MySQL.

    2. Jalankan kueri di bawah ini.

      SELECT @@global.redirect_server_host;
      

      Di bawah ini adalah beberapa contoh output:

      +-----------------------------------------------------------+
      | @@global.redirect_server_host                             |
      +-----------------------------------------------------------+
      | e299ae56f000.tr1830.westus1-a.worker.database.windows.net |
       +-----------------------------------------------------------+
      
    3. Keluar dari baris perintah MySQL.

    4. Jalankan berikut ini di utilitas ping untuk mendapatkan alamat IP.

      ping <output of step 2b>
      

      Misalnya:

      C:\Users\testuser> ping e299ae56f000.tr1830.westus1-a.worker.database.windows.net
      Pinging tr1830.westus1-a.worker.database.windows.net (**11.11.111.111**) 56(84) bytes of data.
      
    5. Konfigurasikan aturan firewall server sumber untuk menyertakan alamat IP yang dikeluarkan pada langkah sebelumnya di port 3306.

    Catatan

    Alamat IP ini mungkin berubah karena operasi pemeliharaan/penyebaran. Metode konektivitas ini hanya untuk pelanggan yang tidak dapat mengizinkan semua alamat IP pada port 3306.

  3. Aktifkan pengelogan biner.

    Untuk melihat apakah pencatatan biner diaktifkan di utama, masukkan perintah berikut:

    SHOW VARIABLES LIKE 'log_bin';
    

    Jika variabel log_bin mengembalikan ON nilai, pencatatan biner diaktifkan di server Anda.

    Jika log_bin mengembalikan OFF nilai, edit file my.cnf sehingga log_bin=ON mengaktifkan pencatatan biner. Mulai ulang server agar perubahan diterapkan.

  4. Konfigurasikan pengaturan server sumber.

    Replikasi Data-in mengharuskan parameter lower_case_table_names konsisten antara server sumber dan replika. Parameter lower_case_table_names diatur secara 1 default di Azure Database for MariaDB.

    SET GLOBAL lower_case_table_names = 1;
    
  5. Buat peran replikasi baru dan siapkan izin.

    Buat akun pengguna pada server sumber yang dikonfigurasi dengan hak istimewa replikasi. Anda dapat membuat akun dengan menggunakan perintah SQL atau MySQL Workbench. Jika Anda berencana untuk mereplikasi dengan SSL, Anda harus menentukan replikasi saat Anda membuat akun pengguna.

    Untuk mempelajari cara menambahkan akun pengguna di server sumber Anda, lihat dokumentasi MariaDB.

    Dalam perintah berikut, peran replikasi baru yang dibuat dapat mengakses sumber dari komputer manapun, bukan hanya komputer yang menjadi host sumber itu sendiri. Untuk akses ini, tentukan syncuser@'%' dalam perintah untuk membuat pengguna.

    Untuk mempelajari selengkapnya tentang dokumentasi MariaDB, lihat menentukan nama akun.

    Perintah SQL

    • Replikasi dengan SSL

      Untuk mengharuskan SSL bagi semua koneksi pengguna, masukkan perintah berikut untuk membuat pengguna:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
      
    • Replikasi tanpa SSL

      Jika SSL tidak diperlukan untuk semua koneksi, masukkan perintah berikut untuk membuat pengguna:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
      

    MySQL Workbench

    Untuk membuat peran replikasi di MySQL Workbench, di panel Manajemen, pilih Pengguna dan Hak Istimewa. Lalu pilih Tambahkan Akun.

    Users and Privileges

    Masukkan nama pengguna di bidang Nama Masuk.

    Sync user

    Pilih panel Peran Administratif, lalu di daftar Hak Istimewa Global, pilih Budak Replikasi. Pilih Terapkan untuk membuat peran replikasi.

    Replication Slave

  6. Atur server sumber ke mode baca-saja.

    Sebelum Anda mencadangkan database, server harus ditempatkan dalam mode baca-saja. Sementara dalam mode baca-saja, sumber tidak akan dapat memproses transaksi tulis apa pun. Untuk membantu menghindari dampak bisnis, jadwalkan jendela baca-saja selama waktu puncak pencadangan.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Dapatkan nama file log biner saat ini dan offset.

    Untuk menentukan nama dan offset file log biner saat ini, jalankan perintah show master status.

    show master status;
    

    Hasilnya akan mirip dengan tabel di bawah ini:

    Master Status Results

    Perhatikan nama file biner, karena akan digunakan di langkah-langkah selanjutnya.

  8. Dapatkan posisi GTID (opsional, diperlukan untuk replikasi dengan GTID).

    Jalankan fungsi BINLOG_GTID_POS untuk mendapatkan posisi GTID untuk nama dan offset file binlog yang sesuai.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

Mencadangkan dan memulihkan server sumber

  1. Cadangkan semua database dari server sumber.

    Gunakan mysqldump untuk mencadangkan semua database dari server sumber. Tidak perlu mencadangkan pustaka MySQL dan pustaka uji.

    Untuk informasi selengkapnya, lihat Mencadangkan dan memulihkan.

  2. Atur server sumber ke mode baca/tulis.

    Setelah database dicadangkan, ubah server MariaDB sumber kembali ke mode baca/tulis.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Pulihkan file cadangan ke server baru.

    Pulihkan file cadangan ke server yang dibuat di layanan Azure Database for MariaDB. Lihat Pencadangan & Pemulihan tentang cara memulihkan file cadangan ke server MariaDB.

    Jika file cadangan cukup besar, unggah ke VM di Azure dalam wilayah yang sama dengan server replika Anda. Pulihkan ke server Azure Database for MariaDB dari VM.

  1. Atur server sumber.

    Semua fungsi Replikasi Data-in dilakukan dengan prosedur tersimpan. Anda dapat menemukan semua prosedur di Prosedur Tersimpan Replikasi Data-in. Prosedur tersimpan dapat dijalankan di MySQL shell atau MySQL Workbench.

    Untuk menautkan dua server dan memulai replikasi, masuk ke server replika target di layanan Azure DB for MariaDB. Selanjutnya, tetapkan instans eksternal sebagai server sumber dengan menggunakan prosedur disimpan mysql.az_replication_change_master atau mysql.az_replication_change_master_with_gtid di server Azure DB for MariaDB.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    or

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: nama host server sumber
    • master_user: nama pengguna untuk server sumber
    • master_password: kata sandi untuk server sumber
    • master_log_file: nama file log biner dari menjalankan show master status
    • master_log_pos: posisi log biner dari menjalankan show master status
    • master_log_pos: posisi GTID dari menjalankan select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: konteks sertifikat CA. Jika Anda tidak menggunakan SSL, lewati dengan string kosong.*

    *Kami sarankan untuk meneruskan master_ssl_ca parameter sebagai variabel. Untuk informasi selengkapnya, lihat contoh berikut ini.

    Contoh

    • Replikasi dengan SSL

      Buat variabel @cert dengan menjalankan perintah berikut:

      SET @cert = '-----BEGIN CERTIFICATE-----
      PLACE YOUR PUBLIC KEY CERTIFICATE\'S CONTEXT HERE
      -----END CERTIFICATE-----'
      

      Replikasi dengan SSL disiapkan di antara server sumber yang dihosting di domain companya.com dan server replika yang dihosting di Azure Database for MariaDB. Prosedur tersimpan ini dijalankan pada replika.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • Replikasi tanpa SSL

      Replikasi tanpa SSL disiapkan di antara server sumber yang dihosting di domain companya.com dan server replika yang dihosting di Azure Database for MariaDB. Prosedur tersimpan ini dijalankan pada replika.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. Mulai replikasi.

    Panggil prosedur tersimpan mysql.az_replication_start untuk memulai replikasi.

    CALL mysql.az_replication_start;
    
  3. Periksa status replikasi.

    Panggil perintah show slave status pada server replika untuk melihat status replikasi.

    show slave status;
    

    Jika Slave_IO_Running dan Slave_SQL_Running berada di yes, dan nilainya Seconds_Behind_Master adalah 0, replikasi berfungsi. Seconds_Behind_Master menunjukkan seberapa lambat replikanya. Jika nilainya bukan 0, artinya replika sedang memproses pembaruan.

  4. Perbarui variabel server yang sesuai untuk membuat replikasi data-in lebih aman (hanya diperlukan untuk replikasi tanpa GTID).

    Karena keterbatasan replikasi asli di MariaDB, Anda harus mengatur sync_master_info variabel dan sync_relay_log_info pada replikasi tanpa skenario GTID.

    Periksa variabel sync_master_info dan sync_relay_log_info server replika Anda untuk memastikan replikasi data-in stabil, dan atur variabel ke 1.

Prosedur tersimpan lainnya

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 server sumber dan replika, gunakan prosedur tersimpan berikut ini:

CALL mysql.az_replication_remove_master;

Lewati kesalahan replikasi

Untuk melewati kesalahan replikasi dan mengizinkan replikasi, gunakan prosedur tersimpan berikut ini:

CALL mysql.az_replication_skip_counter;

Langkah berikutnya

Pelajari selengkapnya tentang Replikasi Data-in untuk Azure Database for MariaDB.