Mysql 4

4.9.4. Actualizări jurnal binare

Jurnalul binar conține toate informațiile disponibile în jurnalul de actualizare într-un format mai eficient. De asemenea, conține informații despre timpul de execuție al fiecărei interogări care actualizează baza de date.





Nu conține informații despre interogări care nu schimbă date. Dacă trebuie să înregistrați toate cererile (de exemplu, pentru a identifica o interogare problematică), ar trebui să utilizați un jurnal comun de interogări. Vezi secțiunea 4.9.2, "Jurnal comun de interogare".







Un jurnal binar este de asemenea utilizat atunci când replicați un server slave de la master (a se vedea Secțiunea 4.10, "Replicarea în MySQL").

Când se execută cu comutatorul --log-bin [= file_name], mysqld creează un fișier jurnal care conține informații despre toate comenzile SQL de actualizare a datelor. Dacă numele fișierului nu este specificat, în mod prestabilit este dat un nume gazdă cu capăt -bin. Dacă este dat un nume de fișier care nu conține o cale către acesta, fișierul este salvat în directorul de date.

Când introduceți o extensie într-un nume de fișier (de exemplu: --log-bin = nume fișier.extensie), această extensie este ștersă fără avertisment.

La numele fișierului jurnal binar, programul mysqld adaugă o extensie specială, un număr care crește cu fiecare comandă mysqladmin refresh. mysqladmin flush-busteni. FLUSH LOGS sau reporniți serverul. Când fișierul jurnal ajunge la dimensiunea maximă specificată în parametrul max_binlog_size. una nouă este creată automat. Toate fișierele jurnal binare inactive pot fi șterse prin comanda RESET MASTER (vezi secțiunea 4.5.4, "Sintaxă pentru comanda RESET".

Următoarele setări mysqld afectează alegerea datelor care sunt scrise în jurnal.

Spune serverului principal că ar trebui să înregistreze actualizările în jurnalul binar dacă baza de date curentă (adică selectată) este "name_name". Bazele de date rămase care nu sunt marcate în mod special sunt ignorate. Rețineți că, dacă utilizați această opțiune, trebuie să efectuați actualizări numai în această bază de date. (exemplu: binlog-do-db = some_database)

Cauzează masterul să refuze actualizarea unei anumite baze de date (exemplu: binlog-ignore-db = some_database)

Pentru a putea determina ce fișiere log sunt în prezent utilizate, mysqld creează, de asemenea, un fișier index care conține numele tuturor fișierelor din lucrare. În mod prestabilit, se atribuie același nume ca fișierul jurnal, dar cu extensia .index. Numele acestui fișier poate fi modificat cu parametrul --log-bin-index = [nume fișier].

Dacă utilizați replicarea, nu este necesar să ștergeți fișierele jurnal vechi până când nu sunteți sigur că nu vor avea nevoie niciodată de o bază de date dependentă. Puteți obține acest rezultat executând comanda mysqladmin flush-logs o dată pe zi și apoi ștergând toate jurnalele create mai mult de 3 zile în urmă.

Puteți lucra cu fișierele jurnal binare utilizând programul mysqlbinlog. Pentru a actualiza MySQL în funcție de înregistrările din jurnal, puteți face acest lucru:

Folosind programul mysqlbinlog, poți citi fișiere log chiar și de la un server MySQL la distanță!

Când mysqlbinlog începe cu opțiunea --help, sunt afișate informații suplimentare despre modul de utilizare a acestui program.

Când lucrați cu setările pentru BEGIN [WORK] sau SET AUTOCOMMIT = 0, trebuie să utilizați un jurnal binar pentru copia de rezervă și nu vechiul istoric de actualizare.

Introducerea datelor în jurnalul binar are loc imediat după executarea cererii, dar înainte de deblocarea blocului. În acest fel, se asigură că jurnalul este menținut în ordinea executării interogării.

Actualizările la tabelele non-tranzacționale sunt stocate în jurnalul binar imediat după executare.

Actualizările la tabelele non-tranzacționale sunt stocate în jurnalul binar imediat după executare. Toate actualizările (UPDATE, DELETE sau INSERT) care modifică datele din tabelele de tranzacții (de exemplu, un tabel BDB) se află în memoria cache înainte de apelul COMMIT. În acest moment, mysqld scrie întreaga tranzacție în jurnalul binar înainte de executarea COMMIT. Fiecare fir de pornire va crea un tampon de dimensiune binlog_cache_size pentru a tampona cererile. Dacă cererea depășește această dimensiune, firul va deschide un fișier temporar pentru salvarea tranzacției. Fișierul temporar va fi șters la ieșirea firului.

Când porniți fiecare fir, se creează un buffer de interogare, volumul căruia corespunde valorii parametrului binlog_cache_size. Dacă cererea nu se potrivește în tampon, fluxul va crea un fișier temporar pentru memoria cache. Fișierul temporar este șters când firul se termină.

Parametrul max_binlog_cache_size (în mod implicit 4GB) vă permite să limitați cantitatea totală de memorie utilizată pentru memorarea în memorie a cererii de multitransacție. Dacă tranzacția este mai mare decât aceasta, ea va fi reintrodusă.

Dacă utilizați jurnalul de actualizare sau jurnalul binar, operațiile de inserare paralelă vor fi convertite în operații de inserare normală în comenzile CREATE. SELECTARE și INSERARE. SELECT. Acest lucru se face în mod special - pentru a asigura posibilitatea creării unei copii exacte a tabelelor prin combinarea copiei de rezervă cu jurnalul.







Articole similare

Trimiteți-le prietenilor: