Replikasi digunakan untuk menyinkronkan dua atau lebih database dengan mereplikasi baik DML/pernyataan yang dieksekusi atau perubahan kumpulan data dari server master ke satu atau beberapa server budak.
Ada tiga metode pencatatan data untuk replikasi:Replikasi berbasis pernyataan (SBR) mereplikasi pernyataan SQL yang mengubah data. Replikasi berbasis baris (RBR) hanya mereplikasi baris yang diubah. Replikasi berbasis campuran (MBR) adalah replikasi berbasis pernyataan dan replikasi berbasis baris. Sebelumnya untuk semua versi mysqld, replikasi berbasis pernyataan adalah metode default offlogging. Hampir semua mesin penyimpanan mendukung ketiga pendekatan untuk mencatat data.
Replikasi MySQL Master-Master meningkatkan sistem dan meningkatkan kinerja dengan mengurangi overhead cadangan dan menyediakan redundansi untuk aplikasi aktif. Jika Anda tidak mengerti apa itu, Ini seperti dua server MySQL yang saling memperbarui. Dengan replikasi, dua server MySQL terpisah bertindak sebagai sebuah cluster. Pengelompokan basis data terutama cocok untuk konfigurasi aplikasi ketersediaan tinggi
Replikasi master/master dicapai dengan menyiapkan ServerA untuk menjadi budak dari ServerB dan menyiapkan ServerB untuk menjadi budak dari ServerA.
Asumsi: Artikel ini tidak memberikan langkah-langkah untuk instalasi server MySQL, saya berasumsi bahwa server Mysql (single instance) telah diinstal pada kedua server:
Untuk mengkonfigurasi master MySQL untuk menguasai replikasi di Server Linux kita membutuhkan dua server, informasinya seperti berikut:
server A :192.168.1.2
server B: 192.168.1.3
OS: RHL 6.4 x86_64
Server MySQL: 5.6.17 x86_64
Prapemeriksaan:
Nonaktifkan firewall di kedua server:
service iptables stop chkconfig iptables off service iptables status
Kedua server harus dapat diakses satu sama lain, Untuk memeriksa aksesibilitas ping setiap server.
Komentari atribut bind-address atau setel ke (bind-address=0.0.0.0) di file my.sandbox.cnf atau my.cnf di kedua server. Saya telah menyebutkan my.sandbox.cnf, ini jika Anda menggunakan MySQL::Sandbox
Pertama, kita akan mengaktifkan replikasi dari server B ke A
LANGKAH 1:
ON server A:192.168.1.2
edit my.sandbox.cnf atau my.cnf dan tambahkan nilai di bawah ini server-id harus> 0; jika Anda tidak tahu lokasi file my.cnf gunakan perintah ini di os shell “mysql –help | grep my.cnf”, biasanya my.cnf ada di direktori /etc/
server-id=1 replicate-same-server-id=0 auto-increment-increment=2 auto-increment-offset=1 relay-log=serverA-relay-bin relay-log-index=serverA-relay-bin.index master-info-file=mysqk-master.info relay-log-info-file=serverA-relay-log.info log-bin=mysql-bin
ON server B:192.168.1.3
edit my.sandbox.cnf atau my.cnf dan tambahkan nilai di bawah ini server-id harus> 0;
server-id=2 replicate-same-server-id=0 auto-increment-increment=2 auto-increment-offset=2 relay-log=serverB-relay-bin relay-log-index=serverB-relay-bin.index master-info-file=mysqk-master.info relay-log-info-file=serverB-relay-log.info log-bin=mysql-bin
LANGKAH 2:
ON server A:192.168.1.2
create user 'syncstndby' identified by 'warsaw'; grant replication slave on *.* to 'syncstndby'@'192.168.1.3' identified by 'warsaw'; flush privileges;
Di server B:192.168.1.3
create user 'syncstndby' identified by 'warsaw'; grant replication slave on *.* to 'syncstndby'@'192.168.1.2' identified by 'warsaw'; flush privileges;
LANGKAH 3:
PADA SERVER B:192.168.1.3
mysql > SHOW GLOBAL VARIABLES LIKE 'PORT'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 5617 | +---------------+-------+ 1 row in set (0.00 sec) mysql > show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 423 | | | | +------------------+----------+--------------+------------------+-------------------+
PADA SERVER A:192.168.1.2
CHANGE MASTER TO MASTER_HOST='192.168.1.3', MASTER_USER='syncstndby', MASTER_PASSWORD='warsaw', MASTER_PORT= 5617, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=423;
Sekarang Anda akan berpikir dari mana saya memilih nilai untuk atribut ini, jangan khawatir saya menjelaskannya, Pilih nilai MASTER_PORT dari kueri di atas (TAMPILKAN VARIABEL GLOBAL SEPERTI 'PORT') dalam hal ini, port kami adalah 5617 , Pilih nilai MASTER_LOG_FILE dari kolom File pada query di atas (“show master status;”) yaitu Mysql-bin.000002), Pilih nilai MASTER_LOG_POS dari posisi kolom pada query di atas yaitu 423)
LANGKAH 4:
Sekarang Anda dapat memulai budak
mysql>start salve: mysql> show slave status \G;
SEKARANG replikasi dari B ke A telah diaktifkan
LANGKAH 5
Pada langkah ini kita akan menguji replikasi dari server B ke A:
ON MASTER (server B):192.168.1.3
show schemas; create database reptest; create table reptest.simples (id int not null primary key) ; insert into reptest.simples values (999),(1),(2),(3);
DI BUDAK:192.168.1.2 (server A)
show schemas; use reptest; select * from reptest.simples;
Sekarang kita akan mengaktifkan replikasi dari server A ke B
LANGKAH 6:
PADA SERVER A:192.168.1.2
mysql > SHOW GLOBAL VARIABLES LIKE 'PORT'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 5617 | +---------------+-------+ 1 row in set (0.00 sec) mysql > show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000004 | 120 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
PADA SERVER B:192.168.1.3
CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_USER='syncstndby', MASTER_PASSWORD='warsaw', MASTER_PORT= 5617, MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=120;
Pilih nilai MASTER_PORT dari kueri di atas (SHOW GLOBAL VARIABLES LIKE 'PORT') dalam hal ini, port kami adalah 5617, Pilih nilai MASTER_LOG_FILE dari kolom File dalam kueri di atas (“show master status;”) yaitu Mysql-bin .000004), Pilih nilai MASTER_LOG_POS dari posisi kolom pada query di atas yaitu 120)
Sekarang Anda dapat memulai budak
mysql> show slave status \G; mysql>start salve: mysql> show slave status \G;
LANGKAH 7
OK jadi lingkungan kita sudah diatur, Sekarang kita akan menguji apakah lingkungan kita berfungsi atau tidak.
AKTIF 192.168.1.2 (server A)
insert into reptest.simples values (777),(41),(15),(61);
Di sini kita belum membuat tabel sederhana di DB name reptest karena sudah direplikasi ke server A saat membuat DB reptest dan tabel di server B.
AKTIF 192.168.1.3 (Server B)
use reptest; select * from reptest.simples;
Hore!! Anda dapat melihat bahwa semua telah diatur dan replikasi Master ke Master kami telah diatur.
PERINGATAN: Tidaklah cerdas jika aplikasi Anda menjalankan DML di kedua server secara bersamaan. Menulis ke kedua server secara bersamaan membuat failover cepat yang cukup tahan lama untuk ketersediaan tinggi tetapi tidak memiliki peningkatan kinerja. Kedua server harus menjalankan semua DML, apakah DML datang langsung dari klien atau datang melalui replikasi