Mengkonfigurasi, memulai, dan menghentikan replikasi log biner (binlog) - 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.

Mengkonfigurasi, memulai, dan menghentikan replikasi log biner (binlog)

Prosedur tersimpan berikut mengontrol bagaimana transaksi direplikasi dari basis data eksternal ke dalam RDS for MySQL, atau dari RDS for MySQL ke basis data eksternal.

Saat menggunakan prosedur tersimpan ini untuk mengelola replikasi dengan pengguna replikasi yang dikonfigurasicaching_sha2_password, Anda harus mengonfigurasi TLS dengan menentukan. SOURCE_SSL=1 caching_sha2_passwordadalah plugin otentikasi default untuk RDS untuk MySQL 8.4 Untuk informasi lebih lanjut, lihat. Enkripsi dengan/SSLTLS

Untuk informasi tentang mengonfigurasi, menggunakan, dan mengelola replika baca, lihat. Bekerja dengan replika SQL baca saya

Mengubah posisi log instans basis data sumber menjadi awal log biner berikutnya pada instans basis data sumber. Gunakan prosedur ini hanya jika Anda menerima I/O kesalahan replikasi 1236 pada replika baca.

Sintaks

CALL mysql.rds_next_master_log( curr_master_log );

Parameter

curr_master_log

Indeks file log master saat ini. Misalnya, jika file saat ini bernama mysql-bin-changelog.012345, maka indeksnya adalah 12345. Untuk menentukan nama file log master saat ini, jalankan perintah SHOW REPLICA STATUS dan lihat kolom Master_Log_File.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_next_master_log.

Awas

Panggil mysql.rds_next_master_log hanya jika replikasi gagal setelah failover instans DB multi-AZ yang merupakan sumber replikasi, dan Last_IO_Errno bidang laporan kesalahan 1236. SHOW REPLICA STATUS I/O

Memanggil mysql.rds_next_master_log ​​dapat mengakibatkan hilangnya data di replika baca jika transaksi dalam instans sumber tidak ditulis ke log biner di disk sebelum peristiwa failover terjadi. Anda dapat mengurangi kemungkinan hal ini terjadi dengan menyetel parameter instance sumber sync_binlog dan innodb_support_xa ke1, meskipun ini dapat mengurangi kinerja. Untuk informasi selengkapnya, lihat Memecahkan masalah replika SQL baca saya.

Contoh

Asumsikan replikasi gagal pada replika baca RDS for MySQL. Menjalankan SHOW REPLICA STATUS\G pada replika baca akan menampilkan hasil berikut:

*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Master: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976

Kolom Last_IO_Errno menunjukkan bahwa instans menerima kesalahan I/O 1236. Kolom Master_Log_File menunjukkan bahwa nama file adalah mysql-bin-changelog.012345, yang berarti indeks file log adalah 12345. Untuk mengatasi kesalahan, Anda dapat memanggil mysql.rds_next_master_log dengan parameter berikut:

CALL mysql.rds_next_master_log(12345);

Mengubah posisi log instans basis data sumber menjadi awal log biner berikutnya pada instans basis data sumber. Gunakan prosedur ini hanya jika Anda menerima I/O kesalahan replikasi 1236 pada replika baca.

Sintaks

CALL mysql.rds_next_source_log( curr_source_log );

Parameter

curr_source_log

Indeks file log sumber saat ini. Misalnya, jika file saat ini bernama mysql-bin-changelog.012345, maka indeksnya adalah 12345. Untuk menentukan nama file log sumber saat ini, jalankan perintah SHOW REPLICA STATUS dan lihat kolom Source_Log_File.

Catatan penggunaan

Pengguna administratif harus menjalankan prosedur mysql.rds_next_source_log.

Awas

Panggil mysql.rds_next_source_log hanya jika replikasi gagal setelah failover instans DB multi-AZ yang merupakan sumber replikasi, dan Last_IO_Errno bidang laporan kesalahan 1236. SHOW REPLICA STATUS I/O

Memanggil mysql.rds_next_source_log ​​dapat mengakibatkan hilangnya data di replika baca jika transaksi dalam instans sumber tidak ditulis ke log biner di disk sebelum peristiwa failover terjadi. Anda dapat mengurangi kemungkinan hal ini terjadi dengan menyetel parameter instance sumber sync_binlog dan innodb_support_xa ke1, meskipun ini dapat mengurangi kinerja. Untuk informasi selengkapnya, lihat Memecahkan masalah replika SQL baca saya.

Contoh

Asumsikan replikasi gagal pada replika baca RDS for MySQL. Menjalankan SHOW REPLICA STATUS\G pada replika baca akan menampilkan hasil berikut:

*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Source: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from source when reading data from binary log: 'Client requested source to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976

Kolom Last_IO_Errno menunjukkan bahwa instans menerima kesalahan I/O 1236. Kolom Source_Log_File menunjukkan bahwa nama file adalah mysql-bin-changelog.012345, yang berarti indeks file log adalah 12345. Untuk mengatasi kesalahan, Anda dapat memanggil mysql.rds_next_source_log dengan parameter berikut:

CALL mysql.rds_next_source_log(12345);

Mengonfigurasi ulang instans DB RDS for MySQL agar tidak lagi menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_reset_external_master;

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_reset_external_master. Prosedur ini harus dijalankan pada instans DB MySQL agar dihapus sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Untuk informasi selengkapnya tentang cara menggunakan replikasi untuk mengimpor data dari instans MySQL yang berjalan di luar Amazon RDS, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

Mengonfigurasi ulang instans DB RDS for MySQL agar tidak lagi menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_reset_external_source;

Catatan penggunaan

Pengguna administratif harus menjalankan prosedur mysql.rds_reset_external_source. Prosedur ini harus dijalankan pada instans DB MySQL agar dihapus sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS.

Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB. Untuk informasi selengkapnya tentang menggunakan replikasi untuk mengimpor data dari instans MySQL yang berjalan di luar Amazon RDS, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

Mengonfigurasi instans DB RDS for MySQL agar tidak lagi menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

catatan

Anda bisa menggunakan prosedur tersimpan mysql.rds_set_external_master_with_delay (RDS untuk MariaDB dan RDS untuk MySQL mayor versi 8.0 dan lebih rendah) untuk mengonfigurasi instans basis data sumber eksternal dan replikasi tertunda.

Sintaks

CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

Parameter

host_name

Nama host atau alamat IP instans MySQL yang berjalan di luar Amazon RDS untuk menjadi instans basis data sumber.

host_port

Port yang digunakan oleh instans MySQL yang berjalan di luar Amazon RDS untuk dikonfigurasi sebagai instans basis data sumber. Jika konfigurasi jaringan Anda mencakup replikasi port Secure Shell (SSH) yang mengubah nomor port, tentukan nomor port yang diekspos oleh SSH.

replication_user_name

ID pengguna dengan izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans MySQL yang berjalan di luar Amazon RDS. Kami menyarankan Anda memberikan akun yang digunakan sepenuhnya untuk replikasi dengan instans eksternal.

replication_user_password

Kata sandi ID pengguna yang ditentukan dalam replication_user_name.

mysql_binary_log_file_name

Nama log biner pada instans basis data sumber yang berisi informasi replikasi.

mysql_binary_log_file_location

Lokasi di log biner mysql_binary_log_file_name tempat replikasi mulai membaca informasi replikasi.

Anda dapat menentukan nama dan lokasi file binlog dengan menjalankan SHOW MASTER STATUS pada instans basis data sumber.

ssl_encryption

Nilai yang menentukan apakah enkripsi Lapisan Soket Aman (SSL) digunakan pada sambungan replikasi. 1 menentukan untuk menggunakan enkripsi SSL, 0 menentukan untuk tidak menggunakan enkripsi. Default-nya adalah 0.

catatan

Opsi MASTER_SSL_VERIFY_SERVER_CERT tidak didukung. Opsi ini diatur ke 0, yang berarti koneksi dienkripsi, tetapi sertifikat tidak diverifikasi.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_set_external_master. Prosedur ini harus dijalankan pada instans DB MySQL untuk dikonfigurasi sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

Sebelum menjalankan mysql.rds_set_external_master, Anda harus mengonfigurasi instans MySQL yang berjalan di luar Amazon RDS menjadi instans basis data sumber. Untuk terhubung ke instans MySQL yang berjalan di luar Amazon RDS, Anda harus menentukan nilai replication_user_name dan replication_user_password yang menunjukkan pengguna replikasi yang memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans eksternal MySQL.

Untuk mengonfigurasi instans ​​eksternal MySQL sebagai instans basis data sumber
  1. Dengan menggunakan klien MySQL pilihan Anda, hubungkan ke instans eksternal MySQL dan buat akun pengguna yang akan digunakan untuk replikasi. Berikut adalah contohnya.

    MySQL 5.7

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
    catatan

    Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.

  2. Pada instans eksternal MySQL, berikan hak istimewa REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Contoh berikut memberikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna ‘repl_user’ domain Anda.

    MySQL 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';

Untuk menggunakan replikasi terenkripsi, konfigurasikan instans basis data sumber untuk menggunakan koneksi SSL.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Setelah memanggil mysql.rds_set_external_master ​​untuk mengonfigurasi instans DB Amazon RDS sebagai replika baca, Anda dapat memanggil mysql.rds_start_replication pada replika baca untuk memulai proses replikasi. Anda dapat memanggil ​​untuk menghapus konfigurasi replika baca.

Saat mysql.rds_set_external_master dipanggil, Amazon RDS mencatat waktu, pengguna, dan tindakan set master di tabel mysql.rds_history dan mysql.rds_replication_status.

Contoh

Ketika dijalankan pada instans DB MySQL, contoh berikut mengonfigurasi instans DB menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 1);

Mengonfigurasi instans DB RDS for MySQL agar tidak lagi menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_set_external_source ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

Parameter

host_name

Nama host atau alamat IP instans MySQL yang berjalan di luar Amazon RDS untuk menjadi instans basis data sumber.

host_port

Port yang digunakan oleh instans MySQL yang berjalan di luar Amazon RDS untuk dikonfigurasi sebagai instans basis data sumber. Jika konfigurasi jaringan Anda mencakup replikasi port Secure Shell (SSH) yang mengubah nomor port, tentukan nomor port yang diekspos oleh SSH.

replication_user_name

ID pengguna dengan izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans MySQL yang berjalan di luar Amazon RDS. Kami menyarankan Anda memberikan akun yang digunakan sepenuhnya untuk replikasi dengan instans eksternal.

replication_user_password

Kata sandi ID pengguna yang ditentukan dalam replication_user_name.

mysql_binary_log_file_name

Nama log biner pada instans basis data sumber yang berisi informasi replikasi.

mysql_binary_log_file_location

Lokasi di log biner mysql_binary_log_file_name tempat replikasi mulai membaca informasi replikasi.

Anda dapat menentukan nama dan lokasi file binlog dengan menjalankan SHOW MASTER STATUS pada instans basis data sumber.

ssl_encryption

Nilai yang menentukan apakah enkripsi Lapisan Soket Aman (SSL) digunakan pada sambungan replikasi. 1 menentukan untuk menggunakan enkripsi SSL, 0 menentukan untuk tidak menggunakan enkripsi. Standarnya adalah 0.

catatan

Opsi SOURCE_SSL_VERIFY_SERVER_CERT tidak didukung. Opsi ini diatur ke 0, yang berarti koneksi dienkripsi, tetapi sertifikat tidak diverifikasi.

Catatan penggunaan

Pengguna administratif harus menjalankan prosedur mysql.rds_set_external_source. Prosedur ini harus dijalankan pada DB dikonfigurasi sebagai replika baca instance MySQL yang berjalan di luar Amazon RDS.

Sebelum menjalankan mysql.rds_set_external_source, Anda harus mengonfigurasi instans MySQL yang berjalan di luar Amazon RDS menjadi instans basis data sumber. Untuk terhubung ke instans MySQL yang berjalan di luar Amazon RDS, Anda harus menentukan nilai replication_user_name dan replication_user_password yang menunjukkan pengguna replikasi yang memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans eksternal MySQL.

Untuk mengonfigurasi instans ​​eksternal MySQL sebagai instans basis data sumber
  1. Dengan menggunakan klien MySQL pilihan Anda, hubungkan ke instans eksternal MySQL dan buat akun pengguna yang akan digunakan untuk replikasi. Berikut sebuah contoh.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
    catatan

    Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.

  2. Pada instans eksternal MySQL, berikan hak istimewa REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Contoh berikut memberikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna ‘repl_user’ domain Anda.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';

Untuk menggunakan replikasi terenkripsi, konfigurasikan instans basis data sumber untuk menggunakan koneksi SSL. Selain itu, impor sertifikat otoritas sertifikat, sertifikat klien, dan kunci klien ke dalam instans DB atau klaster DB menggunakan prosedur mysql.rds_import_binlog_ssl_material.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Setelah memanggil mysql.rds_set_external_source untuk mengkonfigurasi DB instance sebagai replika baca, Anda dapat memanggil replika baca untuk memulai proses replikasi. mysql.rds_start_replication Anda dapat memanggil ​​untuk menghapus konfigurasi replika baca.

Saat mysql.rds_set_external_source dipanggil, Amazon RDS mencatat waktu, pengguna, dan tindakan set master di tabel mysql.rds_history dan mysql.rds_replication_status.

Contoh

Ketika dijalankan pada DB, contoh berikut mengonfigurasi instans DB menjadi replika baca dari instance MySQL yang berjalan eksternal ke Amazon RDS.

call mysql.rds_set_external_source( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 1);

mysql.rds_set_external_master_with_auto_position (RDS untuk MySQL versi utama 8.0 dan lebih rendah)

Mengonfigurasi instans DB RDS for MySQL menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS. Prosedur ini juga mengonfigurasi replikasi dan replikasi yang tertunda berdasarkan pengidentifikasi transaksi global (). GTIDs

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

Parameter

host_name

Nama host atau alamat IP instans MySQL yang berjalan di luar Amazon RDS untuk menjadi instans basis data sumber.

host_port

Port yang digunakan oleh instans MySQL yang berjalan di luar Amazon RDS untuk dikonfigurasi sebagai instans basis data sumber. Jika konfigurasi jaringan Anda mencakup replikasi port Secure Shell (SSH) yang mengubah nomor port, tentukan nomor port yang diekspos oleh SSH.

replication_user_name

ID pengguna dengan izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans MySQL yang berjalan di luar Amazon RDS. Kami menyarankan Anda memberikan akun yang digunakan sepenuhnya untuk replikasi dengan instans eksternal.

replication_user_password

Kata sandi ID pengguna yang ditentukan dalam replication_user_name.

ssl_encryption

Nilai yang menentukan apakah enkripsi Lapisan Soket Aman (SSL) digunakan pada sambungan replikasi. 1 menentukan untuk menggunakan enkripsi SSL, 0 menentukan untuk tidak menggunakan enkripsi. Default-nya adalah 0.

catatan

Opsi MASTER_SSL_VERIFY_SERVER_CERT tidak didukung. Opsi ini diatur ke 0, yang berarti koneksi dienkripsi, tetapi sertifikat tidak diverifikasi.

delay

Jumlah detik minimum untuk menunda replikasi dari instans basis data sumber.

Batas untuk parameter ini adalah satu hari (86.400 detik).

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_set_external_master_with_auto_position. Prosedur ini harus dijalankan pada instans DB MySQL untuk dikonfigurasi sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

Prosedur ini didukung untuk semua versi RDS for MySQL 5.7, dan RDS for MySQL 8.0.26, dan versi 8.0 yang lebih tinggi.

Sebelum menjalankan mysql.rds_set_external_master_with_auto_position, Anda harus mengonfigurasi instans MySQL yang berjalan di luar Amazon RDS menjadi instans basis data sumber. Untuk terhubung ke instans MySQL yang berjalan di luar Amazon RDS, Anda harus menentukan nilai untuk replication_user_name dan replication_user_password. Nilai-nilai ini harus menunjukkan pengguna replikasi yang memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans external MySQL.

Untuk mengonfigurasi instans ​​eksternal MySQL sebagai instans basis data sumber
  1. Dengan menggunakan klien MySQL pilihan Anda, hubungkan ke instans eksternal MySQL dan buat akun pengguna yang akan digunakan untuk replikasi. Berikut adalah contohnya.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Pada instans eksternal MySQL, berikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Contoh berikut memberikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna 'repl_user' domain Anda.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Untuk informasi selengkapnya, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Sebelum Anda meneleponmysql.rds_set_external_master_with_auto_position, pastikan untuk memanggil mysql.rds_set_external_source_gtid_purged untuk mengatur variabel gtid_purged sistem dengan rentang GTID tertentu dari sumber eksternal.

Setelah memanggil mysql.rds_set_external_master_with_auto_position ​​untuk mengonfigurasi instans DB Amazon RDS sebagai replika baca, Anda dapat memanggil mysql.rds_start_replication pada replika baca untuk memulai proses replikasi. Anda dapat memanggil ​​untuk menghapus konfigurasi replika baca.

Saat Anda memanggil mysql.rds_set_external_master_with_auto_position, Amazon RDS mencatat waktu, pengguna, dan tindakan set master di tabel mysql.rds_history dan mysql.rds_replication_status.

Untuk pemulihan bencana, Anda dapat menggunakan prosedur ini dengan prosedur tersimpan mysql.rds_start_replication_until atau . Untuk meneruskan perubahan ke replika baca yang tertunda ke waktu sebelum bencana, Anda dapat menjalankan prosedur mysql.rds_set_external_master_with_auto_position. Setelah prosedur mysql.rds_start_replication_until_gtid menghentikan replikasi, Anda dapat mempromosikan replika baca menjadi instans DB primer baru dengan menggunakan petunjuk di Mempromosikan replika baca menjadi instans DB mandiri.

Untuk menggunakan prosedur mysql.rds_rds_start_replication_until_gtid, replikasi berbasis GTID harus diaktifkan. Untuk melewati transaksi berbasis GTID tertentu yang diketahui menyebabkan bencana, Anda dapat menggunakan prosedur tersimpan . Untuk informasi selengkapnya tentang cara menggunakan replikasi berbasis GTID, lihat Menggunakan replikasi GTID berbasis.

Contoh

Ketika dijalankan pada instans DB MySQL, contoh berikut mengonfigurasi instans DB menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS. Ini menetapkan penundaan replikasi minimum menjadi satu jam (3.600 detik) pada instans DB MySQL. Perubahan dari instans basis data sumber MySQL yang berjalan di luar Amazon RDS tidak diterapkan pada replika baca instans DB MySQL selama setidaknya satu jam.

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 1, 3600);

mysql.rds_set_external_source_with_auto_position (RDS untuk MySQL mayor versi 8.4 dan lebih tinggi)

Mengonfigurasi instans DB RDS for MySQL menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS. Prosedur ini juga mengonfigurasi replikasi dan replikasi yang tertunda berdasarkan pengidentifikasi transaksi global (). GTIDs

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_set_external_source_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

Parameter

host_name

Nama host atau alamat IP instans MySQL yang berjalan di luar Amazon RDS untuk menjadi instans basis data sumber.

host_port

Port yang digunakan oleh instans MySQL yang berjalan di luar Amazon RDS untuk dikonfigurasi sebagai instans basis data sumber. Jika konfigurasi jaringan Anda mencakup replikasi port Secure Shell (SSH) yang mengubah nomor port, tentukan nomor port yang diekspos oleh SSH.

replication_user_name

ID pengguna dengan izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans MySQL yang berjalan di luar Amazon RDS. Kami menyarankan Anda memberikan akun yang digunakan sepenuhnya untuk replikasi dengan instans eksternal.

replication_user_password

Kata sandi ID pengguna yang ditentukan dalam replication_user_name.

ssl_encryption

Nilai yang menentukan apakah enkripsi Lapisan Soket Aman (SSL) digunakan pada sambungan replikasi. 1 menentukan untuk menggunakan enkripsi SSL, 0 menentukan untuk tidak menggunakan enkripsi. Default-nya adalah 0.

catatan

Opsi SOURCE_SSL_VERIFY_SERVER_CERT tidak didukung. Opsi ini diatur ke 0, yang berarti koneksi dienkripsi, tetapi sertifikat tidak diverifikasi.

delay

Jumlah detik minimum untuk menunda replikasi dari instans basis data sumber.

Batas untuk parameter ini adalah satu hari (86.400 detik).

Catatan penggunaan

Pengguna administratif harus menjalankan prosedur mysql.rds_set_external_source_with_auto_position. Prosedur ini harus dijalankan pada instans DB MySQL untuk dikonfigurasi sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

Sebelum menjalankan mysql.rds_set_external_source_with_auto_position, Anda harus mengonfigurasi instans MySQL yang berjalan di luar Amazon RDS menjadi instans basis data sumber. Untuk terhubung ke instans MySQL yang berjalan di luar Amazon RDS, Anda harus menentukan nilai untuk replication_user_name dan replication_user_password. Nilai-nilai ini harus menunjukkan pengguna replikasi yang memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans external MySQL.

Untuk mengonfigurasi instans ​​eksternal MySQL sebagai instans basis data sumber
  1. Dengan menggunakan klien MySQL pilihan Anda, hubungkan ke instans eksternal MySQL dan buat akun pengguna yang akan digunakan untuk replikasi. Berikut adalah contohnya.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Pada instans eksternal MySQL, berikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Contoh berikut memberikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna 'repl_user' domain Anda.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Untuk informasi selengkapnya, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Sebelum Anda meneleponmysql.rds_set_external_source_with_auto_position, pastikan untuk memanggil mysql.rds_set_external_source_gtid_purged untuk mengatur variabel gtid_purged sistem dengan rentang GTID tertentu dari sumber eksternal.

Setelah memanggil mysql.rds_set_external_source_with_auto_position ​​untuk mengonfigurasi instans DB Amazon RDS sebagai replika baca, Anda dapat memanggil mysql.rds_start_replication pada replika baca untuk memulai proses replikasi. Anda dapat memanggil ​​untuk menghapus konfigurasi replika baca.

Saat Anda memanggil mysql.rds_set_external_source_with_auto_position, Amazon RDS mencatat waktu, pengguna, dan tindakan set master di tabel mysql.rds_history dan mysql.rds_replication_status.

Untuk pemulihan bencana, Anda dapat menggunakan prosedur ini dengan prosedur tersimpan mysql.rds_start_replication_until atau . Untuk meneruskan perubahan ke replika baca yang tertunda ke waktu sebelum bencana, Anda dapat menjalankan prosedur mysql.rds_set_external_source_with_auto_position. Setelah prosedur mysql.rds_start_replication_until_gtid menghentikan replikasi, Anda dapat mempromosikan replika baca menjadi instans DB primer baru dengan menggunakan petunjuk di Mempromosikan replika baca menjadi instans DB mandiri.

Untuk menggunakan prosedur mysql.rds_rds_start_replication_until_gtid, replikasi berbasis GTID harus diaktifkan. Untuk melewati transaksi berbasis GTID tertentu yang diketahui menyebabkan bencana, Anda dapat menggunakan prosedur tersimpan . Untuk informasi selengkapnya tentang cara menggunakan replikasi berbasis GTID, lihat Menggunakan replikasi GTID berbasis.

Contoh

Ketika dijalankan pada instans DB MySQL, contoh berikut mengonfigurasi instans DB menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS. Ini menetapkan penundaan replikasi minimum menjadi satu jam (3.600 detik) pada instans DB MySQL. Perubahan dari instans basis data sumber MySQL yang berjalan di luar Amazon RDS tidak diterapkan pada replika baca instans DB MySQL selama setidaknya satu jam.

call mysql.rds_set_external_source_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 1, 3600);

mysql.rds_set_external_master_with_delay (RDS untuk MariaDB dan RDS untuk MySQL mayor versi 8.0 dan lebih rendah)

Mengonfigurasi instans DB RDS for MySQL menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS dan mengonfigurasi replikasi tertunda.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_set_external_master_with_delay( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );

Parameter

host_name

Nama host atau alamat IP dari instans MySQL yang berjalan di luar Amazon RDS yang akan menjadi instans basis data sumber.

host_port

Port yang digunakan oleh instans MySQL yang berjalan di luar Amazon RDS untuk dikonfigurasi sebagai instans basis data sumber. Jika konfigurasi jaringan Anda mencakup replikasi port SSH yang mengubah nomor port, tentukan nomor port yang diekspos oleh SSH.

replication_user_name

ID pengguna dengan izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans MySQL yang berjalan di luar Amazon RDS. Kami menyarankan Anda memberikan akun yang digunakan sepenuhnya untuk replikasi dengan instans eksternal.

replication_user_password

Kata sandi ID pengguna yang ditentukan dalam replication_user_name.

mysql_binary_log_file_name

Nama log biner pada Instans basis data sumber berisi informasi replikasi.

mysql_binary_log_file_location

Lokasi di log biner mysql_binary_log_file_name tempat replikasi akan mulai membaca informasi replikasi.

Anda dapat menentukan nama dan lokasi file binlog dengan menjalankan SHOW MASTER STATUS pada instans basis data sumber.

ssl_encryption

Nilai yang menentukan apakah enkripsi Lapisan Soket Aman (SSL) digunakan pada sambungan replikasi. 1 menentukan untuk menggunakan enkripsi SSL, 0 menentukan untuk tidak menggunakan enkripsi. Default-nya adalah 0.

catatan

Opsi MASTER_SSL_VERIFY_SERVER_CERT tidak didukung. Opsi ini diatur ke 0, yang berarti koneksi dienkripsi, tetapi sertifikat tidak diverifikasi.

delay

Jumlah detik minimum untuk menunda replikasi dari instans basis data sumber.

Batas untuk parameter ini adalah satu hari (86.400 detik).

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_set_external_master_with_delay. Prosedur ini harus dijalankan pada instans DB MySQL untuk dikonfigurasi sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

Sebelum menjalankan mysql.rds_set_external_master_with_delay, Anda harus mengonfigurasi instans MySQL yang berjalan di luar Amazon RDS menjadi instans basis data sumber. Untuk terhubung ke instans MySQL yang berjalan di luar Amazon RDS, Anda harus menentukan nilai untuk replication_user_name dan replication_user_password. Nilai-nilai ini harus menunjukkan pengguna replikasi yang memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans external MySQL.

Untuk mengonfigurasi instans ​​eksternal MySQL sebagai instans basis data sumber
  1. Dengan menggunakan klien MySQL pilihan Anda, hubungkan ke instans eksternal MySQL dan buat akun pengguna yang akan digunakan untuk replikasi. Berikut adalah contohnya.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Pada instans eksternal MySQL, berikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Contoh berikut memberikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna 'repl_user' domain Anda.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Untuk informasi selengkapnya, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Setelah memanggil mysql.rds_set_external_master_with_delay ​​untuk mengonfigurasi instans DB Amazon RDS sebagai replika baca, Anda dapat memanggil mysql.rds_start_replication pada replika baca untuk memulai proses replikasi. Anda dapat memanggil ​​untuk menghapus konfigurasi replika baca.

Saat Anda memanggil mysql.rds_set_external_master_with_delay, Amazon RDS mencatat waktu, pengguna, dan tindakan set master di tabel mysql.rds_history dan mysql.rds_replication_status.

Untuk pemulihan bencana, Anda dapat menggunakan prosedur ini dengan prosedur tersimpan mysql.rds_start_replication_until atau . Untuk meneruskan perubahan ke replika baca yang tertunda ke waktu sebelum bencana, Anda dapat menjalankan prosedur mysql.rds_set_external_master_with_delay. Setelah prosedur mysql.rds_start_replication_until menghentikan replikasi, Anda dapat mempromosikan replika baca menjadi instans DB primer baru dengan menggunakan petunjuk di Mempromosikan replika baca menjadi instans DB mandiri.

Untuk menggunakan prosedur mysql.rds_rds_start_replication_until_gtid, replikasi berbasis GTID harus diaktifkan. Untuk melewati transaksi berbasis GTID tertentu yang diketahui menyebabkan bencana, Anda dapat menggunakan prosedur tersimpan . Untuk informasi selengkapnya tentang cara menggunakan replikasi berbasis GTID, lihat Menggunakan replikasi GTID berbasis.

Prosedur mysql.rds_set_external_master_with_delay tersedia dalam versi RDS for MySQL ini:

  • MySQL 8.0.26 dan versi 8.0 yang lebih tinggi

  • Semua versi 5.7

Contoh

Ketika dijalankan pada instans DB MySQL, contoh berikut mengonfigurasi instans DB menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS. Ini menetapkan penundaan replikasi minimum menjadi satu jam (3.600 detik) pada instans DB MySQL. Perubahan dari instans basis data sumber MySQL yang berjalan di luar Amazon RDS tidak diterapkan pada replika baca instans DB MySQL selama setidaknya satu jam.

call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 1, 3600);

mysql.rds_set_external_source_with_delay (RDS untuk MySQL mayor versi 8.4 dan lebih tinggi)

Mengonfigurasi instans DB RDS for MySQL menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS dan mengonfigurasi replikasi tertunda.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_set_external_source_with_delay ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );

Parameter

host_name

Nama host atau alamat IP dari instans MySQL yang berjalan di luar Amazon RDS yang akan menjadi instans basis data sumber.

host_port

Port yang digunakan oleh instans MySQL yang berjalan di luar Amazon RDS untuk dikonfigurasi sebagai instans basis data sumber. Jika konfigurasi jaringan Anda mencakup replikasi port SSH yang mengubah nomor port, tentukan nomor port yang diekspos oleh SSH.

replication_user_name

ID pengguna dengan izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans MySQL yang berjalan di luar Amazon RDS. Kami menyarankan Anda memberikan akun yang digunakan sepenuhnya untuk replikasi dengan instans eksternal.

replication_user_password

Kata sandi ID pengguna yang ditentukan dalam replication_user_name.

mysql_binary_log_file_name

Nama log biner pada Instans basis data sumber berisi informasi replikasi.

mysql_binary_log_file_location

Lokasi di log biner mysql_binary_log_file_name tempat replikasi akan mulai membaca informasi replikasi.

Anda dapat menentukan nama dan lokasi file binlog dengan menjalankan SHOW MASTER STATUS pada instans basis data sumber.

ssl_encryption

Nilai yang menentukan apakah enkripsi Lapisan Soket Aman (SSL) digunakan pada sambungan replikasi. 1 menentukan untuk menggunakan enkripsi SSL, 0 menentukan untuk tidak menggunakan enkripsi. Default-nya adalah 0.

catatan

Opsi SOURCE_SSL_VERIFY_SERVER_CERT tidak didukung. Opsi ini diatur ke 0, yang berarti koneksi dienkripsi, tetapi sertifikat tidak diverifikasi.

delay

Jumlah detik minimum untuk menunda replikasi dari instans basis data sumber.

Batas untuk parameter ini adalah satu hari (86.400 detik).

Catatan penggunaan

Pengguna administratif harus menjalankan prosedur mysql.rds_set_external_source_with_delay. Prosedur ini harus dijalankan pada instans DB MySQL untuk dikonfigurasi sebagai replika baca dari instans MySQL yang berjalan di luar Amazon RDS.

Sebelum menjalankan mysql.rds_set_external_source_with_delay, Anda harus mengonfigurasi instans MySQL yang berjalan di luar Amazon RDS menjadi instans basis data sumber. Untuk terhubung ke instans MySQL yang berjalan di luar Amazon RDS, Anda harus menentukan nilai untuk replication_user_name dan replication_user_password. Nilai-nilai ini harus menunjukkan pengguna replikasi yang memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE pada instans external MySQL.

Untuk mengonfigurasi instans ​​eksternal MySQL sebagai instans basis data sumber
  1. Dengan menggunakan klien MySQL pilihan Anda, hubungkan ke instans eksternal MySQL dan buat akun pengguna yang akan digunakan untuk replikasi. Berikut adalah contohnya.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Pada instans eksternal MySQL, berikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Contoh berikut memberikan hak akses REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna 'repl_user' domain Anda.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Untuk informasi selengkapnya, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

catatan

Kami menyarankan Anda menggunakan replikasi baca untuk mengelola replikasi antara dua instans DB Amazon RDS jika memungkinkan. Saat Anda melakukannya, sebaiknya hanya gunakan replika baca ini dan prosedur tersimpan terkait replikasi lainnya. Praktik ini memungkinkan topologi replikasi yang lebih kompleks antara instans DB Amazon RDS. Kami menawarkan prosedur tersimpan ini terutama untuk mengaktifkan replikasi dengan instans MySQL yang berjalan di luar Amazon RDS. Untuk informasi tentang mengelola replikasi di antara instans DB Amazon RDS, lihat Menggunakan replika baca instans DB.

Setelah memanggil mysql.rds_set_external_source_with_delay ​​untuk mengonfigurasi instans DB Amazon RDS sebagai replika baca, Anda dapat memanggil mysql.rds_start_replication pada replika baca untuk memulai proses replikasi. Anda dapat memanggil ​​untuk menghapus konfigurasi replika baca.

Saat Anda memanggil mysql.rds_set_external_source_with_delay, Amazon RDS mencatat waktu, pengguna, dan tindakan set master di tabel mysql.rds_history dan mysql.rds_replication_status.

Untuk pemulihan bencana, Anda dapat menggunakan prosedur ini dengan prosedur tersimpan mysql.rds_start_replication_until atau . Untuk meneruskan perubahan ke replika baca yang tertunda ke waktu sebelum bencana, Anda dapat menjalankan prosedur mysql.rds_set_external_source_with_delay. Setelah prosedur mysql.rds_start_replication_until menghentikan replikasi, Anda dapat mempromosikan replika baca menjadi instans DB primer baru dengan menggunakan petunjuk di Mempromosikan replika baca menjadi instans DB mandiri.

Untuk menggunakan prosedur mysql.rds_rds_start_replication_until_gtid, replikasi berbasis GTID harus diaktifkan. Untuk melewati transaksi berbasis GTID tertentu yang diketahui menyebabkan bencana, Anda dapat menggunakan prosedur tersimpan . Untuk informasi selengkapnya tentang cara menggunakan replikasi berbasis GTID, lihat Menggunakan replikasi GTID berbasis.

Contoh

Ketika dijalankan pada instans DB MySQL, contoh berikut mengonfigurasi instans DB menjadi replika baca dari instans MySQL yang berjalan di luar Amazon RDS. Ini menetapkan penundaan replikasi minimum menjadi satu jam (3.600 detik) pada instans DB MySQL. Perubahan dari instans basis data sumber MySQL yang berjalan di luar Amazon RDS tidak diterapkan pada replika baca instans DB MySQL selama setidaknya satu jam.

call mysql.rds_set_external_source_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 1, 3600);

mysql.rds_set_external_source_gtid_purged

Menetapkan variabel sistem gtid_purged dengan rentang GTID tertentu dari sumber eksternal. gtid_purgedNilai diperlukan untuk mengonfigurasi replikasi berbasis GTID untuk melanjutkan replikasi menggunakan penentuan posisi otomatis.

penting

Untuk menjalankan prosedur ini, autocommit harus diaktifkan. Untuk mengaktifkannya, atur parameter autocommit ke 1. Lihat informasi tentang cara mengubah parameter di .

Sintaks

CALL mysql.rds_set_external_source_gtid_purged( server_uuid , start_pos , end_pos );

Parameter

server_uuid

Pengidentifikasi unik universal (UUID) dari server eksternal tempat rentang GTID diimpor.

start_pos

Posisi awal rentang GTID yang akan ditetapkan.

end_pos

Posisi akhir dari rentang GTID yang akan ditetapkan.

Catatan penggunaan

mysql.rds_set_external_source_gtid_purgedProsedur ini hanya tersedia dengan MySQL 8.0.37 dan versi 8.0 yang lebih tinggi.

Hubungi mysql.rds_set_external_source_gtid_purged sebelum Anda meneleponmysql.rds_set_external_master_with_auto_position (RDS untuk MySQL versi utama 8.0 dan lebih rendah),mysql.rds_set_external_source_with_auto_position (RDS untuk MySQL mayor versi 8.4 dan lebih tinggi), ataumysql.rds_set_external_source_with_auto_position_for_channel.

Sebelum Anda meneleponmysql.rds_set_external_source_gtid_purged, pastikan untuk menghentikan semua saluran replikasi aktif untuk database. Untuk memeriksa status saluran, gunakan pernyataan SHOW REPLICA STATUS MySQL. Untuk menghentikan replikasi pada saluran, hubungimysql.rds_stop_replication_for_channel.

Rentang GTID yang Anda tentukan harus merupakan superset dari nilai yang ada. GTID_PURGED Prosedur tersimpan ini memeriksa nilai-nilai berikut sebelum menetapkan GTID_PURGED nilai:

  • server_uuidItu valid.

  • Nilai start_pos lebih besar dari 0 dan kurang dari nilaiend_pos.

  • Nilai end_pos lebih besar dari atau sama dengan nilaistart_pos.

Jika set GTID di server eksternal Anda berisi beberapa rentang nilai, pertimbangkan untuk memanggil prosedur beberapa kali dengan nilai set GTID yang berbeda.

Saat Anda meneleponmysql.rds_set_external_source_gtid_purged, Amazon RDS mencatat waktu, pengguna, dan tindakan set gtid_purged dalam mysql.rds_history tabel.

Jika Anda tidak menetapkan gtid_purged nilai dengan tepat untuk cadangan yang Anda gunakan untuk replikasi, ini dapat mengakibatkan transaksi hilang atau diduplikasi selama proses replikasi. Lakukan langkah-langkah berikut untuk menetapkan gtid_purged nilai yang benar.

Untuk mengatur nilai gtid_purged pada replika
  1. Tentukan titik waktu atau file cadangan spesifik yang akan digunakan sebagai titik awal replikasi. Ini bisa berupa cadangan logis (file mysqldump) atau cadangan fisik (snapshot Amazon RDS).

  2. Tentukan gtid_executed nilainya. Nilai ini mewakili himpunan semua GTIDs yang dilakukan di server. Untuk mengambil nilai ini, pada instance sumber, lakukan salah satu hal berikut:

    • Jalankan pernyataan SQL SELECT @@GLOBAL.GTID_EXECUTED; pada saat cadangan diambil.

    • Jika ada opsi terkait yang disertakan dalam utilitas cadangan masing-masing, ekstrak nilai dari file cadangan. Untuk informasi selengkapnya, lihat set-gtid-purgedopsi dalam dokumentasi MySQL.

  3. Tentukan gtid_purged nilai yang akan digunakan untuk panggilan kemysql.rds_set_external_source_gtid_purged. gtid_purgedNilai harus mencakup semua GTIDs yang dieksekusi pada instance sumber dan tidak lagi diperlukan untuk replikasi. Oleh karena itu, gtid_purged nilai harus menjadi bagian dari gtid_executed nilai yang Anda ambil pada langkah sebelumnya.

    Untuk menentukan gtid_purged nilainya, identifikasi GTIDs yang tidak disertakan dalam cadangan dan tidak lagi diperlukan untuk replikasi. Anda dapat melakukannya dengan menganalisis log biner atau dengan menggunakan alat seperti mysqlbinlog untuk menemukan GTIDs yang dibersihkan dari log biner.

    Atau, jika Anda memiliki cadangan konsisten yang mencakup semua log biner hingga titik cadangan, Anda dapat mengatur gtid_purged nilainya agar sama dengan gtid_executed nilai pada titik cadangan.

  4. Setelah Anda menentukan gtid_purged nilai yang sesuai yang konsisten dengan cadangan Anda, panggil prosedur mysql.rds_set_external_source_gtid_purged tersimpan pada instans RDS untuk MySQL DB Anda untuk menetapkan nilainya.

Contoh

Ketika dijalankan pada instance MySQL DB, contoh berikut menetapkan rentang GTID dari server MySQL eksternal dengan 12345678-abcd-1234-efgh-123456789abc UUID, posisi awal, dan posisi akhir. 1 100 Nilai GTID yang dihasilkan diatur ke. +12345678-abcd-1234-efgh-123456789abc:1-100

CALL mysql.rds_set_external_source_gtid_purged('12345678-abcd-1234-efgh-123456789abc', 1, 100);

Menetapkan mode replikasi untuk didasarkan pada posisi file log biner atau pada pengidentifikasi transaksi global ()GTIDs.

Sintaks

CALL mysql.rds_set_master_auto_position ( auto_position_mode );

Parameter

auto_position_mode

Nilai yang menunjukkan apakah akan menggunakan replikasi posisi file log atau replikasi berbasis GTID:

  • 0 – Gunakan metode replikasi berdasarkan posisi file log biner. Nilai default-nya 0.

  • 1 – Gunakan metode replikasi berbasis GTID.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_set_master_auto_position.

Prosedur ini didukung untuk semua RDS untuk MySQL 5.7 versi dan RDS untuk MySQL 8.0.26 dan versi 8.0 yang lebih tinggi.

Menetapkan mode replikasi untuk didasarkan pada posisi file log biner atau pada pengidentifikasi transaksi global ()GTIDs.

Sintaks

CALL mysql.rds_set_source_auto_position (auto_position_mode);

Parameter

auto_position_mode

Nilai yang menunjukkan apakah akan menggunakan replikasi posisi file log atau replikasi berbasis GTID:

  • 0 – Gunakan metode replikasi berdasarkan posisi file log biner. Nilai default-nya 0.

  • 1 – Gunakan metode replikasi berbasis GTID.

Catatan penggunaan

Pengguna administratif harus menjalankan prosedur mysql.rds_set_source_auto_position.

mysql.rds_set_source_delay

Mengatur jumlah detik minimum untuk menunda replikasi dari instans basis data sumber ke replika baca saat ini. Gunakan prosedur ini saat Anda tersambung ke replika baca untuk menunda replikasi dari instans basis data sumbernya.

Sintaks

CALL mysql.rds_set_source_delay( delay );

Parameter

delay

Jumlah detik minimum untuk menunda replikasi dari instans basis data sumber.

Batas untuk parameter ini adalah satu hari (86.400 detik).

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_set_source_delay.

Untuk pemulihan bencana, Anda dapat menggunakan prosedur ini dengan prosedur tersimpan mysql.rds_start_replication_until atau . Untuk meneruskan perubahan ke replika baca yang tertunda ke waktu sebelum bencana, Anda dapat menjalankan prosedur mysql.rds_set_source_delay. Setelah prosedur mysql.rds_start_replication_until atau mysql.rds_start_replication_until_gtid menghentikan replikasi, Anda dapat mempromosikan replika baca menjadi instans DB primer baru dengan menggunakan petunjuk di Mempromosikan replika baca menjadi instans DB mandiri.

Untuk menggunakan prosedur mysql.rds_rds_start_replication_until_gtid, replikasi berbasis GTID harus diaktifkan. Untuk melewati transaksi berbasis GTID tertentu yang diketahui menyebabkan bencana, Anda dapat menggunakan prosedur tersimpan . Untuk informasi selengkapnya tentang replikasi berbasis GTID, lihat Menggunakan replikasi GTID berbasis.

Prosedur mysql.rds_set_source_delay tersedia dalam versi RDS for MySQL ini:

  • Semua RDS untuk MySQL 8.4 versi

  • MySQL 8.0.26 dan versi 8.0 yang lebih tinggi

  • Semua versi 5.7

Contoh

Untuk menunda replikasi dari instans basis data sumber ke replika baca saat ini setidaknya selama satu jam (3.600 detik), Anda dapat memanggil mysql.rds_set_source_delay ​​dengan parameter berikut:

CALL mysql.rds_set_source_delay(3600);

mysql.rds_skip_repl_error

Melewati dan menghapus kesalahan replikasi pada replika baca DB MySQL.

Sintaksis

CALL mysql.rds_skip_repl_error;

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_skip_repl_error pada replika baca. Untuk informasi selengkapnya tentang prosedur ini, lihat Memanggil prosedur mysql.rds_skip_repl_error.

Untuk menentukan apakah ada kesalahan, jalankan perintah SHOW REPLICA STATUS\G MySQL. Jika kesalahan replikasi tidak parah, Anda dapat menjalankan mysql.rds_skip_repl_error untuk melewati kesalahan tersebut. Jika ada beberapa kesalahan, mysql.rds_skip_repl_error akan menghapus kesalahan pertama, lalu memberi peringatan bahwa ada kesalahan lain. Anda kemudian dapat menggunakan SHOW REPLICA STATUS\G untuk menentukan tindakan yang benar untuk kesalahan berikutnya. Untuk informasi tentang nilai yang ditampilkan, lihat SHOW REPLICA STATUS statement dalam dokumentasi MySQL.

Untuk informasi selengkapnya tentang cara mengatasi kesalahan replikasi dengan Amazon RDS, lihat Memecahkan masalah replika SQL baca saya.

Kesalahan replikasi terhenti

Ketika memanggil prosedur mysql.rds_skip_repl_error, Anda mungkin menerima pesan kesalahan yang menyatakan bahwa replika tidak berfungsi atau dinonaktifkan.

Pesan kesalahan ini muncul jika Anda menjalankan prosedur pada instans primer, bukan replika baca. Anda harus menjalankan prosedur ini pada replika baca agar prosedur berfungsi.

Pesan kesalahan ini mungkin juga muncul jika Anda menjalankan prosedur pada replika baca, tetapi replikasi tidak berhasil dimulai ulang.

Jika Anda perlu melewati sejumlah besar kesalahan, lag replikasi dapat meningkat hingga melampaui periode retensi default untuk file log biner (binlog). Dalam hal ini, Anda mungkin mengalami kesalahan fatal karena file binlog dibersihkan sebelum diputar ulang pada replika baca. Penghapusan ini menyebabkan replikasi berhenti, dan Anda tidak dapat lagi memanggil perintah mysql.rds_skip_repl_error untuk melewati kesalahan replikasi.

Anda dapat memitigasi masalah ini dengan meningkatkan jumlah jam retensi file binlog tersebut pada instans basis data sumber Anda. Setelah meningkatkan waktu retensi binlog, Anda dapat memulai ulang replikasi dan memanggil perintah mysql.rds_skip_repl_error sesuai kebutuhan.

Untuk mengatur waktu retensi binlog, gunakan prosedur mysql.rds_set_configuration dan tentukan parameter konfigurasi 'binlog retention hours' bersama dengan jumlah jam untuk mempertahankan file binlog di klaster DB. Contoh berikut menetapkan periode penyimpanan file binlog menjadi 48 jam.

CALL mysql.rds_set_configuration('binlog retention hours', 48);

mysql.rds_start_replication

Memulai replikasi dari instans DB RDS for MySQL.

catatan

Anda dapat menggunakan prosedur tersimpan mysql.rds_start_replication_until atau untuk memulai replikasi dari instans DB RDS for MySQL dan menghentikan replikasi di lokasi file log biner yang telah ditentukan.

Sintaksis

CALL mysql.rds_start_replication;

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_start_replication.

Untuk mengimpor data dari instance MySQL eksternal ke Amazon RDS, mysql.rds_start_replication panggil replika baca untuk memulai proses replikasi setelah Anda memanggil atau membangun konfigurasi replikasi. Untuk informasi selengkapnya, lihat Memulihkan cadangan ke instans Amazon RDS for MySQL DB.

Untuk mengekspor data ke instans MySQL yang berjalan di luar Amazon RDS, panggil mysql.rds_start_replication dan mysql.rds_stop_replication pada replika baca untuk mengontrol beberapa tindakan replikasi, seperti membersihkan log biner. Untuk informasi selengkapnya, lihat Mengekspor data dari instans My SQL DB dengan menggunakan replikasi.

Anda juga dapat memanggil mysql.rds_start_replication ​​pada replika baca untuk memulai kembali proses replikasi apa pun yang sebelumnya Anda hentikan dengan memanggil mysql.rds_stop_replication. Untuk informasi selengkapnya, lihat Menggunakan replika baca instans DB.

mysql.rds_start_replication_until

Memulai replikasi dari instans DB RDS for MySQL dan menghentikan replikasi di lokasi file log biner yang telah ditentukan.

Sintaks

CALL mysql.rds_start_replication_until ( replication_log_file , replication_stop_point );

Parameter

replication_log_file

Nama log biner pada instans basis data sumber yang berisi informasi replikasi.

replication_stop_point

Lokasi di log biner replication_log_file tempat replikasi akan berhenti.

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_start_replication_until.

Prosedur mysql.rds_start_replication_until tersedia dalam versi RDS for MySQL ini:

  • Semua RDS untuk MySQL 8.4 versi

  • MySQL 8.0.26 dan versi 8.0 yang lebih tinggi

  • Semua versi 5.7

Anda dapat menggunakan prosedur ini dengan replikasi tertunda untuk pemulihan bencana. Jika Anda telah mengonfigurasi replikasi tertunda, Anda dapat menggunakan prosedur ini untuk meneruskan perubahan ke replika baca tertunda ke waktu sebelum bencana terjadi. Setelah prosedur ini menghentikan replikasi, Anda dapat mempromosikan replika baca menjadi instans DB primer baru dengan menggunakan petunjuk di Mempromosikan replika baca menjadi instans DB mandiri.

Anda dapat mengonfigurasi replikasi tertunda menggunakan prosedur tersimpan berikut ini:

Nama file yang ditentukan untuk parameter replication_log_file harus cocok dengan nama file binlog instans basis data sumber.

Jika parameter replication_stop_point menentukan lokasi perhentian di masa lalu, replikasi akan segera dihentikan.

Contoh

Contoh berikut memulai replikasi dan mereplikasi perubahan hingga mencapai lokasi 120 di file log biner mysql-bin-changelog.000777.

call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);

mysql.rds_stop_replication

Menghentikan replikasi dari instans DB MySQL.

Sintaks

CALL mysql.rds_stop_replication;

Catatan penggunaan

Pengguna utama harus menjalankan prosedur mysql.rds_stop_replication.

Jika Anda mengonfigurasi replikasi untuk mengimpor data dari instans MySQL yang berjalan di luar Amazon RDS, Anda memanggil mysql.rds_stop_replication pada replika baca untuk menghentikan proses replikasi setelah impor selesai. Untuk informasi selengkapnya, lihat Memulihkan cadangan ke instans Amazon RDS for MySQL DB.

Jika Anda mengonfigurasi replikasi untuk mengekspor data ke instans MySQL yang berjalan di luar Amazon RDS, Anda memanggil mysql.rds_start_replication dan mysql.rds_stop_replication pada replika baca untuk mengontrol beberapa tindakan replikasi, seperti membersihkan log biner. Untuk informasi selengkapnya, lihat Mengekspor data dari instans My SQL DB dengan menggunakan replikasi.

Anda juga dapat menggunakan mysql.rds_stop_replication untuk menghentikan replikasi antara dua instans DB Amazon RDS. Anda biasanya menghentikan replikasi untuk menjalankan operasi berjangka panjang pada replika baca, seperti membuat indeks besar pada replika baca. Anda dapat memulai kembali proses replikasi apa pun yang sebelumnya Anda hentikan dengan memanggil mysql.rds_start_replication pada replika baca. Untuk informasi selengkapnya, lihat Menggunakan replika baca instans DB.