Baza de date - cum să redenumiți rapid baza de date MySQL (schimbarea numelui de schemă)

Pentru InnoDB, se pare a fi de lucru următoarele: Crearea unei noi baze de date gol, și apoi redenumiți fiecare tabel la rândul său, într-o nouă bază de date:

După aceea, va trebui să se adapteze rezoluția.

Pentru scripturi shell, puteți utiliza una dintre următoarele:

Notă: între opțiunea -p și parola este nici un spațiu. În cazul în care baza de date nu are o parolă, ștergeți unele -ppassword nume de utilizator -u.

În plus, dacă aveți o procedură stocată, le puteți copia mai târziu:

Cred că soluția este mai simplă și a fost sugerat de către unii dezvoltatori. Pentru acest phpMyAdmin efectuează.

Din phpMyAdmin, selectați baza de date pe care doriți să îl selectați. Tab-urile au un singur nume, „Operațiunea“, du-te pentru a redenumi secțiunea. Asta e tot.

El, ca și mulți alții, creează o nouă bază de date cu un nume nou, elimină toate tabelele bazei de date vechi la noua bază de date și șterge baza de date veche.

launchctl unload -w

# 47; Biblioteca # 47; LaunchAgents # 47; homebrew.mxcl.mysql.plist cd # 47; usr # 47; locală # 47; var # 47; mysql mv vechi nume nou nume de sarcină launchctl -w

Ei bine, există 2 metode:

Metoda 1: Metoda cunoscută de redenumirea unei scheme de baze de date - un circuit de resetare prin mysqldump și recuperarea acestuia în celălalt sistem, și apoi eliminarea vechiul sistem (dacă este necesar).

În ciuda faptului că metoda de mai sus este simplu, timp și spațiu. Ce ar trebui să fac în cazul în care circuitul este mai mare de 100 GB?. Există metode prin care puteți combina comanda de mai sus împreună pentru a le păstra în spațiu, dar nu economisi timp.

Pentru a remedia astfel de situații, există o altă modalitate rapidă de a redenumi scheme, dar în același timp grijă trebuie să fie luate.

Metoda 2: MySQL are o funcție foarte bună pentru a redenumi un tabel, care funcționează chiar și în diferite scheme. Această operație redenumirea este atomică, și nimeni altcineva nu poate avea acces la masa atunci când acesta este redenumit. Este nevoie de o perioadă scurtă de timp, deoarece o schimbare în numele mesei sau schema - este doar schimbarea de metadate. În cazul în care există o procedură de abordare redenumire de procedură:

Creați o nouă schemă de baze de date cu numele corect. Redenumirea tabelul de la vechiul sistem la noul sistem, folosind comanda «REDENUMIRE TABLE» MySQL. Aruncați schema bazei de date vechi. Dacă există puncte de vedere, declanșatoare, funcții, proceduri stocate în schema, cei care vor trebui să fie recreat prea. MySQL «RENAME TABLE» eșuează dacă există declanșează în tabele. Pentru a remedia acest lucru, putem face următoarele:

1) Dump declanșatoare, evenimente și rutine stocate într-un fișier separat. Acest lucru se face cu ajutorul unui -R steag, -R (în plus față de -t -d, care resetează bistabilele) comanda mysqldump. Odată ce declanșează sunt eliminate, vom avea nevoie pentru a le elimina din circuitul de comandă la REDENUMIȚI TABLE la locul de muncă.

2) Creați o listă a «BASE» tabele. Ele pot fi găsite interogând în tabelul information_schema.TABLES.

3) dhampirs reprezentare în fișierul de ieșire. Reprezentări pot fi găsite folosind interogarea în același tabel information_schema.TABLES.

4) Picătură declanșează în tabelul actual din old_schema.

5) restaura fișierele basculante de mai sus, de îndată ce toate tabelele de bază găsite în pasul 2 va fi redenumit.

Dificultăți în utilizarea metodelor descrise mai sus. Poate că trebuie să actualizăm SUBVENȚII pentru ca utilizatorii să se potrivească cu numele corect de schemă. Ele pot fi fixate cu un simplu mese UPDATE mysql.columns_priv, mysql.procs_priv, mysql.tables_priv, mysql.db, renovarea numele old_schema la new_schema și cauzând «privilegii Flush;“. Deși „Metoda 2“ pare un pic mai complicat decât „Metoda 1“, este destul de scenarii posibile. Un script simplu bash pentru a efectua pașii de mai sus în ordinea corectă vă poate ajuta să economisi spațiu și timp, atunci când redenumiți o schemă bază de date în data viitoare.

Echipa Percona DBA la distanță a scrie un script numit «rename_db», care funcționează după cum urmează:

Pentru a demonstra utilizarea acestui scenariu, utilizați schema aproximativă «emp», crearea de declanșatori de testare, proceduri stocate în acest sistem. Încercați să redenumiți schema bazei de date cu un scenariu, care durează câteva secunde, în contrast cu groapa de gunoi metoda laborioasă / restaurare.

După cum se poate observa din cele de mai sus, schema bazei de date «PMM» a fost redenumit «emp_test» mai puțin de o secundă. În cele din urmă, acest scenariu Percona, care este utilizat mai sus pentru „Metoda 2“.