MySQL , este o baza de date open source dezvoltata de Oracle. Fiecare noua versiune majora a MySQL necesita timp si efort semnificativ pentru a migra sarcinile de lucru. Ultima versiune majora utilizata de Facebook este MySQL 5.6.
Provocarile migrarii includ:
- Portarea caracteristicilor la noua versiune
- Asigurarea replicarii este compatibila intre versiunile majore
- Minimizarea modificarilor necesare pentru interogarile de aplicatie existente
- Remedierea regresiilor de performanta care impiedica serverul sa sustina sarcinile de lucru
Aceasta versiune de MySQL include functii noi, cum ar fi replicarea paralela bazata pe writeet si un dictionar de date tranzactionale cu suport DDL atomic.
Facebook team: Versiunea 5.6 se apropia de sfârsitul vietii si am vrut sa ramânem activi in comunitatea MySQL, mai ales cu munca noastra pe motorul de stocare MyRocks. Îmbunatatirile din 8.0, cum ar fi DDL, ar putea accelera modificarile schemei MyRocks, dar trebuie sa fim in baza de cod 8.0 pentru ao utiliza. Având in vedere avantajele actualizarii codului, am decis sa migram la 8.0. Împartasim modul in care am abordat proiectul nostru de migratie 8.0 - si câteva dintre surprizele pe care le-am descoperit in acest proces.
Grupam mai multe instante mysqld intr-un singur set de replici MySQL. Fiecare instanta dintr-un set de replici contine aceleasi date, dar este distribuita geografic la un centru de date diferit pentru a oferi disponibilitatea datelor si suport pentru failover. Fiecare set de replici are o instanta principala. Restul instantelor sunt toate secundare. Primarul gestioneaza tot traficul de scriere si replica datele in mod asincron tuturor secundare.
Fiecare set de replici poate trece in mod independent prin fiecare dintre pasii de mai sus si poate ramâne pe un pas atât timp cât este necesar. Am separat seturile de replici in grupuri mult mai mici, pe care le-am pastrat in fiecare tranzitie. Daca am gasi probleme, am putea reveni la pasul anterior. În unele cazuri, seturile de replici au reusit sa ajunga la ultimul pas inainte ca altele sa inceapa.
Pentru a automatiza tranzitia unui numar mare de seturi de replici, a trebuit sa construim o noua infrastructura software. Am putea grupa seturi de replici impreuna si le putem deplasa prin fiecare etapa prin simpla schimbare a unei linii dintr-un fisier de configurare. Orice set de replici care a intâmpinat probleme ar putea fi apoi redus individual.
MySQL 8.0 reuneste caracteristicile NoSQL si modelul bazei de date relationale intr-un singur model hibrid. Aceasta combina beneficiile NoSQL, cum ar fi agilitatea, scalabilitatea si viteza mare, cu avantajele bazelor de date relationale, cum ar fi consistenta garantata intre entitati. Toate acestea sunt prioritati ale dezvoltatorilor moderni si nativi din cloud. Ei pot continua sa construiasca aplicatii traditionale de baze de date relationale; si cu MySQL 8.0, poate crea, de asemenea, aplicatii de baze de date de documente fara schema (NoSQL) - utilizând produse de la un singur furnizor.
Printre numeroasele caracteristici pivot MySQL 8.0 conduse de dezvoltatori si DBA se numara functiile de ferestre, care sunt promovate ca fiind una dintre cele mai „cool” noi adaugiri. Functiile ferestrei colecteaza un grup de rezultate intr-un set de rânduri si apoi returneaza un singur set de valori agregate. Utilizarea functiilor de fereastra pentru aplicatiile care necesita analize si interogari care implica clasarea pe grupe sau compararea informatiilor modifica viata pentru dezvoltatori si DBA.