Database Replication
Baze de DateDatabase replication (replicarea bazei de date) este procesul de copiere și sincronizare automată a datelor între mai multe servere de baze de date. Configurația cea mai comună este master-slave, unde un server principal primește scrierile, iar serverele secundare preiau copii pentru citire. Replicarea asigură disponibilitate ridicată, backup în timp real și distribuirea încărcării.
Replicarea bazelor de date este o tehnologie esențială pentru site-uri web și aplicații care necesită disponibilitate ridicată, performanță la citire și protecție împotriva pierderii datelor. Prin menținerea mai multor copii sincronizate ale bazei de date, replicarea elimină punctul unic de eșec.
Arhitectura clasică de replicare este master-slave (sau primary-replica). Serverul master procesează toate operațiile de scriere (INSERT, UPDATE, DELETE) și înregistrează modificările într-un log binar. Serverele slave citesc acest log și aplică modificările pentru a-și menține datele sincronizate. Aplicația este configurată să trimită scrierile la master și citirile la slave-uri, distribuind astfel încărcarea.
Replicarea asincronă este cea mai comună formă: slave-urile aplică modificările cu o mică întârziere față de master. Aceasta oferă performanță bună dar poate cauza citiri inconsistente (un utilizator scrie pe master dar citește de pe un slave care nu a aplicat încă modificarea). Replicarea semi-sincronă și sincronă reduce această problemă, dar cu un cost de performanță la scriere.
În MySQL/MariaDB, configurarea replicării implică activarea binary log-ului pe master, crearea unui utilizator dedicat pentru replicare și configurarea fiecărui slave cu coordonatele masterului. GTID (Global Transaction ID) simplifică gestionarea replicării prin identificarea unică a fiecărei tranzacții, eliminând necesitatea de a urmări pozițiile în log-ul binar.
Beneficiile practice ale replicării includ backup fără impact asupra performanței (se face backup pe un slave, nu pe master), disaster recovery (dacă masterul cade, un slave poate fi promovat), scalarea citirilor (distribuie interogările SELECT pe multiple slave-uri) și separarea sarcinilor (rapoarte și analize pe slave, fără a afecta aplicația de producție).