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.
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.
- 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:
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.
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.
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
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.
4. Untuk memeriksa apakah MySQL berhasil di-restart, Anda dapat menavigasikan ke tab actions yang terbuka otomatis.
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.
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
Kami telah mengubah nilai opsi server-id dan auto_increment_offset, karena mereka harus unik untuk setiap server.
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).
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'@'%';
Nilai password harus diganti dengan password Anda sendiri. JANGAN gunakan nilai default - ini tidak aman.
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:
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.
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.
Alamat IP internal/eksternal dapat dilihat dengan menekan tombol Info di sebelah server yang sesuai:
-
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
6. Untuk memeriksa apakah perintah berhasil dijalankan atau tidak, jalankan perintah berikut:
show slave status;
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:
Seperti yang Anda lihat, itu sudah ditandai sebagai direplikasi dalam kolom Master replication.
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:
Tentukan nilai apapun yang diinginkan dan klik Save.
3. Kembali ke panel admin dari server MySQL pertama dan pastikan database example yang direplikasi sekarang berisi tabel jelastic.
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.