1. Glosar/

Binlog

Binary Log

Binlog-ul (Binary Log) este registrul secvențial pe care MySQL îl menține pe master pentru a urmări fiecare operațiune care modifică date. Slave-ul îl citește pentru a ști exact ce să replice și în ce ordine. Fără Binlog nu există replicare, iar fără replicare nu există înaltă disponibilitate sau disaster recovery pe MySQL.

Cum funcționează #

Fiecare COMMIT scrie unul sau mai multe evenimente în Binlog, în funcție de formatul configurat:

  • ROW: înregistrează rândurile efectiv modificate (imaginea before/after). Mai verbose, dar complet determinist.
  • STATEMENT: înregistrează interogarea SQL ca text. Compact, dar funcțiile nedeterministe (NOW(), UUID()) pot provoca divergențe între master și slave.
  • MIXED: MySQL alege automat ROW sau STATEMENT pentru fiecare instrucțiune.
-- Verificarea formatului activ
SHOW VARIABLES LIKE 'binlog_format';

-- Inspectarea evenimentelor dintr-un fișier binlog
SHOW BINLOG EVENTS IN 'mysql-bin.000042' LIMIT 20;

Slave-ul își urmărește poziția curentă în Binlog prin numele fișierului și offset (replicare clasică) sau prin GTID (Global Transaction Identifier), ceea ce simplifică semnificativ failover-ul.

Când contează #

Binlog-ul este activ ori de câte ori replicarea este activată, dar este consumat și de instrumente CDC precum Debezium pentru a captura modificările și a alimenta pipeline-uri de streaming. Necesită monitorizare: un Binlog care crește fără a fi consumat de slave este un indicator direct al întârzierii replicării. Retenția se controlează prin binlog_expire_logs_seconds (MySQL 8) sau expire_logs_days (versiuni anterioare).