Replikacja.

1) Konfiguracja wykonywana na serwerze master (głównym):
a) Ustawiamy odpowiednie opcje w pliku konfiguracyjnym:
vi /etc/my.cnf
# unikalny identyfikator serwera. Master ma id = 1 (powinno być to domyślne ustawienie).
server-id = 1
#zapisywanie zmian w bazie danych – log binarny z którego będzie korzystać maszyna slave.
log_bin=mysql-bin
#format zapisu logów binarnych.
binlog_format=mixed
 #maksymalny rozmiar dziennika logów (20M)
max_binlog_size=20M
Zapisz zmiany.
b) Dodajemy użytkownika z uprawnieniami replikacji.
Logujemy się do serwera bazy danych: mysql –u root –p
Wykonujemy poniższe 2 zapytania:
CREATE USER 'repuser'@'%' IDENTIFIED BY 'Tebik1234';
GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'%';
c) restart usługi mysql: systemctl restart mysql.service

2) Konfiguracja wykonywana na serwerze slave (zapasowym):
Przetestujmy możliwość logowania na serwer master: 
mysql –u repuser –h ip_serwera_master –p
Jeżeli logowanie da poprawny rezultat wychodzimy z mysql wpisując: quit.
a) Ustawiamy odpowiednie opcje w pliku konfiguracyjnym:
vi /etc/my.cnf
# unikalny identyfikator serwera. Slave id > 1.
server-id = 2
b) restart usługi mysql: systemctl restart mysql.service

3) Wracamy na serwer główny (master).
a) logujemy się do mysql: mysql –u root –p
b) blokujemy (na chwilę) możliwość edycji rekordów, aby zrzucić bazę danych do pliku:
FLUSH TABLES WITH READ LOCK;
c) sprawdzam status serwera master:
SHOW MASTER STATUS;
Zapamiętaj / zapisz wartość pozycji "File" oraz "Position". Te dane będą za chwilę potrzebne do dalszej konfiguracji serwera slave.
d) robimy zrzut baz danych: mysqldump –add-drop-table –master-data –p –all-databases > /tmp/baza.sql
e) odblokujmy możliwość edycji tabel w bazie danych:
unlock tables;

4) Wracamy na serwer slave (zapasowy).
a) pobierz plik zawierający pełną kopię bazy danych z serwera master, np.:
scp ip_serwera_master:/tmp/baza.sql /tmp/
b) logujemy się do bazy mysql: mysql –u root –p
stopujemy proces o nazwie slave: stop slave;
zaczytujemy dane z kopii: source /tmp/baza.sql
wprowadzam dane serwera master: 
change master to master_host=’ip_serwera_master’, master_user=’repuser’, master_password=’Tebik1234’, master_log_file=’mysql-bin.000001’, master_log_pos=417;
Dwie ostatnie informacje powinieneś mieć zapisane (punkt 3, podpunkt c).
Uruchamiamy proces slave: start slave;
Sprawdzam status: show slave status;
Zmienna Slave_IO_Running powinna mieć wartość Connecting, a Slave_SQL_Running: Yes.

5) Przetestuj poprawność replikacji
Np. stwórz nową bazę danych na serwerze master, dodaj rekordy do już istniejącej tabeli itd. Wszystkie operacje powinny zostać automatycznie odwzorowane na serwerze slave.

UWAGA ! Replikacja nie zwalnia administratora od obowiązku systematycznego tworzenia kopii bezpieczeństwa. Przypadkowe usunięcie danych na serwerze master spowoduje wykonanie identycznej operacji na serwerze slave. Należy o tym pamiętać.
 

Przewijanie do góry