Sobes.tech
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;