Ce veți învăța
- Interpretați planurile de execuție EXPLAIN și proiectați indexuri compuse eficiente
- Configurați și ajustați parametrii critici din my.cnf pentru buffer pool și scriere pe disc
- Implementați replicare asincronă și semi-sincronă cu GTID între servere MySQL sau MariaDB
- Instalați și operați un cluster Galera cu State Snapshot Transfer prin mariabackup
- Rutați traficul de citire și scriere printr-un proxy MariaDB MaxScale sau ProxySQL
- Executați backup logic și fizic cu mysqldump, mydumper și Percona XtraBackup, inclusiv restaurare
- Realizați o recuperare la un punct exact în timp (PITR) folosind binlog-urile
- Diagnosticați deadlock-uri, replicare oprită și interogări lente cu Performance Schema și pt-query-digest
Despre curs
Cursul de MySQL și MariaDB avansat pornește de la nivelul unui administrator care știe deja să scrie interogări SQL și să instaleze un server de baze de date, și merge spre operarea unor infrastructuri de producție cu replicare, tuning fin și disponibilitate ridicată. Nu veți găsi aici capitole despre sintaxa SELECT sau despre crearea unei tabele, acestea se învață pe onseo.ro, în cursurile introductive de baze de date.
Ce acoperă
Primele capitole intră în arhitectura internă a motorului InnoDB, buffer pool, redo log, undo log și mecanismul MVCC, apoi trec la citirea planurilor de execuție cu EXPLAIN și la construirea indexurilor compuse care reduc timpul de răspuns al interogărilor. Urmează tuning-ul propriu-zis al fișierului my.cnf, cu parametri precum innodb_buffer_pool_size sau innodb_flush_log_at_trx_commit, validați apoi cu benchmark-uri sysbench.
Partea de replicare acoperă modelul asincron clasic, replicarea semi-sincronă cu pluginul rpl_semi_sync și identificatorii GTID, atât în varianta MySQL cât și în varianta specifică MariaDB. Pentru clustere multi master veți configura Galera Cluster, cu State Snapshot Transfer prin mariabackup, și veți pune în față un strat de rutare cu MariaDB MaxScale sau cu ProxySQL, care direcționează scrierile către nodul potrivit și citirile către replici.
Capitolele despre backup tratează atât metoda logică, cu mysqldump și mydumper, cât și metoda fizică, cu Percona XtraBackup, plus recuperarea la un punct exact în timp folosind binlog-urile. Un capitol separat este dedicat securității, cu autentificare, criptare TLS și plugin de audit, iar altul monitorizării cu Performance Schema și pt-query-digest din Percona Toolkit.
Abordarea practică
Fiecare capitol tehnic se încheie cu comenzi de rulat pe un server real, nu doar cu explicații teoretice. Laboratorul final vă cere să ridicați un cluster Galera cu trei noduri, să adăugați o replică asincronă separată pentru rapoarte, să instalați ProxySQL sau MaxScale în față, să simulați căderea unui nod și să verificați că failover-ul are loc automat, apoi să testați o restaurare completă dintr-un backup XtraBackup.
Pentru cine este cursul
Este potrivit pentru administratori de sistem și ingineri de infrastructură care operează deja servere MySQL sau MariaDB în producție și au nevoie de replicare fiabilă, tuning corect și un plan de failover testat. Nu este potrivit pentru cineva care nu a scris încă o interogare SQL sau care caută o introducere în baze de date relaționale, pentru asta există materialele introductive de pe onseo.ro. Ca la toate cursurile, prima lecție este gratuită, progresul se salvează în cont, iar testul final grilă are un prag de promovare de 70% pentru certificatul cu cod public de verificare.
Pentru cine este cursul
Administratori de sistem, DBA juniori care vor să avanseze, ingineri DevOps și freelanceri care administrează servere MySQL sau MariaDB în producție.
Pentru cine nu este
Persoane care nu au scris încă interogări SQL sau caută o introducere în baze de date relaționale; pentru bază, consultați materialele introductive de pe onseo.ro.
Ce trebuie să știți înainte
Cunoștințe de bază SQL (SELECT, JOIN, tranzacții), experiență cu linia de comandă Linux și acces la un server sau la mașini virtuale pentru laborator, recomandat minimum 3 noduri cu 2 GB RAM fiecare.
Ce veți putea face după curs
- Puteți administra o instanță MySQL sau MariaDB de producție cu încredere în parametrii de configurare
- Puteți pune în funcțiune replicare GTID între un server sursă și una sau mai multe replici
- Puteți construi și opera un cluster Galera cu rutare prin ProxySQL sau MaxScale
- Puteți implementa o strategie de backup completă, cu recuperare la un punct exact în timp
- Puteți diagnostica și rezolva incidente frecvente de blocaje, replicare oprită sau interogări lente
- Puteți pregăti și testa un plan de failover pentru o infrastructură de baze de date critică
Cuprins
1. Arhitectura internă InnoDB
- Structura fișierelor InnoDB: ibdata1, ib_logfile și tablespace per tabelă cu innodb_file_per_table gratuit
- Buffer pool: pagini, lista LRU, lista flush și instanțe multiple cu innodb_buffer_pool_instances3 min
- Redo log și doublewrite buffer, garanția de durabilitate cu innodb_flush_log_at_trx_commit3 min
- Undo log și MVCC, citiri consistente fără blocaje prin read view și thread-ul de purge3 min
- Tranzacții și niveluri de izolare, diferența dintre REPEATABLE READ și READ COMMITTED3 min
- Analiza blocajelor cu SHOW ENGINE INNODB STATUS și information_schema.innodb_trx3 min
- Diferențe de arhitectură între InnoDB și motoarele Aria și MyRocks din MariaDB3 min
2. Indexare avansată și planuri de execuție
- Tipuri de indexuri: B tree, hash pentru tabele Memory, full text și spatial4 min
- Indexuri compuse și regula prefixului din stânga (leftmost prefix) pentru ordinea coloanelor3 min
- Indexuri acoperitoare (covering index) și citirea datelor direct din index3 min
- Citirea EXPLAIN și EXPLAIN ANALYZE: coloanele type, key, rows și Extra3 min
- Optimizer trace și histograme de statistici cu ANALYZE TABLE UPDATE HISTOGRAM3 min
- Rescrierea interogărilor lente cu subselecte, JOIN și funcții window3 min
- Capcane frecvente: funcții aplicate pe coloana indexată și wildcard la începutul unui LIKE3 min
- Exercițiu ghidat: identificarea și corectarea a cinci interogări cu indexare greșită3 min
3. Tuning motor de stocare și configurare my.cnf
- Dimensionarea innodb_buffer_pool_size în funcție de memoria RAM disponibilă pe server3 min
- Parametri de scriere pe disc: innodb_log_file_size, innodb_flush_method, innodb_io_capacity3 min
- Query cache: de ce a fost eliminat din MySQL 8 și cum se folosește încă în MariaDB3 min
- Conexiuni și thread-uri: max_connections, thread_cache_size și thread pool în MariaDB3 min
- Structura fișierului my.cnf, secțiunile [mysqld] și [client], includerea din /etc/mysql/conf.d3 min
- Ajustarea parametrilor la cald cu SET GLOBAL și persistența lor cu SET PERSIST în MySQL 83 min
- Validarea modificărilor de configurare cu un benchmark sysbench înainte și după3 min
4. Replicare asincronă în MySQL și MariaDB
- Configurarea serverului sursă: log_bin, server_id și formatul binlog_format3 min
- Crearea unui utilizator dedicat de replicare și clonarea datelor cu mysqldump --single-transaction3 min
- Configurarea replicii cu CHANGE MASTER TO, respectiv CHANGE REPLICATION SOURCE TO3 min
- Formate de binlog STATEMENT, ROW și MIXED și implicațiile lor asupra consistenței datelor3 min
- Monitorizarea întârzierii de replicare cu SHOW REPLICA STATUS și Seconds_Behind_Source3 min
- Replicare filtrată cu replicate-do-db și replicate-ignore-table3 min
- Diagnosticarea unei replici oprite pe eroare SQL și repornirea cu SQL_SLAVE_SKIP_COUNTER4 min
5. Replicare semi-sincronă și GTID
- Diferența între replicare asincronă, semi-sincronă și sincronă și impactul asupra latenței4 min
- Activarea pluginului rpl_semi_sync_source și rpl_semi_sync_replica și parametrul de timeout3 min
- GTID în MySQL: gtid_mode, enforce_gtid_consistency și gtid_executed3 min
- GTID în MariaDB: gtid_domain_id, gtid_strict_mode și diferențele față de MySQL3 min
- Failover simplificat cu GTID folosind MASTER_AUTO_POSITION=13 min
- Replicare multi sursă (multi source replication) în MariaDB pentru consolidarea mai multor servere3 min
- Rezolvarea conflictelor de GTID și repararea cu gtid_purged3 min
6. Galera Cluster pentru MariaDB
- Arhitectura Galera: replicare sincronă multi master bazată pe certificare de tranzacții3 min
- Instalarea MariaDB Galera Cluster și configurarea wsrep_cluster_address3 min
- Pornirea inițială a clusterului cu galera_new_cluster și verificarea stării wsrep_cluster_size3 min
- State Snapshot Transfer (SST) cu rsync și cu mariabackup pentru sincronizarea nodurilor noi3 min
- Detectarea și rezolvarea conflictelor de certificare la scrieri concurente pe noduri diferite3 min
- Adăugarea și scoaterea unui nod din cluster fără întreruperea serviciului3 min
- Limitările Galera: tabele fără cheie primară, comenzi DDL blocante și dimensiunea tranzacțiilor4 min
7. MariaDB MaxScale, proxy și rutare
- Rolul MaxScale ca proxy inteligent între aplicație și clusterul de baze de date4 min
- Instalarea MaxScale și structura fișierului de configurare maxscale.cnf3 min
- Monitorul mariadbmon pentru replicare clasică și galeramon pentru cluster Galera3 min
- Rutare citire și scriere cu modulul readwritesplit3 min
- Failover automat gestionat de MaxScale prin auto_failover și auto_rejoin3 min
- Autentificare și limitare de conexiuni configurate direct în MaxScale4 min
- Testarea rutării și a stării nodurilor cu utilitarul maxctrl3 min
8. Backup logic cu mysqldump și mydumper
- Backup complet cu mysqldump --single-transaction --routines --triggers3 min
- Backup doar de structură față de backup cu date, folosind opțiunea --no-data3 min
- Restaurarea selectivă a unei singure tabele dintr-un dump complet4 min
- Backup paralel și mai rapid cu mydumper și restaurare cu myloader3 min
- Automatizarea backup-urilor cu cron și rotația fișierelor mai vechi de o săptămână3 min
- Verificarea integrității unui backup printr-o restaurare de test pe server separat3 min
9. Backup fizic cu Percona XtraBackup
- Diferența dintre backup logic și backup fizic la nivel de fișiere InnoDB3 min
- Instalarea Percona XtraBackup și cerințele de acces la directorul de date3 min
- Backup complet cu xtrabackup --backup --target-dir3 min
- Backup incremental cu --incremental-basedir față de ultimul backup complet3 min
- Pregătirea backupului pentru restaurare cu comanda --prepare3 min
- Restaurarea rapidă cu --copy-back sau cu --move-back3 min
- Backup la cald, fără blocarea scrierilor, pe un server activ de producție4 min
10. Recuperare la un punct în timp (PITR) cu binlog
- Rolul binlog-ului în recuperarea la un moment exact anterior unui incident3 min
- Activarea și rotația binlog-urilor cu expire_logs_days și max_binlog_size3 min
- Combinarea unui backup complet cu binlog-urile generate ulterior3 min
- Extragerea evenimentelor cu mysqlbinlog și filtrarea pe interval de timp3 min
- Recuperarea după o ștergere accidentală provocată de un DELETE fără clauza WHERE4 min
- Testarea unui scenariu complet de PITR pe un server separat, izolat de producție4 min
11. Înaltă disponibilitate și failover automat
- Definirea RPO și RTO pentru o bază de date de producție înainte de a alege o soluție3 min
- Failover manual controlat: promovarea unei replici la rolul de sursă3 min
- Failover automat cu MHA (Master High Availability) pentru topologii MySQL clasice3 min
- Failover automat cu MariaDB MaxScale, revizitat din perspectiva disponibilității3 min
- Virtual IP și keepalived pentru comutarea transparentă a conexiunilor aplicației3 min
- Split brain: cauzele apariției și prevenirea prin mecanisme de quorum4 min
- Exercițiu controlat de failover cu măsurarea timpului real de indisponibilitate4 min
12. ProxySQL pentru rutare și balansare
- Arhitectura ProxySQL: interfața de administrare pe portul 6032 și interfața de date pe 60333 min
- Configurarea mysql_servers și a grupurilor de hosturi writer și reader3 min
- Reguli de rutare a interogărilor cu tabela mysql_query_rules3 min
- Cache la nivel de proxy pentru interogările repetitive de citire3 min
- Monitorizarea stării serverelor din ProxySQL cu monitor_username3 min
- Integrarea ProxySQL cu replicare GTID pentru rutare automată după un failover3 min
13. Securitate, autentificare și audit
- Principiul privilegiului minim: comenzi GRANT specifice pe bază de date și pe tabelă3 min
- Pluginuri de autentificare: caching_sha2_password față de mysql_native_password3 min
- Criptarea conexiunilor cu TLS și forțarea ei cu require_secure_transport3 min
- Criptarea datelor la repaus pentru tablespace InnoDB, cu gestionarea cheilor (keyring)3 min
- Auditul acțiunilor din baza de date cu MariaDB Audit Plugin sau cu Percona Audit Log3 min
- Eliminarea utilizatorilor anonimi și a bazei de date test la instalarea inițială3 min
- Configurarea sql_mode STRICT și folosirea consistentă a interogărilor pregătite3 min
14. Monitorizare cu Performance Schema și pt-query-digest
- Activarea și interpretarea Performance Schema, în special events_statements_summary_by_digest3 min
- Identificarea interogărilor lente cu slow query log și parametrul long_query_time3 min
- Analiza jurnalului de interogări lente cu pt-query-digest din Percona Toolkit3 min
- Monitorizare în timp real cu SHOW PROCESSLIST și information_schema.PROCESSLIST3 min
- Integrare cu Prometheus prin mysqld_exporter și un tablou de bord Grafana3 min
- Alertare pe metrici critice: replicare oprită, buffer pool saturat, conexiuni epuizate3 min
15. Depanare și greșeli frecvente în producție
- Deadlock-uri: citirea secțiunii LATEST DETECTED DEADLOCK din SHOW ENGINE INNODB STATUS3 min
- Identificarea sesiunii care blochează o tabelă și eliberarea ei controlată3 min
- Corupție de tabelă, diagnosticare cu CHECK TABLE și reparare cu REPAIR TABLE3 min
- Creșterea necontrolată a binlog-urilor și epuizarea spațiului liber pe disc3 min
- Greșeala clasică a unui ALTER TABLE blocant pe o tabelă mare, evitată cu pt-online-schema-change3 min
- Migrarea greșită de la MyISAM la InnoDB fără test de sarcină în prealabil3 min
- Configurare greșită de character set și collation care rupe compararea corectă a textului3 min
16. Laborator final: cluster replicat cu failover
- Pregătirea a trei mașini virtuale sau containere pentru laboratorul complet3 min
- Instalarea și configurarea unui cluster Galera funcțional cu trei noduri3 min
- Adăugarea unei replici asincrone separate, dedicate rapoartelor3 min
- Instalarea ProxySQL sau MaxScale în fața clusterului pentru rutare automată3 min
- Simularea căderii unui nod și verificarea failover-ului automat prin proxy3 min
- Executarea unui backup complet cu Percona XtraBackup și restaurare pe un nod nou3 min
- Test final de încărcare cu sysbench și verificarea integrității datelor pe toate nodurile3 min
- Documentarea arhitecturii finale și a procedurii de recuperare în caz de dezastru3 min
Dorel Tănase, fondatorul agenției GOAI din Alba Iulia. În mediul online din 1997, în optimizare SEO din 2007. Cursul pornește de la situații întâlnite în lucrul cu clienți din România și este actualizat pe măsură ce uneltele se schimbă. Experiența autorului.
24 august 2026
Întrebări frecvente despre curs
Am nevoie de experiență cu MySQL sau MariaDB înainte de acest curs?
Da. Cursul presupune că știți deja să scrieți interogări SQL și să administrați un server de baze de date la nivel de bază. Capitolele pornesc direct de la arhitectura InnoDB și de la tuning, nu de la sintaxa SQL.
Lucrez cu MySQL, nu cu MariaDB. Este util cursul?
Da. Majoritatea capitolelor, precum InnoDB, indexarea, replicarea, backup-ul și tuning-ul, se aplică identic pe MySQL și pe MariaDB. Capitolele despre Galera Cluster și MaxScale sunt specifice ecosistemului MariaDB, dar conceptele de cluster multi master rămân valabile și dacă folosiți Percona XtraDB Cluster pe MySQL.
Ce resurse îmi trebuie pentru laboratorul final?
Recomandăm minimum trei mașini virtuale sau containere, fiecare cu cel puțin 2 GB RAM, pentru a ridica un cluster Galera funcțional. Puteți folosi VirtualBox, Proxmox sau un furnizor cloud cu instanțe mici.
Certificatul de la finalul cursului este recunoscut oficial?
Certificatul confirmă parcurgerea cursului și promovarea testului final grilă cu un prag de 70%, are un cod public de verificare, dar nu este o diplomă a Ministerului Educației și nu înlocuiește o certificare ANC.
Cursuri din aceeași categorie