Podešavanja majstora
Obavezno navedite jedinstveni ID servera, putanju za binarne logove i ime baze podataka za replikaciju u sekciji [mysqld]:
server-id = 1
log-bin = /var/lib/mysql/mysql-bin
replicate-do-db = testdb
Uverite se da imate dovoljno prostora na disku za binarne logove.
Dodajemo korisnika replication, pod čijim pravima će se vršiti replikacija. Dovoljna je privilegija "replication slave ":
mysql@master> GRANT replication slave ON "testdb".* TO "replication"@"192.168.1.102" IDENTIFIED BY "password";
Restartujemo MySQL kako bi promene u konfiguraciji stupile na snagu:
root@master# service mysqld restart
Ako je sve prošlo uspešno, komanda "show master status " treba da prikaže približno sledeće:
mysql@master> SHOW MASTER STATUS\G
File: mysql-bin.000003
Position: 98
Binlog_Do_DB:
Binlog_Ignore_DB:
Vrednost position treba da raste kako se unose promene u bazu podataka na majstoru.
Podešavanja replike
Navedite ID servera, ime baze podataka za replikaciju i putanju do relay binlogova u sekciji [mysqld] konfiguracije, a zatim restartujte MySQL:
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
replicate-do-db = testdb
root@replica# service mysqld restart
Prebacivanje podataka
Ovde ćemo morati da zaključamo bazu podataka za upis. To možemo uraditi tako što ćemo zaustaviti rad aplikacija ili tako što ćemo postaviti zastavicu read_only na majstoru (pažnja: ova zastavica ne deluje na korisnike sa privilegijom SUPER). Ako imamo MyISAM tabele, izvršite i "flush tables":
mysql@master> FLUSH TABLES WITH READ LOCK;
mysql@master> SET GLOBAL read_only = ON;
Pogledajte stanje majstora komandom „show master status“ i zapamtite vrednosti File i Position (nakon uspešnog zaključavanja majstora, one ne bi trebalo da se menjaju):
File: mysql-bin.000003
Position: 98
Napravite dump baze podataka, a nakon završetka operacije skinite zaključavanje majstora:
mysql@master> SET GLOBAL read_only = OFF;
Prebacite dump na repliku i obnovite podatke iz njega.
Na kraju, pokrenite replikaciju komandama "change master to" i "start slave" i proverite da li je sve prošlo dobro:
mysql@replica> CHANGE MASTER TO MASTER_HOST = "192.168.1.101 ", MASTER_USER = "replication ", MASTER_PASSWORD = "password ", MASTER_LOG_FILE = "mysql-bin.000003 ", MASTER_LOG_POS = 98;
mysql@replica> start slave;
Vrednosti MASTER_LOG_FILE i MASTER_LOG_POS preuzimamo sa majstora.
Pogledajte kako teče replikacija komandom "show slave status ":
mysql@replica> SHOW SLAVE STATUS\G
Članak je preuzet sa habra i proveren u praksi.
Suočio sam se sa greškom [ERROR] Failed to initialize the master info structure
Rešava se: RESET SLAVE;
Drugi problem - (InnoDB tabele nisu kreirane) rešen je brisanjem logova .. 0 ..01
Ako želite da isključite određene tabele iz replikacije, upišite ih u konfiguraciju:
replicate-wild-ignore-table=base.mw_words_positions
replicate-wild-ignore-table=base.mw_sotrudniki_log
Preskakanje grešaka:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; ovo mi nije pomoglo,
ali dodavanje u my.cnf
slave-skip-errors= <kod greške ili all>
rešio je problem.
