Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Restore large table/DB

[es] :: MySQL :: Restore large table/DB

[ Pregleda: 1342 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

after
Ajvanho, ING

Član broj: 276962
Poruke: 97
*.dynamic.sbb.rs.



+6 Profil

icon Restore large table/DB18.10.2011. u 20:17 - pre 151 meseci
Pozdrav svima,

Uradjen je dump baze od nekih 23GB sa -skip-extended-insert (uz --single-transaction posto su tabele uglavnom innodb). Dobijen je zipovan backup od 1.3GB.

Dump je prebacen na drugi server i restore na standardan nacin iz zipovankog dumpa je krenulo pre nekih 20h i nova baza se popunila do 1/3 (7GB), sto se i slaze iskustvima drugih da je za restore baze te velicine potrebno nekih 50 sati! (Po teoriji i praksi restore se odvija dosta brzo na pocetku, medjutim kako se zalazi sve dublje u veliki dump fajl to server sve sporije radi i sporije cita a pauze su sve vece izmedju inserta plus zbog skip-extended-insert kod pravljenja backup, restore je jos sporiji).

Uporedo sa standardnim restore postupkom pustio sam par alternativa na drugim serverima:

- http://www.justincarmony.com/b...ge-mysql-dump-900-million-rows

Cini se i meni izgleda kao najbolje resenje. Restore baze od 20GB+ umesto 50h bi trebalo da traje nekih 5h. Krenuo sam sa tim i uz pripremu (prebacivanje dumpa, unzip,..) traje vec nekih 7h. Sustina postupka je da se veliki sql fajl splituje preko split komande na fajlove sql_aa, sql_ab,sql_ac,... i zatim da se restore radi fajl za fajlom. Umesto splitovanja na sql_* fajlove od 200 linija kao u linku gore, splitovao sam na fajlove od po 200 000 linija svaki, jer drugacije nije moglo.


Neki drugi nacin je izdvajanje tabela preko sed komande: http://code.openark.org/blog/m...-a-single-table-from-mysqldump ili preko sed/skripte koja izdvaja pojedinacne tabele: http://kedar.nitty-witty.com/b...s-from-mysql-dump-shell-script
Uglavnom, od koristi je samo ako iz velikog fajla treba izvuci pojedinacnu tabelu. Mada je pitanje koliko je efikasno. Pustio sam pre nekih 20h sati kao i full restore
i velicina svih do sada "iscupanih" tabela nije presla ni 1GB.

Zanima me kakva su iskustva ostalih za restorovanjem baza od 20GB+. Pretpostavljam da tu dolazi do izrazaja razlika izmedju mysql community servera i alatki koje ima recimo mysql enterprise edicija, kao i verovatno razlika izmedju recimo mysql-a i komercijalnih RMDBS (oracle, ms sql,...). Binary fizicki backup (kopiranje innodb, frm,...) mi nije bila prva opcija, pa se sada malo kajem :) ali je kasno jer je kapija (vpn) zatvoren pa moram da radim sa ovim sto imam.

Pozz.
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
*.static.isp.telekom.rs.

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: Restore large table/DB19.10.2011. u 08:30 - pre 151 meseci
Ja za velike SQL fajlove koristim http://www.ozerov.de/bigdump/ iako moram priznati da nisam probao sa 20GB fajlom.
"Common sense is not so common." - Voltaire
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Restore large table/DB19.10.2011. u 12:52 - pre 151 meseci
enterprise mysql dolazi sa mysql enterprise backup koji pravi binarni bekap ali na zalost samo celog mysql-a, radi i inkrementalni bekap, to ide brzo i za bekap i za restore, na zalost MEB moze da se dobije samo uz enterprise paket, ne moze da se uzme zasebno

osnovna fora kod bekap/restore kombinacije je da uradis bekap onako kako ce ti odgovarati za restore ... ako treba da prebacis mysql sa servera 1 na server 2 najbrzi nacin je uvek da samo iskopiras mysql fs (datadir - obavezno ugasis mysql pre nego krenes da kopiras). Tu je uvek mylvmbackup i ostali alati.... ono sto moze da ti bude vrlo zanimljivo je mk-parallel-dump i mk-parallel-restore koji su deprecated posto je domasov mydumper mnogo bolji.

u tvom slucaju ti nemas pristup originalnom serveru te mozes samo da koristis taj dump koji imas a koji je napravljen pogresno. Max sto mozes da si pomognes tu je da dodas za svaku tabelu pre nego krenes sa insertima jedan disable keys; i onda kada zavrsis sa insertima jedan enable keys; da malo ubrzas taj smor sa pravljenjem baze (ako nisi upalio u mysqldump-u opciju da to sam doda). ali generalno max sto mozes da uradis je
- ako su tabele innodb nabudzis innodb_buffer_pool_size na 80% ram-a i setujes innodb_flush_log_at_trx_commit = 0
- iskljucis binary logging na serveru
- ako su tabele myisam nabudzis key_buffer na 50-70% ram-a
pustis restore i namestis server da ti posalje sms kad zavrsi (posle par dana) ... onda rekonfigurises server za "normalan" rad.

inace ako prelazis sa 5.0 na 5.1 ili sa 5.1 na 5.5 ja uvek predlazem dump/restore a ne binarno kopiranje (taman se defragmentira tablespace, izbegnu moguce nekompatibilnosti, generise tablespace najnovije verzije etc etc), jedino savetujem mydumper a ne mysqldump



 
Odgovor na temu

after
Ajvanho, ING

Član broj: 276962
Poruke: 97
*.dynamic.sbb.rs.



+6 Profil

icon Re: Restore large table/DB19.10.2011. u 18:15 - pre 151 meseci
Hvala na savetima. Sve vise uvidjam da sam trebao ipak da radim kopiranje umesto mysqldump-a. Inace stavio sam disable-keys uz jos par opcija kada sam radio backup.

Najtragicnije (po mene) je sto klijent koristi i placa enterprise mysql jer output iz verzije daje koliko se secam nesto kao: enterprise-log. Medjutim, kako nikad nisam koristio mysql enterprise alate (enterprise backup,..), skoro nikakav info od strane klijenta i plus (za mene) nestandardan *NIX cluster sa 3 noda na kome se vrti mysql, zbog malo vremena i znanja :) nisam hteo da eksperimentisem. E sada sto ne koriste zvanican mysql support ako imaju (i placaju?) enterprise verziju - nemam pojma. Ako je to sto sam video uopste enterprise. Koliko sam shvatio mysql im je samo neka vrsta data skladista odakle drugi RDBMS (Oracle?) uzima data.

Uglavnom, probacu ovih dana da eksperimentisem sa mydumper i bigdumper.

Smesna strana IT-a, kada se (nekada) win admin bavi mysql-om na linuxu :). I to bez mnogo brljotina do sada.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Restore large table/DB19.10.2011. u 19:23 - pre 151 meseci
ako imas disable keys onda to nije tako los dump, prosto - treba vremena da insertujes i indexiras tolike gigabajte...

ako imaju enterprise mysql ili ga imaju nelegalno ili placaju support ... zasto nisu pingovali support direktno - nemam pojma ..

bigdump je php skript koji samo izdeli sql i radi restore iz komada, ne bi ti nista pomogao, koristi se kada nemas pristup mysql-u i radis restore kroz web
 
Odgovor na temu

after
Ajvanho, ING

Član broj: 276962
Poruke: 97
*.dynamic.sbb.rs.



+6 Profil

icon Re: Restore large table/DB21.10.2011. u 19:42 - pre 151 meseci
Mydumper i myloader- ludo i brzo!!!

Restore baze od 20GB na standardan nacin: gunzip < backup.sql.gz | mysql db je trajao je preko 3 dana. Dump je bio na hostu gde je i mysql server tako je konekcija isla preko socketa sto je pretpostavljam jos i brze nego preko ip protokola. Pre toga backup originalne baze na lokalni disk trajao je cini mi se nekih 3h. Doduse ti serveri su potpuno razliciti; razliciti linux, memorija, hdd, arhitektura, mysql...

Nakon sto se baza restorovala testirao sam mydumper na sledeci nacin:mydumper sa hosta1 gadjao je mysql na hostu2 i smestao backup na host3. Sva tru hosta su u istom lan-u i mydumper je radio backup u 6 paralelnih thread-a i pravio kompresovane backup fajlove. Backup je zavrsio za 25 min!

Restore preko myloader-a je islo slicno: myloader sa hosta1 uzima backup fajlove sa hosta3 i restoruje na novom (zbog prostora) mysql hostu4. Restore je uspesno zavrseno nakon nekih 6h!!! Inace na tom host4 sam prethodnog dana testirao splitovanje originalnog bazkup fajla u sql fajlove od po 200k linija svaki i zatim odatle lokalno restorovao bazu. Posle nekih 4h baza se raspakovala tek do 1GB pa sam i prekinuo restore.

Mydumper/myloader bi sigurno radio jos brze, medjutim struktura baza je takva da samo jedna tablela ima 10GB, dok su ostale tabele u rasponu od 10MB do 3GB. HW je standardan (ispod)prosecan a mysql konfiguracija skoro default osim sto sam iz predostroznosti povecao max allowed packet na 512MB pre restore.

Jos jednom, mydumper/myloader - ludo i brzo!

Pozdrav svima.

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Restore large table/DB22.10.2011. u 00:12 - pre 151 meseci
Citat:
after: Mydumper i myloader- ludo i brzo!!!


samo da si se setio da pitas pre nego si napravio taj bekap .. no sad znas za drugi put :)
 
Odgovor na temu

[es] :: MySQL :: Restore large table/DB

[ Pregleda: 1342 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.