Penggunaan replikasi berbasis GTID - Layanan Basis Data Relasional Amazon

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

Penggunaan replikasi berbasis GTID

Konten berikut menjelaskan cara menggunakan pengidentifikasi transaksi global (GTID) dengan replikasi log biner (binlog) di antara Amazon RDS for MySQL DB instans.

Jika Anda menggunakan replikasi binlog dan tidak terbiasa dengan replikasi berbasis GTID dengan MySQL, lihat Replikasi dengan pengidentifikasi transaksi global dalam dokumentasi MySQL.

Replikasi berbasis GTID didukung untuk semua RDS for MySQL versi 5.7, dan RDS for MySQL versi 8.0.26, serta MySQL versi 8.0 yang lebih tinggi. Semua instans DB MySQL dalam konfigurasi replikasi harus memenuhi persyaratan ini.

Ikhtisar pengidentifikasi transaksi global (GTID)

Pengidentifikasi transaksi global (GTID) adalah pengidentifikasi unik yang dibuat untuk transaksi MySQL yang dilakukan. Anda dapat menggunakan GTID agar pemecahan masalah pada replikasi binlog bisa dilakukan dengan lebih mudah dan sederhana.

MySQL menggunakan dua jenis transaksi untuk replikasi binlog:

  • Transaksi GTID – Transaksi yang diidentifikasi oleh GTID.

  • Transaksi anonim – Transaksi yang tidak memiliki GTID.

Dalam konfigurasi replikasi, GTID bersifat unik di semua instans DB. GTID menyederhanakan konfigurasi replikasi karena saat Anda menggunakannya, Anda tidak harus merujuk ke posisi file log. GTID juga mempermudah pelacakan transaksi yang direplikasi dan menentukan apakah instans sumber dan replika konsisten.

Anda dapat menggunakan replikasi berbasis GTID untuk mereplikasi data dengan replika baca RDS for MySQL. Anda dapat mengonfigurasi replikasi berbasis GTID saat membuat replika baca baru, atau mengonversi replika baca yang ada untuk menggunakan replikasi berbasis GTID.

Anda juga dapat menggunakan replikasi berbasis GTID dalam konfigurasi replikasi tertunda dengan RDS for MySQL. Untuk informasi selengkapnya, lihat Mengonfigurasi replikasi tertunda dengan MySQL.

Parameter untuk replikasi berbasis GTID

Gunakan parameter berikut untuk mengonfigurasi replikasi berbasis GTID.

Parameter Nilai valid Deskripsi

gtid_mode

OFF, OFF_PERMISSIVE, ON_PERMISSIVE, ON

OFF menentukan bahwa transaksi baru adalah transaksi anonim (yaitu, tidak memiliki GTID), dan transaksi harus anonim agar dapat direplikasi.

OFF_PERMISSIVE menentukan bahwa transaksi baru adalah transaksi anonim, tetapi semua transaksi dapat direplikasi.

ON_PERMISSIVE menentukan bahwa transaksi baru adalah transaksi GTID, tetapi semua transaksi dapat direplikasi.

ON menentukan bahwa transaksi baru adalah transaksi GTID, dan transaksi harus berupa transaksi GTID untuk bisa direplikasi.

enforce_gtid_consistency

OFF, ON, WARN

OFF memperbolehkan transaksi melanggar konsistensi GTID.

ON mencegah transaksi melanggar konsistensi GTID.

WARN memperbolehkan transaksi melanggar konsistensi GTID, tetapi menghasilkan peringatan apabila terjadi pelanggaran.

catatan

Dalam AWS Management Console, gtid_mode parameter muncul sebagaigtid-mode.

Untuk replikasi berbasis GTID, gunakan pengaturan ini untuk grup parameter pada instans DB atau replika baca Anda:

  • ON dan ON_PERMISSIVE hanya berlaku pada replikasi keluar dari instans DB RDS. Kedua nilai ini menyebabkan instans DB RDS Anda menggunakan GTID untuk transaksi yang direplikasi. ON mengharuskan basis data target juga menggunakan replikasi berbasis GTID. ON_PERMISSIVE membuat replikasi berbasis GTID bersifat opsional di basis data target.

  • OFF_PERMISSIVE, jika diatur, artinya instans DB RDS Anda dapat menerima replikasi masuk dari basis data sumber. Instans tersebut dapat melakukan ini terlepas dari apakah basis data sumber tersebut menggunakan replikasi berbasis GTID atau tidak.

  • OFF, jika diatur, artinya instans DB RDS Anda hanya dapat menerima replikasi masuk dari basis data sumber yang tidak menggunakan replikasi berbasis GTID.

Untuk informasi selengkapnya tentang grup parameter, lihat Menggunakan grup parameter.

Pengonfigurasian replikasi berbasis GTID untuk replika baca baru

Jika replikasi berbasis GTID diaktifkan untuk instans DB RDS for MySQL, replikasi berbasis GTID dikonfigurasi secara otomatis untuk replika baca dari instans DB.

Untuk mengaktifkan replikasi berbasis GTID untuk replika baca baru
  1. Pastikan grup parameter yang terkait dengan instans DB memiliki pengaturan parameter sebagai berikut:

    • gtid_modeON atau ON_PERMISSIVE

    • enforce_gtid_consistencyON

    Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat Menggunakan grup parameter.

  2. Jika Anda mengubah grup parameter dari instans DB, boot ulang instans DB tersebut. Untuk informasi selengkapnya tentang cara melakukannya, lihat Mem-boot ulang instans DB.

  3. Ciptakan satu replika baca atau lebih dari instans DB. Untuk informasi selengkapnya tentang cara melakukannya, lihat Membuat replika baca.

Amazon RDS mencoba membuat replikasi berbasis GTID antara instans DB MySQL dan replika baca menggunakan MASTER_AUTO_POSITION. Jika upaya tersebut gagal, Amazon RDS menggunakan posisi file log untuk replikasi dengan replika baca. Untuk informasi selengkapnya tentang MASTER_AUTO_POSITION, lihat GTID auto-positioning dalam dokumentasi MySQL.

Pengonfigurasian replikasi berbasis GTID untuk replika baca yang sudah ada

Untuk instans DB MySQL yang sudah ada dengan replika baca yang tidak menggunakan replikasi berbasis GTID, Anda dapat mengonfigurasi replikasi berbasis GTID antara instans DB dan replika baca.

Untuk mengaktifkan replikasi berbasis GTID untuk replika baca yang sudah ada
  1. Jika instans DB atau replika baca apa pun menggunakan RDS for MySQL versi 8.0 yang lebih rendah dari versi 8.0.26, tingkatkan instans DB atau replika baca ke 8.0.26 atau MySQL versi 8.0 yang lebih tinggi. Semua versi RDS for MySQL 5.7 mendukung replikasi berbasis GTID.

    Untuk informasi selengkapnya, lihat Meng-upgrade mesin DB MySQL.

  2. (Opsional) Atur ulang parameter GTID dan uji perilaku instans DB dan replika baca:

    1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki enforce_gtid_consistency yang diatur ke WARN.

      Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat Menggunakan grup parameter.

    2. Jika Anda mengubah grup parameter dari instans DB, boot ulang instans DB tersebut. Jika Anda mengubah grup parameter untuk sebuah replika baca, boot ulang replika baca tersebut.

      Untuk informasi selengkapnya, lihat Mem-boot ulang instans DB.

    3. Jalankan instans DB dan replika baca Anda dengan beban kerja normal Anda dan monitor file log.

      Jika Anda melihat peringatan tentang transaksi yang tidak kompatibel dengan GTID, sesuaikan agar aplikasi Anda hanya menggunakan fitur yang kompatibel dengan GTID. Pastikan instans DB tidak menghasilkan peringatan apa pun tentang transaksi yang tidak kompatibel dengan GTID sebelum melanjutkan ke langkah berikutnya.

  3. Atur ulang parameter GTID untuk replikasi berbasis GTID yang memperbolehkan transaksi anonim hingga replika baca telah memproses semuanya.

    1. Pastikan grup parameter yang terkait dengan instans DB dan setiap replika baca memiliki pengaturan parameter sebagai berikut:

      • gtid_modeON_PERMISSIVE

      • enforce_gtid_consistencyON

    2. Jika Anda mengubah grup parameter dari instans DB, boot ulang instans DB tersebut. Jika Anda mengubah grup parameter untuk sebuah replika baca, boot ulang replika baca tersebut.

  4. Tunggu hingga semua transaksi anonim Anda direplikasi. Untuk memeriksa apakah semua transaksi tersebut sudah direplikasi, lakukan hal berikut:

    1. Jalankan pernyataan berikut pada instans DB sumber Anda.

      SHOW MASTER STATUS;

      Perhatikan nilai di kolom File dan Position.

    2. Pada setiap replika baca, gunakan informasi file dan posisi dari instans sumber dalam langkah sebelumnya untuk menjalankan kueri berikut.

      SELECT MASTER_POS_WAIT('file', position);

      Misalnya, jika nama file-nya adalah mysql-bin-changelog.000031 dan posisinya adalah 107, jalankan pernyataan berikut.

      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);

      Jika replika baca melewati posisi yang ditentukan, kueri akan segera ditampilkan. Jika tidak, fungsi tersebut akan menunggu. Lanjutkan ke langkah berikutnya jika kueri menampilkan semua replika baca.

  5. Atur ulang parameter GTID untuk replikasi berbasis GTID saja.

    1. Pastikan grup parameter yang terkait dengan instans DB dan setiap replika baca memiliki pengaturan parameter sebagai berikut:

      • gtid_modeON

      • enforce_gtid_consistencyON

    2. Boot ulang instans DB dan setiap replika baca.

  6. Pada setiap replika baca, jalankan prosedur berikut.

    CALL mysql.rds_set_master_auto_position(1);

Menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca

Anda dapat menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca.

Untuk menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca
  1. Pada setiap replika baca, jalankan prosedur berikut:

    CALL mysql.rds_set_master_auto_position(0);
  2. Atur ulang gtid_mode ke ON_PERMISSIVE.

    1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki gtid_mode yang diatur ke ON_PERMISSIVE.

      Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat Menggunakan grup parameter.

    2. Boot ulang instans DB MySQL dan setiap replika baca. Untuk informasi selengkapnya tentang mem-boot ulang, lihat Mem-boot ulang instans DB.

  3. Atur ulang gtid_mode ke OFF_PERMISSIVE.

    1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki gtid_mode yang diatur ke OFF_PERMISSIVE.

    2. Boot ulang instans DB MySQL dan setiap replika baca.

  4. Tunggu hingga semua transaksi GTID diterapkan pada semua replika baca. Untuk memeriksa apakah ini diterapkan, lakukan langkah-langkah berikut:

    1. Pada instans DB MySQL , jalankan perintah SHOW MASTER STATUS.

      Output Anda harus mirip dengan output berikut.

      File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------

      Perhatikan file dan posisi dalam output Anda.

    2. Pada setiap replika baca, gunakan file dan informasi posisi dari contoh sumbernya pada langkah sebelumnya untuk menjalankan kueri berikut:

      Untuk MySQL 8.0.26 dan versi MySQL 8.0 yang lebih tinggi

      SELECT SOURCE_POS_WAIT('file', position);

      Untuk MySQL 5.7 versi

      SELECT MASTER_POS_WAIT('file', position);

      Misalnya, jika nama file mysql-bin-changelog.000031 dan posisinya107, jalankan pernyataan berikut:

      Untuk MySQL 8.0.26 dan versi MySQL 8.0 yang lebih tinggi

      SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);

      Untuk MySQL 5.7 versi

      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
  5. Setel ulang parameter GTID untuk menonaktifkan replikasi berbasis GTID.

    1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki pengaturan parameter sebagai berikut:

      • gtid_modeOFF

      • enforce_gtid_consistencyOFF

    2. Boot ulang instans DB MySQL dan setiap replika baca.