Lewati ke konten utama

Multi-Primary Replication untuk MySQL/MariaDB/Percona

Platform ini memungkinkan Anda untuk dengan mudah mengatur dua jenis replika database yang berbeda - primary-secondary dan primary-primary - untuk menyelesaikan berbagai masalah performa, mendukung backup database, mengatasi kegagalan sistem, dan banyak lagi. Informasi tentang cara mengkonfigurasi master-slave replication untuk database MySQL Anda dapat ditemukan di sini.

Dan dalam tutorial ini kami akan menjelaskan cara mengkonfigurasi master-master (multi-master) replication di MySQL, khususnya untuk diterapkan pada environments. Proses ini cukup sederhana, tetapi membutuhkan perhatian pada beberapa detail penting.

Jadi, mari kita mulai!

Buat Environments

Hal pertama yang Anda butuhkan untuk mengkonfigurasi database replication adalah, setidaknya, dua server db. Mari buat dua environments dengan instansi MySQL.

1. Masuk ke platform. Setelah dashboard Anda terbuka, klik pada Create Environment di panel atas.

create environment

2. Dengan bantuan wizard topologi yang terbuka, atur environments berikut:

  • the first master DB environment

Tambahkan server aplikasi Apache dengan dukungan PHP dan database MySQL. Atur batas cloudlet untuk setiap container. Beri nama environment Anda (misalnya, mysql-master-1) dan klik Create.

first master environment
  • the second master DB environment

Untuk membuat environment kedua (master-mysql-2) Anda akan diminta untuk mengulangi langkah-langkah pembentukan environment master-mysql-1.

Atau, Anda bisa mengkloning environment pertama, dengan menyebutkan nama yang tepat dalam kolom yang sesuai:

multi master mysql replication clone environment master environments

3. Perhatikan bahwa versi dan konfigurasi environments dapat bervariasi sesuai dengan kebutuhan Anda dan juga bergantung pada konfigurasi penyedia hosting Anda. Sebagai contoh, alih-alih menjalankan PHP Anda mungkin ingin menjalankan aplikasi Java atau Ruby. Namun demikian, referensi dalam artikel tersebut hanya boleh digunakan untuk mereplikasi server MySQL yang berjalan di platform ini.

catatan

Jika Anda ingin mereplikasi environments Anda antara penyedia hosting yang berbeda, Anda harus mengaktifkan alamat IP publik untuk node MySQL.

Konfigurasi First Master DB

Sekarang bahwa server MySQL telah terinstal dan berjalan, kita perlu mengaturnya untuk replikasi.

1. Mari mulai dengan master-mysql-1. Klik ikon MySQL Config untuk environment pertama Anda.

config first MySQL

2. Dalam Configuration manager yang terbuka, navigasikan ke file /etc/my.cnf, temukan string #skip-networking dan masukkan parameter berikut seperti di bawah ini:

server-id = 1 
binlog-do-db = example
binlog-do-db = teste
log-bin = /var/log/mysql/mysql-bin.log
auto_increment_increment= 1
auto_increment_offset = 1
first skip networking configs

Mari kita tinjau secara detail apa yang sebenarnya kita konfigurasikan dengan opsi-opsi ini:

  • server-id - opsi umum yang digunakan oleh server replikasi untuk mengidentifikasi diri mereka sendiri. Harus unik untuk setiap server.
  • bin-log-do-db = example dan bin-log-do-db = teste - memberitahu server untuk membatasi pencatatan biner ke pembaruan untuk database yang ditentukan. Catatan: database ini belum boleh dibuat. Setelah Anda merasa nyaman dengan Multi-Master Replication Anda dapat memasukkan database Anda sendiri.
  • log-bin = /var/log/mysql/mysql-bin.log - mendefinisikan apakah log biner diaktifkan atau tidak. Nilai opsi, jika diberikan, adalah basename untuk urutan log.
  • auto_increment_increment = 1 - digunakan untuk mengontrol interval antara nilai kolom yang berurutan.
  • auto_increment_offset = 1 - dalam konteks replikasi multi-master dapat digunakan untuk menghindari konflik replikasi. Dalam artikel ini, kami menetapkan nilai 1 untuk server master-mysql-1 dan 2 untuk master-mysql-2.

Kedua opsi auto_increment_increment dan auto_increment_offset dimaksudkan untuk digunakan dengan master-to-master replication dan harus diatur sesuai dengan persyaratan aplikasi Anda. Kami menyarankan agar Anda menetapkan nilai opsi auto_increment_offset sama dengan parameter server-id's satu, untuk menghindari konflik replikasi.

3. Setelah Anda selesai memodifikasi file /etc/my.cnf, cukup klik Save dan restart node MySQL di environment master-mysql-1 seperti yang ditunjukkan di bawah ini.

restart first MySQL

4. Untuk memeriksa apakah MySQL berhasil di-restart, Anda dapat menavigasikan ke tab actions yang terbuka otomatis.

first MySQL actions

Jika terjadi kesalahan selama tahap ini, ulangi prosedurnya lagi atau hubungi Dukungan Teknis Anda.

Konfigurasi Second Master DB

Sekarang saatnya untuk mulai mengatur server DB kedua (yang termasuk dalam environment master-mysql-2).

1. Buka configuration manager untuk node MySQL di environment yang sesuai.

config second server

2. Buka file yang sama /etc/my.cnf, temukan parameter #skip-networking lagi, dan tempelkan baris-baris berikut setelahnya:

server-id = 2
binlog-do-db = example
binlog-do-db = teste
log-bin = /var/log/mysql/mysql-bin.log
auto_increment_increment= 1
auto_increment_offset = 2
catatan

Kami telah mengubah nilai opsi server-id dan auto_increment_offset, karena mereka harus unik untuk setiap server.

second skip networking configs

3. Setelah Anda selesai memodifikasi, cukup klik Save dan restart MySQL node di master-mysql-2, persis seperti yang Anda lakukan untuk node di environment master-mysql-1.

4. Untuk memeriksa bahwa MySQL telah berhasil di-restart, klik pada tab actions yang muncul dan lihat hasilnya. Jika terjadi kesalahan selama tahap ini, ulangi prosedurnya lagi atau hubungi Dukungan Teknis Anda.

Mengaktifkan Replication Master-Master

Akhirnya, mari kita atur replika itu sendiri. Untuk itu, Anda harus menjalankan beberapa perintah dengan bantuan panel phpMyAdmin.

1. Klik Open in Browser untuk server MySQL di environment pertama (master-mysql-1).

open first MySQL

2. Anda akan diarahkan ke panel administrator. Masuk ke panel tersebut dengan kredensial untuk pengguna root yang Anda terima melalui email selama penciptaan environment dan navigasikan ke tab SQL. Dalam jendela yang terbuka, jalankan perintah berikut:

create user 'replicator'@'%' identified by 'password';
grant replication slave on *.* to 'replicator'@'%';
catatan

Nilai password harus diganti dengan password Anda sendiri. JANGAN gunakan nilai default - ini tidak aman.

create first replication user

Dengan cara ini, kami telah membuat pengguna replicator baru dan memberinya izin global untuk melakukan operasi replikasi.

Ingat kredensial yang Anda tentukan dan klik tombol Go di bawah.

3. Untuk memeriksa apakah konfigurasi sudah benar sejauh ini, jalankan baris ini:

show master status;

Anda harus mendapatkan hasil yang mirip dengan berikut ini:

master status first node

Ingatlah nama file binlog dan posisinya. Kami akan menggunakannya dalam konfigurasi lebih lanjut.

4. Ulangi langkah 1-3 untuk server MySQL kedua, buat pengguna dengan nama yang sama dan ingat parameter file lognya.

catatan

Jika Anda telah menggunakan pengkloningan untuk pembuatan environment kedua, kredensial untuk server MySQL-nya akan tetap sama seperti yang pertama.

5. Sekarang saatnya mengaktifkan replikasi. Buka tab SQL di panel phpMyAdmin dari server MySQL kedua (yang termasuk dalam environment master-mysql-2) dan jalankan perintah berikut:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST = 'first_server_IP', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'binlog_file_name', MASTER_LOG_POS = binlog_file_position;
START SLAVE;

di mana:

  • first_server_IP - alamat IP internal dari server MySQL di environment pertama. Jika Anda ingin mengkonfigurasi replikasi antara server dari penyedia hosting yang berbeda, Anda harus melampirkan alamat IP eksternal ke kedua node DB Anda dan menentukan salah satu dari server pertama dalam parameter ini.
catatan

Alamat IP internal/eksternal dapat dilihat dengan menekan tombol Info di sebelah server yang sesuai:

server ip1server ip2
  • password - yang Anda tentukan saat membuat pengguna DB untuk server MySQL pertama

  • binlog_file_name - nilai di kolom File dari tabel status server pertama

  • binlog_file_position - posisi file binlog dari tabel yang sama

slave at second server

6. Untuk memeriksa apakah perintah berhasil dijalankan atau tidak, jalankan perintah berikut:

show slave status;
slave status second node

7. Buka panel administrator untuk node MySQL dari environment master-mysql-1 dan jalankan baris yang sama dengan mengganti nilai parameter dengan data server DB kedua:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST = 'second_server_IP', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'binlog_file_name', MASTER_LOG_POS = binlog_file_position;
START SLAVE;

8. Periksa jika semua sudah dikonfigurasi dengan benar dengan cara yang sama:

show slave status;

Selamat! Replikasi telah berhasil diaktifkan pada kedua server.

Pengujian Replikasi

Dan akhirnya, mari kita pastikan semuanya bekerja dengan baik.

1. Masuk ke server DB pertama dan buat database example baru:

create example database

Seperti yang Anda lihat, itu sudah ditandai sebagai direplikasi dalam kolom Master replication.

catatan

Nama database baru ini sesuai dengan yang kami tentukan dalam konfigurasi server (binlog-do-db = example). Untuk penggunaan lebih lanjut, Anda dapat membuat database Anda sendiri dan mengganti nilai parameter binlog-do-db dengan namanya.

2. Sekarang, masuk ke server kedua dalam kluster MySQL Anda dan periksa database yang baru dibuat muncul dalam daftar.

Klik padanya dan tambahkan tabel baru dengan setidaknya satu kolom:

add table to database

Tentukan nilai apapun yang diinginkan dan klik Save.

set column properties

3. Kembali ke panel admin dari server MySQL pertama dan pastikan database example yang direplikasi sekarang berisi tabel jelastic.

multi master MySQL replication

Anda juga dapat melakukan beberapa tindakan lainnya (mis. mengoperasikan catatan, triggers, indeks, dll.) untuk memastikan semua data langsung direplikasi dalam kluster MySQL.

Itu sangat mudah! Nikmati keamanan data lengkap dengan hosting platform ini.

Baca Juga