Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Master Untuk Menguasai Replikasi

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa Nama Batasan Default di MySQL?

  2. mySQL - Buat Tabel Baru Menggunakan Data dan Kolom dari Tiga Tabel

  3. Bagaimana Fungsi TO_BASE64() Bekerja di MySQL

  4. Cara Mendapatkan Catatan Pertama di Setiap Grup di MySQL

  5. Dalam SQL, cara memilih 2 baris teratas untuk setiap grup