Cara menggunakan mysql replication 3 server

Lompati ke konten utama

Browser ini sudah tidak didukung.

Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.

Memigrasikan Amazon RDS for MySQL ke Azure Database for MySQL menggunakan Data Replikasi

  • Artikel
  • 09/23/2022
  • 10 menit untuk membaca

Dalam artikel ini

BERLAKU UNTUK:

Cara menggunakan mysql replication 3 server
Azure Database for MySQL - Server Tunggal
Cara menggunakan mysql replication 3 server
Azure Database for MySQL - Server Fleksibel

Catatan

Artikel ini berisi referensi ke istilah slave, istilah yang tidak lagi digunakan Microsoft. Ketika istilah dihapus dari perangkat lunak, kami akan menghapusnya dari artikel ini.

Anda dapat menggunakan metode seperti cadangan dan pemulihan MySQL, Ekspor dan Import MySQL Workbench, atau Azure Database Migration Service untuk memigrasikan database MySQL Anda ke Azure Database for MySQL. Dengan menggunakan kombinasi alat sumber terbuka seperti mysqldump atau mydumper dan myloader dengan Replikasi dalam Data, Anda dapat memigrasikan beban kerja dengan waktu henti minimum.

Replikasi dalam Data adalah teknik yang mereplikasi perubahan data dari server sumber ke server tujuan berdasarkan metode posisi file log biner. Dalam skenario ini, instans MySQL yang beroperasi sebagai sumber (tempat perubahan database berasal) menulis pembaruan dan perubahan sebagai peristiwa ke log biner. Informasi dalam log biner disimpan dalam format pencatatan yang berbeda sesuai dengan perubahan database yang dicatat. Replika dikonfigurasi untuk membaca log biner dari sumbernya dan untuk menjalankan peristiwa pada log biner di database lokal replika.

Jika Anda menyiapkan Replikasi dalam Data untuk menyinkronkan data dari server MySQL sumber ke server MySQL target, Anda dapat melakukan pemberhentian selektif aplikasi dari primer (atau database sumber) ke replika (database target).

Dalam tutorial ini, Anda akan mempelajari cara menyiapkan Data dalam Replikasi antara server sumber yang menjalankan Amazon Relational Database Service (RDS) for MySQL dan server target yang menjalankan Azure Database for MySQL.

Pertimbangan performa

Sebelum memulai tutorial ini, pertimbangkan implikasi performa lokasi dan kapasitas komputer klien yang akan digunakan untuk melakukan operasi.

Lokasi Klien

Melakukan operasi pencadangan atau pemulihan dari komputer klien yang diluncurkan di lokasi yang sama dengan server database:

  • Untuk server Azure Database for MySQL, komputer klien harus berada di jaringan virtual yang sama dan zona ketersediaan yang sama dengan server database target.
  • Untuk instans database Amazon RDS sumber, instans klien harus berada di Amazon Virtual Private Cloud (Amazon VPC) dan Zona Ketersediaan yang sama dengan server database sumber. Dalam kasus sebelumnya, Anda dapat memindahkan file cadangan antar komputer klien dengan menggunakan protokol transfer file seperti FTP atau SFTP atau mengunggahnya ke Azure Blob Storage. Untuk mengurangi total waktu migrasi, Anda dapat mengompres file sebelum mentransfernya.

Kapasitas klien

Terlepas dari tempat komputer klien berada, komputasi, I/O, dan kapasitas jaringan yang memadai dibutuhkan untuk melakukan operasi yang diminta. Rekomendasi umumnya meliputi:

  • Jika cadangan atau pemulihan melibatkan pemrosesan data real-time, misalnya kompresi atau dekompresi, pilih kelas instans dengan setidaknya satu inti CPU per alur cadangan/pemulihan.
  • Pastikan ada cukup bandwidth jaringan yang tersedia untuk instans klien. Gunakan jenis instans yang mendukung fitur jaringan yang dipercepat. Untuk informasi selengkapnya, lihat bagian "Jaringan yang Dipercepat" di Panduan Jaringan Azure Virtual Machine.
  • Pastikan lapisan penyimpanan komputer klien menyediakan kapasitas baca/tulis yang diharapkan. Sebaiknya Anda menggunakan komputer virtual Azure dengan penyimpanan SSD Premium.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda perlu:

  • Pasang mysqlclient di komputer klien Anda untuk membuat cadangan, dan melakukan operasi pemulihan di server Azure Database for MySQL target.

  • Untuk database yang lebih besar, pasang mydumper dan myloader untuk pencadangan dan pemulihan database paralel.

    Catatan

    Mydumper hanya dapat berjalan pada distribusi Linux. Untuk informasi selengkapnya, lihat Cara memasang mydumper.

  • Buat instans server Azure Database for MySQL yang menjalankan versi 5.7 atau 8.0.

    Penting

    Jika target Anda adalah Azure Database for MySQL Flexible Server dengan ketersediaan tinggi (HA) redundan zona, perhatikan bahwa Data dalam Replikasi tidak didukung untuk konfigurasi ini. Sebagai solusi, selama pembuatan server, siapkan HA redundan zona:

    1. Buat server dengan ketersediaan tinggi zona-redundan diaktifkan.
    2. Nonaktifkan ketersediaan tinggi.
    3. Ikuti artikel untuk menyiapkan Replikasi dalam Data.
    4. Setelah pemberhentian, hapus konfigurasi Replikasi dalam Data.
    5. Aktifkan ketersediaan tinggi.

Pastikan bahwa beberapa parameter dan fitur dikonfigurasi dan disiapkan dengan benar, seperti yang dijelaskan di bawah ini:

  • Untuk alasan kompatibilitas, letakkan server database sumber dan target di versi MySQL yang sama.
  • Setiap tabel harus memiliki kunci primer. Kurangnya kunci utama pada tabel dapat memperlambat proses replikasi.
  • Pastikan tataan Karakter dari database sumber dan target sama.
  • Atur parameter wait_timeout ke waktu yang wajar. Waktu bergantung pada jumlah data atau beban kerja yang ingin diimpor atau dimigrasi.
  • Pastikan bahwa semua tabel Anda menggunakan InnoDB. Server Azure Database for MySQL hanya mendukung mesin penyimpanan InnoDB.
  • Untuk tabel dengan berbagai indeks sekunder atau untuk tabel yang besar, efek overhead performa dapat dilihat selama pemulihan. Ubah file cadangan agar pernyataan CREATE TABLE tidak menyertakan definisi kunci sekunder. Setelah Anda mengimpor data, buat kembali indeks sekunder untuk menghindari konsekuensi performa selama proses pemulihan.

Akhirnya, untuk mempersiapkan Replikasi dalam Data:

  • Verifikasi bahwa target Azure Database untuk server MySQL dapat terhubung ke sumber Amazon RDS untuk server MySQL melalui port 3306.
  • Pastikan komputer yang menghosting server sumber mengizinkan lalu lintas masuk dan keluar di port 3306.
  • Pastikan Anda menyediakan konektivitas situs-ke-situs ke server sumber Anda dengan menggunakan Azure ExpressRoute atau Azure VPN Gateway. Untuk informasi selengkapnya tentang pembuatan jaringan virtual, lihat dokumentasi Azure Virtual Network. Lihat juga artikel mulai cepat disertai detail langkah demi langkah.
  • Konfigurasikan kelompok keamanan jaringan server database sumber Anda untuk mengizinkan alamat IP server Azure Database for MySQL.

Penting

Jika GTID_mode di instans Amazon RDS for MySQL sumber telah diatur ke AKTIF, GTID_mode di instans target Azure Database for MySQL Flexible Server juga harus diatur ke AKTIF.

Instans Server Fleksibel Azure Database for MySQL

Untuk mengonfigurasi instans target Azure Database for MySQL, yang merupakan target untuk Replikasi dalam Data:

  1. Atur nilai parameter max_allowed_packet ke maksimum 1073741824, yakni 1 GB. Nilai ini mencegah masalah luapan yang terkait dengan baris panjang.

  2. Atur, slow_query_log, general_log, audit_log_enabled, dan query_store_capture_mode parameter ke OFF selama migrasi untuk membantu menghilangkan overhead yang terkait dengan pembuatan kueri.

  3. Tingkatkan skala ukuran komputasi server Azure Database for MySQL target ke maksimum 64 vCore. Ukuran ini memberikan lebih banyak sumber daya komputasi saat Anda memulihkan cadangan database dari server sumber.

    Anda selalu dapat mengurangi perhitungan untuk memenuhi permintaan aplikasi Anda setelah migrasi selesai.

  4. Tingkatkan ukuran penyimpanan untuk mendapatkan lebih banyak IOPS selama migrasi atau tingkatkan IOPS maksimum untuk migrasi.

Mengonfigurasi sumber Amazon RDS untuk server MySQL

Untuk menyiapkan dan mengonfigurasi server MySQL yang dihost di Amazon RDS, yang merupakan sumber untuk Replikasi dalam Data:

  1. Pastikan bahwa pengelogan biner diaktifkan di server Amazon RDS for MySQL sumber. Periksa bahwa pencadangan otomatis diaktifkan, atau pastikan replika baca tersedia untuk server Amazon RDS for MySQL sumber.

  2. Pastikan bahwa file log biner di server sumber dipertahankan hingga setelah perubahan diterapkan pada instans target Azure Database for MySQL.

    Dengan Replikasi dalam Data, Azure Database for MySQL tidak mengelola proses replikasi.

  3. Untuk memeriksa retensi log biner di server Amazon RDS sumber untuk menentukan jumlah jam log biner dipertahankan, panggil prosedur tersimpan mysql.rds_show_configuration:

    mysql> call mysql.rds_show_configuration;
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | name                   | value | description                                                                                               |
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | binlog retention hours | 24    | binlog retention hours specifies the duration in hours before binary logs are automatically deleted.      |
    | source delay           | 0     | source delay specifies replication delay in seconds between current instance and its master.              |
    | target delay           | 0     | target delay specifies replication delay in seconds between current instance and its future read-replica. |
    +------------------------+-------            +-----------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
  4. Untuk mengonfigurasi periode retensi log biner, jalankan prosedur tersimpan rds_set_configuration untuk memastikan bahwa log biner disimpan di server sumber untuk jangka waktu yang diinginkan. Contohnya:

    Mysql> Call mysql.rds_set_configuration(‘binlog retention hours', 96);
    

    Jika Anda membuat cadangan dan kemudian memulihkan, perintah sebelumnya membantu Anda mengejar perubahan delta dengan cepat.

    Catatan

    Pastikan ada ruang disk yang cukup besar untuk menyimpan log biner di server sumber berdasarkan pada periode retensi yang ditentukan.

Ada dua cara untuk mengambil cadangan data dari server Amazon RDS for MySQL sumber. Salah satu pendekatannya adalah mengambil cadangan data secara langsung dari server sumber. Pendekatan lainnya dengan mengambil cadangan dari replika baca Amazon RDS for MySQL.

  • Untuk mengambil cadangan data secara langsung dari server sumber:

    1. Pastikan Anda menghentikan aktivitas penulisan dari aplikasi selama beberapa menit untuk mendapatkan cadangan data yang konsisten secara transaksional.

      Anda juga dapat mengatur parameter read_only secara sementara ke nilai 1 sehingga penulisan tidak diproses saat mengambil cadangan data.

    2. Setelah menghentikan penulisan di server sumber, kumpulkan nama file log biner dan imbangi dengan menjalankan perintah Mysql> Show master status;.

    3. Simpan nilai-nilai ini untuk memulai replikasi dari Database Azure untuk server MySQL Anda.

    4. Untuk membuat cadangan data, eksekusi mysqldump dengan menjalankan perintah berikut:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • Jika menghentikan penulisan di server sumber bukan menjadi salah satu opsi atau performa pencadangan data tidak dapat diterima di server sumber, ambil cadangan di server replika:

    1. Buat replika baca Amazon MySQL dengan konfigurasi yang sama dengan server sumber. Kemudian, buat cadangan di sana.

    2. Biarkan Amazon RDS for MySQL membaca replika mengejar ketinggalan dengan sumber Amazon RDS untuk server MySQL.

    3. Ketika lag replika mencapai 0 pada replika baca, hentikan replikasi dengan memanggil prosedur yang mysql.rds_stop_replication tersimpan.

      Mysql> call mysql.rds_stop_replication;
      
    4. Saat replikasi berhenti, hubungkan ke replika. Kemudian, jalankan perintah SHOW SLAVE STATUS untuk mengambil nama file log biner saat ini dari bidang Relay_Master_Log_File dan posisi file log dari bidang Exec_Master_Log_Pos.

    5. Simpan nilai-nilai ini untuk memulai replikasi dari Database Azure untuk server MySQL Anda.

    6. Untuk membuat cadangan data dari replika baca Amazon RDS for MySQL, eksekusi mysqldump dengan menjalankan perintah berikut:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      

Menautkan server sumber dan replika untuk memulai Replikasi Data-in

  1. Untuk memulihkan database menggunakan pemulihan native mysql, jalankan perintah berikut:

    $ mysql -h <target_server> -u <targetuser> -p < dumpname.sql
    
  2. Masuk ke server Amazon RDS for MySQL sumber, dan siapkan pengguna replikasi. Kemudian, berikan hak istimewa yang diperlukan kepada pengguna ini.

    • Jika Anda menggunakan SSL, jalankan perintah berikut:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL; 
      Mysql> SHOW GRANTS FOR syncuser@'%';
      
    • Jika tidak menggunakan SSL, jalankan perintah berikut:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%'; 
      Mysql> SHOW GRANTS FOR syncuser@'%';
      

    Semua fungsi Replikasi Data-in dilakukan dengan prosedur tersimpan. Untuk informasi tentang semua prosedur, lihat Prosedur tersimpan Replikasi dalam Data. Prosedur tersimpan dapat dijalankan di MySQL shell atau MySQL Workbench.

  3. Untuk menautkan server Amazon RDS for MySQL sumber dan server Azure Database for MySQL target, masuk ke server Azure Database for MySQL target. Atur server Amazon RDS for MySQL sebagai server sumber dengan menjalankan perintah berikut:

    CALL mysql.az_replication_change_master('source_server','replication_user_name','replication_user_password',3306,'<master_bin_log_file>',master_bin_log_position,'<master_ssl_ca>');
    
  4. Untuk memulai replikasi antara sumber Amazon RDS untuk server MySQL dan target Azure Database untuk server MySQL, jalankan perintah berikut:

    Mysql> CALL mysql.az_replication_start;
    
  5. Untuk memeriksa status replikasi, di server replika, jalankan perintah berikut:

    Mysql> show slave status\G
    

    Jika status parameter Slave_IO_Running dan Slave_SQL_Running adalah Ya, replikasi telah dimulai dan dalam status berjalan.

  6. Periksa nilai Seconds_Behind_Master parameter untuk menentukan seberapa tertunda server target.

    Jika nilainya 0, target telah memproses semua pembaruan dari server sumber. Jika nilainya selain 0, server target masih memproses pembaruan.

Memastikan cutover yang berhasil

Untuk memastikan keberhasilan pemberhentian:

  1. Konfigurasikan proses masuk dan izin tingkat database yang sesuai di server Azure Database for MySQL target.
  2. Mengonfigurasi sumber Amazon RDS untuk server MySQL.
  3. Pastikan bahwa target Azure Database untuk server MySQL telah menyusul server sumber dan bahwa Seconds_Behind_Master nilainya adalah 0 dari show slave status.
  4. Panggil prosedur yang tersimpan mysql.az_replication_stop untuk menghentikan replikasi karena semua perubahan telah direplikasi ke server Azure Database for MySQL target.
  5. Panggil mysql.az_replication_remove_master untuk menghapus konfigurasi Replikasi dalam Data.
  6. Alihkan klien dan aplikasi klien ke instans target Server Fleksibel Azure Database for MySQL.

Di poin ini, proses migrasi selesai. Aplikasi Anda terhubung ke server yang menjalankan Azure Database for MySQL.

Langkah berikutnya

  • Untuk informasi selengkapnya tentang memigrasikan database ke Azure Database for MySQL, lihat Panduan Migrasi Database.
  • Lihat video Memigrasikan aplikasi MySQL/PostgreSQL dengan mudah ke layanan yang dikelola Azure. Video ini berisi demo yang menunjukkan cara memigrasikan aplikasi MySQL ke Azure Database for MySQL.

Langkah dalam melakukan replikasi di MySQL?

Langkah Replikasi Master to Master MySQL.
Sesuaikan konfigurasi masing-masing server MySQL sebagai master. ... .
2. Instal replikasi ke masing-masing server, login ke server1 sebagai root. ... .
3. Login ke master server 2 sebagai root di mysql. ... .
Kembali ke master server 1 dan setting master. ... .
Uji coba replikasi..

Apa itu replikasi MySQL?

APA ITU REPLIKASI MYSQL? Suatu teknik untuk melakukan copy dan pendistribusian data dan objek-objek database dari satu database ke databse lain yang lokasinya terpisah secara fisik. Dengan menggunakan teknik ini, data dapat didistribusikan ke lokasi yang berbeda melalui koneksi jaringan local maupun internet.

Apa tujuan dari replikasi database?

Replikasi database adalah suatu fitur teknologi pada dunia pemrograman database yang memungkinkan suatu basis data untuk mereplikasi atau mengopy datanya ke basis data lain secara otomatis.

Tuliskan apa yang dimaksud dengan replikasi basis data?

Replikasi basis data adalah proses menyalin basis data ke basis data lain yang ada di server yang sama atau server berbeda, dan mensinkronisasikan datanya untuk menjaga konsistensi. Dengan teknik replikasi ini, data dapat didistribusikan ke lokasi yang berbeda melalui jaringan lokal LAN, WAN, atau internet.