Separarea Mysql și fișierul ibdata1 de reducere, Linux rtfm, devops și administrarea sistemului

fișier ibdata1 face parte din InnoDB. și păstrează datele din tabele și indexurile acestora, precum și alte informații de serviciu.

De-a lungul timpului - acest fișier poate crește la proporții destul de obscene.

Pentru a simplifica lucrul cu acest fișier - îl puteți împărți prin crearea unui fișier separat pentru fiecare bază de date și tabele, folosind opțiunea innodb_file_per_table.

În versiunile MySQL 5.6 și mai mare, această opțiune este activată în mod implicit în vârstă - trebuie să efectuați câțiva pași suplimentari.

În acest caz, există:

Creați un director pentru backup-uri:

Creați o copie de siguranță a tuturor bazelor de date existente:

Verificați prezența sa:

Verificați cadrul existent:

Eliminați toate bazele de date, cu excepția bazei de date MySQL si information_schema:

Verificați baza rămasă:

Opriți serverul MySQL:

Ștergeți fișierele vechi:

Șterge toate fișierele jurnal ar trebui să fie - ib_logfil *.

/etc/my.cnf edita fișierul. și blocul [mysqld] adăugați linia

Aici indică faptul că InnoDB trebuie să creeze .ibd fișiere separate și .frm pentru a stoca informații și indexurile pentru fiecare tabel, în loc de ceea ce le-ar păstra într-un singur fișier.

Al doilea parametru - specifică fișierul de locație ibdata1 (deoarece calea nu este specificată - va fi folosit „magazin“ MySQL - / var / lib / mysql), cu o dimensiune inițială de 10 MB, iar creșterea automată, dacă este necesar, la un maxim de 1GB.

Când se atinge limita - se poate să crească sau să adăugați un al doilea fișier, după cum urmează:

Un tabel nativ eroare „performance_schema“. „*“ Are structura greșită până când să acorde o atenție.

Noi restabilim baza noastră de date:

Rulați mysql_upgrade. care ar genera noi baze performance_schema:

Creați un tabel nou în db_1:

Fiecare tabel este stocat într-un fișier separat.

Acum șterge baza de date:

Și verificați fișierele:

Și link-uri utile: