View a markdown version of this page

Mereplikasi transaksi menggunakan GTIDs - Amazon Aurora

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

Mereplikasi transaksi menggunakan GTIDs

Prosedur tersimpan berikut mengontrol bagaimana transaksi direplikasi menggunakan pengidentifikasi transaksi global (GTIDs) dengan Aurora MySQL. Untuk mempelajari cara menggunakan replikasi berdasarkan GTIDs Aurora MySQL, lihat. Menggunakan replikasi GTID berbasis

mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL versi 3)

Mengonfigurasi opsi ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS dari pernyataan CHANGE REPLICATION SOURCE TO. Hal ini akan membuat saluran replikasi menetapkan GTID ke transaksi replikasi yang tidak memilikinya. Dengan begitu, Anda dapat melakukan replikasi log biner dari sumber yang tidak menggunakan replikasi berbasis GTID ke replika yang menggunakan replikasi tersebut. Untuk informasi selengkapnya, lihat MENGUBAH SUMBER REPLIKASI MENJADI Pernyataan dan Replikasi Dari Sumber Tanpa GTIDs ke Replika Dengan GTIDs di Manual Referensi MySQL.

Sintaks

CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);

Parameter

gtid_option

Nilai string. Nilai yang diizinkan adalah OFF, LOCAL, atau UUID yang ditentukan.

Catatan penggunaan

Prosedur ini memiliki efek yang sama seperti mengeluarkan pernyataan CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option di komunitas MySQL.

GTID harus diubah ON untuk disetel gtid_option ke LOCAL atau UUID tertentu.

Defaultnya adalah OFF, yang artinya fitur tersebut tidak digunakan.

LOCAL menetapkan GTID termasuk UUID replika itu sendiri (pengaturan server_uuid).

Meneruskan parameter yang merupakan UUID akan menetapkan GTID yang menyertakan UUID tertentu, seperti pengaturan server_uuid untuk server sumber replikasi.

Contoh

Untuk menonaktifkan fitur ini:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)

Untuk menggunakan UUID replika itu sendiri:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)

Untuk menggunakan UUID yang ditentukan:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)

mysql.rds_gtid_purged (Aurora MySQL versi 3)

Menetapkan nilai global variabel sistem gtid_purged ke set pengidentifikasi transaksi global (GTID) yang diberikan. Variabel gtid_purged sistem adalah set GTID yang terdiri GTIDs dari semua transaksi yang telah dilakukan di server, tetapi tidak ada dalam file log biner apa pun di server.

Untuk memungkinkan kompatibilitas dengan MySQL 8.0, ada dua cara untuk mengatur nilai gtid_purged:

  • Ganti nilai gtid_purged dengan set GTID yang Anda tentukan.

  • Tambahkan set GTID yang Anda tentukan ke set GTID yang sudah ada di gtid_purged.

Sintaksis

Untuk mengganti nilai gtid_purged dengan set GTID yang Anda tentukan:

CALL mysql.rds_gtid_purged (gtid_set);

Untuk menambahkan nilai gtid_purged ke set GTID yang Anda tentukan:

CALL mysql.rds_gtid_purged (+gtid_set);

Parameter

gtid_set

Nilai gtid_set harus menjadi superset dari nilai saat inigtid_purged, dan tidak dapat berpotongan dengan. gtid_subtract(gtid_executed,gtid_purged) Artinya, set GTID baru harus menyertakan apa pun GTIDs yang sudah adagtid_purged, dan tidak dapat menyertakan gtid_executed yang belum dibersihkan. GTIDs gtid_setParameter juga tidak dapat menyertakan apa pun GTIDs yang ada di gtid_owned set global, GTIDs untuk transaksi yang saat ini sedang diproses di server.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_gtid_purged.

Prosedur ini didukung untuk Aurora MySQL versi 3.04 dan yang lebih tinggi.

Contoh

Contoh berikut menetapkan GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 ke variabel global gtid_purged.

CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_skip_transaction_with_gtid (Aurora MySQL versi 2 dan 3)

Melewati replikasi transaksi dengan pengenal transaksi global (GTID) yang ditentukan pada instans primer Aurora.

Anda dapat menggunakan prosedur ini untuk pemulihan bencana ketika transaksi GTID tertentu diketahui menyebabkan masalah. Gunakan prosedur tersimpan ini untuk melewati transaksi bermasalah. Contoh transaksi bermasalah mencakup transaksi yang menonaktifkan replikasi, menghapus data penting, atau menyebabkan instans DB menjadi tidak tersedia.

Sintaksis

CALL mysql.rds_skip_transaction_with_gtid ( gtid_to_skip );

Parameter

gtid_to_skip

GTID dari transaksi replikasi yang akan dilewati.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_skip_transaction_with_gtid.

Prosedur ini didukung untuk Aurora MySQL versi 2 dan 3.

Contoh

Contoh berikut melewati replikasi transaksi dengan GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_start_replication_until_gtid (Aurora MySQL versi 3)

Memulai replikasi dari klaster DB Aurora MySQL dan menghentikan replikasi segera setelah pengidentifikasi transaksi global (GTID) yang ditentukan.

Sintaksis

CALL mysql.rds_start_replication_until_gtid(gtid);

Parameter

gtid

GTID setelah replikasi dihentikan.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_start_replication_until_gtid.

Prosedur ini didukung untuk Aurora MySQL versi 3.04 dan yang lebih tinggi.

Prosedur mysql.rds_start_replication_until_gtid tersimpan tidak didukung untuk replikasi terkelola, yang mencakup hal-hal berikut:

Saat parameter gtid menentukan transaksi yang telah dijalankan oleh replika, replikasi akan segera dihentikan.

Contoh

Contoh berikut memulai replikasi dan mereplikasi perubahan hingga mencapai GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');