Mengkonfigurasi multi-source-replication untuk RDS untuk MySQL - 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 multi-source-replication untuk RDS untuk MySQL

Dengan replikasi multi-sumber, Anda dapat menyiapkan instans Amazon RDS for MySQL DB sebagai replika yang menerima peristiwa log biner dari lebih dari satu RDS untuk instans DB sumber MySQL. Replikasi multi-sumber didukung untuk RDS untuk instance MySQL DB yang menjalankan versi mesin berikut:

  • 8.0.35 dan versi minor yang lebih tinggi

  • 5.7.44 dan versi minor yang lebih tinggi

Untuk informasi tentang replikasi multi-sumber MySQL, lihat Replikasi Multi-Sumber MySQL dalam dokumentasi MySQL. Dokumentasi MySQL berisi informasi rinci tentang fitur ini, sementara topik ini menjelaskan cara mengkonfigurasi dan mengelola saluran replikasi multi-sumber pada RDS Anda untuk instance MySQL DB.

Kasus penggunaan untuk replikasi multi-sumber

Kasus-kasus berikut adalah kandidat yang baik untuk menggunakan replikasi multi-sumber pada RDS untuk MySQL:

  • Aplikasi yang perlu menggabungkan atau menggabungkan beberapa pecahan pada instance DB terpisah menjadi satu pecahan.

  • Aplikasi yang perlu menghasilkan laporan dari data yang dikonsolidasikan dari berbagai sumber.

  • Persyaratan untuk membuat cadangan data jangka panjang terkonsolidasi yang didistribusikan di antara beberapa RDS untuk instance MySQL DB.

Pertimbangan dan praktik terbaik untuk replikasi multi-sumber

Sebelum Anda menggunakan replikasi multi-sumber pada RDS untuk MySQL, tinjau pertimbangan dan praktik terbaik berikut:

  • Pastikan bahwa instans DB yang dikonfigurasi sebagai replika multi-sumber memiliki sumber daya yang cukup seperti throughput, memori, CPU, dan IOPS untuk menangani beban kerja dari beberapa instance sumber.

  • Pantau pemanfaatan sumber daya secara teratur pada replika multi-sumber Anda dan sesuaikan konfigurasi penyimpanan atau instans untuk menangani beban kerja tanpa membebani sumber daya.

  • Anda dapat mengonfigurasi replikasi multi-utas pada replika multi-sumber dengan mengatur variabel replica_parallel_workers sistem ke nilai yang lebih besar dari. 0 Dalam hal ini, jumlah utas yang dialokasikan untuk setiap saluran adalah nilai variabel ini, ditambah satu utas koordinator untuk mengelola utas applier.

  • Konfigurasikan filter replikasi dengan tepat untuk menghindari konflik. Untuk mereplikasi seluruh database ke database lain pada replika, Anda dapat menggunakan opsi. --replicate-rewrite-db Misalnya, Anda dapat mereplikasi semua tabel dalam database A ke database B pada contoh replika. Pendekatan ini dapat membantu ketika semua instance sumber menggunakan konvensi penamaan skema yang sama. Untuk informasi tentang --replicate-rewrite-db opsi, lihat Opsi Server Replika dan Variabel dalam dokumentasi MySQL.

  • Untuk menghindari kesalahan replikasi, hindari menulis ke replika. Kami menyarankan Anda mengaktifkan read_only parameter pada replika multi-sumber untuk memblokir operasi penulisan. Melakukannya membantu menghilangkan masalah replikasi yang disebabkan oleh operasi penulisan yang bertentangan.

  • Untuk meningkatkan kinerja operasi baca seperti jenis dan gabungan beban tinggi yang dijalankan pada replika multi-sumber, pertimbangkan untuk menggunakan RDS Optimized Reads. Fitur ini dapat membantu dengan kueri yang bergantung pada tabel sementara besar atau mengurutkan file. Untuk informasi selengkapnya, lihat Meningkatkan performa kueri RDS for MySQL dengan Amazon RDS Optimized Reads.

  • Untuk meminimalkan kelambatan replikasi dan meningkatkan kinerja replika multi-sumber, pertimbangkan untuk mengaktifkan penulisan yang dioptimalkan. Untuk informasi selengkapnya, lihat Meningkatkan performa penulisan dengan RDS Optimized Writes for MySQL.

  • Lakukan operasi manajemen (seperti mengubah konfigurasi) pada satu saluran pada satu waktu, dan hindari melakukan perubahan pada beberapa saluran dari beberapa koneksi. Praktik-praktik ini dapat menyebabkan konflik dalam operasi replikasi. Misalnya, mengeksekusi rds_skip_repl_error_for_channel dan rds_start_replication_for_channel prosedur secara bersamaan dari beberapa koneksi dapat menyebabkan melewatkan peristiwa pada saluran yang berbeda dari yang dimaksudkan.

  • Anda dapat mengaktifkan pencadangan pada instans replikasi multi-sumber dan mengekspor data dari instans tersebut ke bucket Amazon S3 untuk menyimpannya untuk tujuan jangka panjang. Namun, penting juga untuk mengonfigurasi cadangan dengan retensi yang sesuai pada instance sumber individual. Untuk informasi tentang mengekspor data snapshot ke Amazon S3, lihat. Mengekspor data snapshot DB ke Amazon S3

  • Untuk mendistribusikan beban kerja baca pada replika multi-sumber, Anda dapat membuat replika baca dari replika multi-sumber. Anda dapat menemukan replika baca ini secara berbeda Wilayah AWS berdasarkan persyaratan aplikasi Anda. Untuk informasi selengkapnya tentang replika baca, lihat Menggunakan replika baca MySQL.

Prasyarat untuk replikasi multi-sumber

Sebelum Anda mengonfigurasi replikasi multi-sumber, selesaikan prasyarat berikut.

  • Pastikan bahwa setiap sumber RDS untuk MySQL DB instance memiliki backup otomatis diaktifkan. Mengaktifkan pencadangan otomatis memungkinkan pencatatan biner. Untuk mempelajari cara mengaktifkan pencadangan otomatis, lihat. Mengaktifkan pencadangan otomatis

  • Untuk menghindari kesalahan replikasi, sebaiknya Anda memblokir operasi penulisan ke instans DB sumber. Anda dapat melakukannya dengan mengatur read-only parameter ke ON dalam grup parameter khusus yang dilampirkan ke RDS untuk instance DB sumber MySQL. Anda dapat menggunakan AWS Management Console atau AWS CLI untuk membuat grup parameter kustom baru atau untuk memodifikasi yang sudah ada. Untuk informasi selengkapnya, lihat Membuat grup parameter DB dan Memodifikasi parameter dalam grup parameter DB.

  • Untuk setiap instans DB sumber, tambahkan alamat IP instans ke grup keamanan Amazon virtual private cloud (VPC) untuk instans DB multi-sumber. Untuk mengidentifikasi alamat IP dari instans DB sumber, Anda dapat menjalankan perintahdig RDS Endpoint. Jalankan perintah dari instans Amazon EC2 di VPC yang sama dengan instans DB multi-sumber tujuan.

  • Untuk setiap instans DB sumber, gunakan klien untuk terhubung ke instans DB dan buat pengguna database dengan hak istimewa yang diperlukan untuk replikasi, seperti pada contoh berikut.

    CREATE USER 'repl_user' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user';

Mengkonfigurasi saluran replikasi multi-sumber pada RDS untuk instans MySQL DB

Mengkonfigurasi saluran replikasi multi-sumber mirip dengan mengkonfigurasi replikasi sumber tunggal. Untuk replikasi multi-sumber, pertama-tama Anda mengaktifkan logging biner pada instance sumber. Kemudian, Anda mengimpor data dari sumber ke replika multi-sumber. Kemudian, Anda memulai replikasi dari setiap sumber dengan menggunakan koordinat log biner atau dengan menggunakan pemosisian otomatis GTID.

Untuk mengonfigurasi RDS untuk instance MySQL DB sebagai replika multi-sumber dari dua atau lebih RDS untuk instance MySQL DB, lakukan langkah-langkah berikut.

Langkah 1: Impor data dari instans DB sumber ke replika multi-sumber

Lakukan langkah-langkah berikut pada setiap instans DB sumber.

Sebelum Anda mengimpor data dari sumber ke replika multi-sumber, tentukan file log biner saat ini dan posisikan dengan menjalankan perintah. SHOW MASTER STATUS Catat detail ini untuk digunakan pada langkah berikutnya. Dalam contoh output ini, file adalah mysql-bin-changelog.000031 dan posisinya adalah107.

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

Sekarang salin database dari instance DB sumber ke replika multi-sumber dengan menggunakanmysqldump, seperti pada contoh berikut.

mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u RDS_user_name \ -p RDS_password \ --host=RDS Endpoint | mysql \ --host=RDS Endpoint \ --port=3306 \ -u RDS_user_name \ -p RDS_password

Setelah menyalin database, Anda dapat mengatur parameter read-only ke instans OFF DB sumber.

Langkah 2: Mulai replikasi dari instans DB sumber ke replika multi-sumber

Untuk setiap instans DB sumber, gunakan kredensi pengguna master untuk terhubung ke instance, dan jalankan dua prosedur tersimpan berikut. Prosedur tersimpan ini mengonfigurasi replikasi pada saluran dan memulai replikasi. Contoh ini menggunakan nama file binlog dan posisi dari output contoh pada langkah sebelumnya.

CALL mysql.rds_set_external_source_for_channel('mysourcehost.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0, 'channel_1'); CALL mysql.rds_start_replication_for_channel('channel_1');

Untuk informasi selengkapnya tentang menggunakan prosedur tersimpan ini dan lainnya untuk menyiapkan dan mengelola saluran replikasi Anda, lihatMengelola replikasi multi-sumber.

Menggunakan filter dengan replikasi multi-sumber

Anda dapat menggunakan filter replikasi untuk menentukan database dan tabel mana yang direplikasi dalam replika multi-sumber. Filter replikasi dapat menyertakan basis data dan tabel dalam replikasi atau mengecualikannya dari replikasi. Untuk informasi selengkapnya tentang filter replikasi, lihatMengonfigurasi filter replikasi dengan MySQL.

Dengan replikasi multi-sumber, Anda dapat mengonfigurasi filter replikasi secara global atau di tingkat saluran. Pemfilteran tingkat saluran hanya tersedia dengan instans DB yang didukung yang menjalankan versi 8.0. Contoh berikut menunjukkan cara mengonfigurasi filter secara global atau di tingkat saluran.

Perhatikan persyaratan dan perilaku berikut dengan pemfilteran dalam replikasi multi-sumber:

  • Kutipan belakang (``) di sekitar nama saluran diperlukan.

  • Jika Anda mengubah filter replikasi dalam grup parameter, replika multi-sumber sql_thread untuk semua saluran dengan pembaruan akan dimulai ulang untuk menerapkan perubahan secara dinamis. Jika pembaruan melibatkan filter global, maka semua saluran replikasi dalam status berjalan dimulai ulang.

  • Semua filter global diterapkan sebelum filter khusus saluran apa pun.

  • Jika filter diterapkan secara global dan pada tingkat saluran, maka hanya filter tingkat saluran yang diterapkan. Misalnya, jika filternyareplicate_ignore_db="db1,`channel_22`:db2", maka replicate_ignore_db disetel ke db1 diterapkan ke semua saluran kecuali untukchannel_22, dan hanya channel_22 mengabaikan perubahan daridb2.

Contoh 1: Mengatur filter global

Dalam contoh berikut, temp_data database dikecualikan dari replikasi di setiap saluran.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='temp_data',ApplyMethod=immediate"

Contoh 2: Mengatur filter tingkat saluran

Dalam contoh berikut, perubahan dari sample22 database hanya disertakan dalam saluranchannel_22. Demikian pula, perubahan dari sample99 database hanya disertakan dalam saluranchannel_99.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='\`channel_22\`:sample22,\`channel_99\`:sample99',ApplyMethod=immediate"

Memantau saluran replikasi multi-sumber

Anda dapat memantau saluran individual dalam replika multi-sumber dengan menggunakan metode berikut:

  • Untuk memantau status semua saluran atau saluran tertentu, sambungkan ke replika multi-sumber dan jalankan perintah SHOW REPLICA STATUS atauSHOW REPLICA STATUS FOR CHANNEL 'channel_name'. Untuk informasi selengkapnya, lihat Memeriksa Status Replikasi dalam dokumentasi MySQL.

  • Untuk menerima pemberitahuan saat saluran replikasi dimulai, dihentikan, atau dihapus, gunakan pemberitahuan acara RDS. Untuk informasi selengkapnya, lihat Menggunakan pemberitahuan peristiwa Amazon RDS.

  • Untuk memantau lag untuk saluran tertentu, periksa ReplicationChannelLag metrik untuk itu. Titik data untuk metrik ini memiliki jangka waktu 60 detik (1 menit) yang tersedia selama 15 hari. Untuk menemukan lag saluran replikasi untuk saluran, gunakan pengenal instance dan nama saluran replikasi. Untuk menerima pemberitahuan ketika lag ini melebihi ambang batas tertentu, Anda dapat mengatur CloudWatch alarm. Untuk informasi selengkapnya, lihat Memantau metrik Amazon RDS dengan Amazon CloudWatch.

Keterbatasan untuk replikasi multi-sumber pada RDS untuk MySQL

Batasan berikut berlaku untuk replikasi multi-sumber pada RDS untuk MySQL:

  • Saat ini, RDS untuk MySQL mendukung konfigurasi maksimum 15 saluran untuk replika multi-sumber.

  • Instance replika baca tidak dapat dikonfigurasi sebagai replika multi-sumber.

  • Untuk mengonfigurasi replikasi multi-sumber pada RDS untuk MySQL yang menjalankan engine versi 5.7, Performance Schema harus diaktifkan pada instance replika. Mengaktifkan Skema Kinerja adalah opsional pada RDS untuk MySQL yang menjalankan engine versi 8.0.

  • Untuk RDS untuk MySQL yang menjalankan engine versi 5.7, filter replikasi berlaku untuk semua saluran replikasi. Untuk RDS untuk MySQL yang menjalankan engine versi 8.0, Anda dapat mengonfigurasi filter yang berlaku untuk semua saluran replikasi atau saluran individual.

  • Memulihkan snapshot RDS atau melakukan P oint-in-time -Restore (PITR) tidak memulihkan konfigurasi saluran replika multi-sumber.

  • Saat Anda membuat replika baca dari replika multi-sumber, itu hanya mereplikasi data dari instance multi-sumber. Itu tidak mengembalikan konfigurasi saluran apa pun.

  • MySQL tidak mendukung pengaturan jumlah pekerja paralel yang berbeda untuk setiap saluran. Setiap saluran mendapatkan jumlah pekerja paralel yang sama berdasarkan replica_parallel_workers nilainya.

Batasan tambahan berikut berlaku jika target replikasi multi-sumber Anda adalah cluster DB multi-AZ:

  • Saluran harus dikonfigurasi untuk sumber RDS untuk instance MySQL sebelum penulisan ke instance itu terjadi.

  • Setiap sumber RDS untuk instance MySQL harus mengaktifkan replikasi berbasis GTID.

  • Peristiwa failover pada cluster DB menghapus konfigurasi replikasi multi-sumber. Memulihkan konfigurasi itu membutuhkan pengulangan langkah-langkah konfigurasi.