Objavljeno: 31 May, 2010. / Kategorija: Administracija / Tagovi: #backup #baze podataka #linux #mysql #SQL #SSH #windows
Ok, desi vam se da imate veliku (da ne kažem ogromnu) bazu podataka koju morate da preselite sa jednog mesta (servera) na drugo ili jednostavno želite da napravite rezervnu kopiju iste ili da, iz bilo kog razloga, vratite back-up. Ako je u pitanju baza manjeg sajta, bloga ili tome slično, verovatno će vam muke olakšati projekat otvorenog koda pod nazivom phpMyAdmin. Međutim, ukoliko je vaša baza većeg gabarita, verovatno ćete morati da se dohvatite konzole i komandne linije.
Ako radite na integrisanim LAMP/WAMP rešenjima, da bi importovali bazu, potrebno je da odete u konzolu / komandnu liniju i ukucate sledeće *
mysql -u username -ppassword database_name < file_name.sql
* napomena: Da bi pokrenuli komandnu liniju u Windows-u kliknite na “start > run” i ukucajte “cmd” i stisnite “ok”; U Linux-u nađite “terminal” ili “konsole”. U Windows varijanti ćete verovatno morati ručno da ‘odete’ do lokacije gde je MySQL instaliran. To čete učiniti tako što ćete u komandnoj liniji ukucati putanju do mysql.exe, npr (za wamp) “cd C:\wamp\bin\mysql\mysql5.1.33\bin“.
Ukoliko ovo radite na serveru, potrebno je da se na isti povežete preko SSH, gde ćete primeniti postupak koji je prethodno opisan. Ukoliko nemate SSH pristup serveru, možete upload-ovati bazu (tj SQL dump) negde na server i zamoliti tehnički podršku da neko od administratora to uradi za vas ili da pokušate sreću sa system() i shell_exec() PHP funkcijama.
Da bi bazu eksportovali ili napravili njenu rezervnu kopiju postupite isto kao u prethodnom slučaju, samo ukucajte:
mysqldump -u username -ppassword database_name > file_name.sql
NAPOMENA: Parametar -p i sam password nisu razdvojini razmakom i unose se spojeno. U suprotnom će vam biti traženo da password unesete ponovo.
posto redovno radim bekap (a ponekad i restore) relativno vece MySQL baze, samo da kazem da je bilo sta sa mysql dump-om jako neprakticno jer moze da potraje zaista DUGO. Jednostavno, zaustavite servis a zatim iskopirajte fajlove baze na drugu lokaciju ili nazad. Mnogo brze. MySQLdump je dobar ali samo za male baze od nekoliko desetina MB, mozda. Kad pocnete da radite sa bazama od nekoliko deseting GB, mislim da ne dolazi u obzir, bar po mom iskustvu.
Zaista bih bilo lepo da autor kaze sta on podrazumeva pod velikom bazom? Ali sve ispod nekih 10-tak GB je mala baza (ispod 1-2GB je bas bas sitno).
Hvala na komentaru.
Naime, ovaj tekst je nastao paralelno sa mojim prvim mukama sa bazom koju phpMyAdmin ne moze da proguta. Konkretno radi se o bazi od nekih ~100mb. A glavni problem je bio sto sam podatke dobio u XML-u, pa je iste bilo potrebno, pre svega, upisati u SQL bazu, a tek onda baratati sa njima.
Bilo kako bilo, posto nemam dedicated masinu, pa samim tim ni pristup MySQL fajlovima u kojima se baza cuva, predlozeno resenje u ovom slucaju (a i u vecini standardnih web app slucajevima, posto vecina ima virtual hosting ili nalog na obicnom kalsteru) prosto ne bi bilo moguce. Kada je u pitanju ozbiljan rad sa bazama podataka (ne ovako za web app i sajtove) svakako se slazem da je kopiranje 'zivih' fajlova najbrze resenje.
Elem, imas li jos neki savet ili alat za preporuku za nas kojima je defaulf asociacija na bazu, sql dump sa WP bloga ili sl.?
Direktno kopiranje datoteka baze je definitivno najbrži način da se uradi bekap, ali samo ako se te datoekekorite za vražanej na istu verziju MySQL-a. Ako se menja verzija može doći do problema.
Kakva su tvoja iskustva sa seljenjem baza, bekapovima i ostalim zavrzlamama gde je potrebno neku bazu eksportovati sa jednog i importovati na drugo mesto? Postoji li neko efikasnije/lakse/elegantnije resenje?
Hvala za odlican tutorijal (evo ja vec delim link po netu svima sa slicnim problemom)