Junior
Czym jest replikacja w kontekście baz danych?
sobes.tech AI
Odpowiedź od AI
Replikacja to proces kopiowania danych z głównej bazy danych (mastera) do jednej lub kilku innych baz danych (replik) w czasie rzeczywistym lub z niewielkim opóźnieniem.
Główne cele replikacji:
- Zwiększenie dostępności. W przypadku awarii mastera, replika może przejąć obciążenie.
- Zwiększenie szybkości odczytu. Zapytania odczytowe są rozdzielane między mastera a repliki.
- Kopia zapasowa. Replika może służyć jako aktualna kopia danych.
- Analiza. Zapytania analityczne mogą być wykonywane na replikach, nie obciążając mastera.
Typy replikacji:
- Asynchroniczna. Master nie oczekuje potwierdzenia od repliki o zastosowaniu zmian. Może wystąpić niewielkie opóźnienie danych.
- Synchroniczna. Master oczekuje potwierdzenia od repliki. Gwarantuje spójność danych, ale może spowolnić zapis na masterze.
- Semi-synchroniczna. Kompromis między asynchroniczną a synchroniczną. Master oczekuje potwierdzenia od co najmniej jednej repliki.
Przykład konfiguracji MySQL:
// my.cnf na masterze
[mysqld]
server-id = 1
log_bin = mysql-bin
// my.cnf na replikze
[mysqld]
server-id = 2
relay_log = mysql-relay-bin
read_only = 1 // Replika może być tylko do odczytu
Konfiguracja repliki:
// Na replikze
CHANGE MASTER TO
MASTER_HOST='<IP_mastrer>',
MASTER_USER='<użytkownik_repl>',
MASTER_PASSWORD='<hasło_repl>',
MASTER_LOG_FILE='<plik_binlog>', // Uzyskiwane z show master status;
MASTER_LOG_POS=<pozycja_binlog>; // Uzyskiwane z show master status;
START SLAVE;