Import 2,5TB.sql souboru do DB respektive jeho rozdělení

dustin

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #15 kdy: 24. 10. 2017, 14:42:28 »
Neber si to osobně, ale práce s takovým dumpem vyžaduje trochu zkušeností s linuxem i mysql. Ten, kdo ti to zadal, by tě měl nejdříve trochu proškolit. Fakt nic osobního, ale je to tak.


Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #16 kdy: 24. 10. 2017, 14:47:09 »
Koukám na ten htop.

Proč máš 10GB swap na stroji s 300GB RAM? Vypnul bych jej.

Proč má mysql nastaveno tak málo paměti? Máme 512GB RAM a mysql má v bufferech nastaveno 100GB (pravda nijak jsme si s tím nehráli a netestovali, ale používá je)

Kód: [Vybrat]
4065 mysql  20   0  108g 105g  17m S     3 20,9  12975:49 mysqld                                                                                                                                                                                                                                                         
20 jader = nalévání alespoň 18 jádry současně. Snadno si nastavíš parametry xargs - viz ten dump skript.

Ten stroj jsem dostal nedavno a musim ho nastavit, takze dekuju za podnety. Jinak ano mas pravdu, ze nemam uplne zkusenosti na to,a bych to dokazal efektivne spravovat, ale byl jsem do toho jak se rika hozen, takze se pokusim co nejvice veci pokazit a co mozna toho nastavit spravne.

Jeste jednou dekuju.
« Poslední změna: 24. 10. 2017, 14:49:20 od Clee-Shock »

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #17 kdy: 24. 10. 2017, 14:55:08 »
20 jader = nalévání alespoň 18 jádry současně. Snadno si nastavíš parametry xargs - viz ten dump skript.

Já ještě přidám doporučení ověřit, že se nejedná o jádra hyperthreadingu. Pak je lepší hyperthreading vypnout, je to jednodušší, než nastavovat afinitu na jednotlivá fyzická jádra.

dustin

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #18 kdy: 24. 10. 2017, 15:00:18 »
Tak to samozřejmě, na serverech hyperthreading vždy vypínám, pokud jej CPU podporují.

Štefan

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #19 kdy: 24. 10. 2017, 16:00:00 »
Jako nejlepší řešení mi nakonec vždy přišlo rozsekání velkého souboru na jednotlivé create a insert části. Jednak je lze v případě nutnosti/chyby opakovaně spustit, jednak lze některé části paralelizovat (rozhodně create a inserty číselníků) a nechat si největší sousta nakonec .. I tam lze pak příliš velký insert jen jednoduše rozdělit na části, které se zpracují v relativně rychlejším sledu. Nemíval jsem žádné problémy, když jsem si inserty rozsekal po cca max 200 MB souborech.. větší už obvykle "drhly"..

Jsem v linuxu zacatecnik, takze si dost dobre nedokazu predstavit jak bych takovy soubor pomoci prikazu mohl rozsekat. Asi teoreticky chapu, ze bych si mel najit radky kde zacina a konci konkretni schema s inserty a pak je postupne zkouset, ale jak na to?

sed, grep, sort, uniq a regulární výrazy jsou Tvůj kamarád - to vše v případě, že je k dispozici ten jediný dump, ale pokud je možné vyexportovat data po jednotlivých tabulkách, zvolil bych rovnou tento přístup a extra velký soubor ještě rozdělil pomocí split na menší částí - prví bude obsahovat definici tabulky a "pár" insertů, zbytek už jen inserty.

S 30 tabulkami bych se moc s extra skriptováním netrápil a napsal si ty příkazy do shell skriptu copy&paste a upravit název tabulky


dustin

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #20 kdy: 24. 10. 2017, 16:11:34 »
Za sebe bych doporučoval použít již hotové skripty (třeba si jich pár vyzkoušet), než se s tím psát. Např. https://github.com/afrase/mysqldumpsplit . Jinak google vrací mraky příkladů https://www.google.com/search?num=30&safe=off&q=split+large+mysql+dump+to+each+table

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #21 kdy: 01. 11. 2017, 08:59:46 »
Využil jsem tohoto již hotového skriptu https://github.com/kedarvj/mysqldumpsplitter/blob/master/mysqldumpsplitter.sh

Každopádně toho kdo vymyslel dump celé DB bych nakopal. je to hrozná pakárna pracovat s tak velkým souborem i s ohledem na místo se kterým musím pracovat. Ponaučení z tohoto zni, zálohovat všechny tabulky zvlášť..

Děkuji všem zůčastněným.

dustin

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #22 kdy: 01. 11. 2017, 09:23:21 »
Je to jednoduché - kdo to vymyslel,  o tom moc nepřemýšlel. Jeho úkolem byl dump, ne to pak nalévat zpět. Proč myslet dopředu, za to mě přece neplatí...

Mimochodem doporučení zálohovat mysql celým dumpem bez rozdělení na db/tabulky se i tady objevují pořád dokola.

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #23 kdy: 02. 11. 2017, 14:39:43 »
Je to jednoduché - kdo to vymyslel,  o tom moc nepřemýšlel. Jeho úkolem byl dump, ne to pak nalévat zpět. Proč myslet dopředu, za to mě přece neplatí...

Mimochodem doporučení zálohovat mysql celým dumpem bez rozdělení na db/tabulky se i tady objevují pořád dokola.

Abych se vyhnul předešlému problému - máte někdo zkušenosti s automysqlbackup - https://www.vultr.com/docs/how-to-install-and-configure-automysqlbackup-on-ubuntu-16-04

Vypada to dobře.

mal

Re:Import 2,5TB.sql souboru do DB respektive jeho rozdělení
« Odpověď #24 kdy: 02. 11. 2017, 15:36:45 »
Každopádně toho kdo vymyslel dump celé DB bych nakopal. je to hrozná pakárna pracovat s tak velkým souborem i s ohledem na místo se kterým musím pracovat. Ponaučení z tohoto zni, zálohovat všechny tabulky zvlášť..

Nejenom to, v případě 1TB+ DB bych ještě doporučil binární backupy, ty se pak dají obnovit poměrně rychle (percona tooly).