logo
05.05.2019 22:24
1
Ahoj, mám databázi která má přes 1,5 GB a potřebuji ji přenést na jiný server v krátkém čase.

export proběhne OK a teď jak na import:

1. zkoušel jsem přes phpmyadmin ale tam mi to vyhazuje chybu. Rozděluji dump databáze na 100MB soubory a pokaždé když uploaduji soubor tak mi vyhodí server chybu internal error chyba serveru.

2. zkoušel jsem dump databáze nahrát na server kde mám přístup root a přes shell příkaz naimportovat na cílový server. Bohužel to trvalo 4 dny, což je pro mne velký časový výpadek, tak dlouho nemůžu mít server mimo provoz.

3. zkoušel jsem nahrát přes FTP sql soubor s daty na cílový server a tam přes PHP script importovat data pomocí příkazu exec

Kód:
exec("/usr/local/bin/mysql --user=user --password=pass databaze < soubor.sql");
nebo
exec("mysql --user=user --password=pass databaze < soubor.sql");
ale to mi nic neprovede ani žádnou chybu to nevypíše

4. pokusil jsem se napsat script který načte soubor a vykoná příkazy uvnitř, ale při pokusu o
Kód:
$sql = file_get_contents('mysqldump.sql');
to skončí na velikosti paměti

má někdo nějaký nápad ?

---------- Příspěvek doplněn 05.05.2019 v 22:27 ----------

5. zkoušel jsem i externí program HeidiSQL, který umí načíst tak velký soubor a odeslat to na server, ale zas doba cca 4 dny.

Co se právě děje na Webtrhu?

05.05.2019 22:57
2
4 dny na import sql je trochu moc. Já 10 GB rval do MySQL okolo 1,5 minuty.

Jaké jsou parametry toho serveru?
05.05.2019 23:09
3
Vyzkousej Adminer misto PMA a kdyz ne tak napis na podporu hostingu, oni ten import udelaji.
05.05.2019 23:16
4
Pokud mas root v cili tak mysql klienta na prikazove radce (mysql) a

use jmeno_db;
\. cesta_k_dump\dump.sql
05.05.2019 23:18
5
Původně odeslal Oleg
Vyzkousej Adminer misto PMA a kdyz ne tak napis na podporu hostingu, oni ten import udelaji.
Vyzkoušeno na souboru s 450MB, výsledek minutu šrotoval a pak chyba
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

---------- Příspěvek doplněn 05.05.2019 v 23:19 ----------

Původně odeslal vdusek
Pokud mas root v cili tak mysql klienta na prikazove radce (mysql) a

use jmeno_db;
\. cesta_k_dump\dump.sql
bohužel v cíli root nemám
05.05.2019 23:20
6
Tak zadat spravci at ti to udela, pokud tam nemas zadny shell ucet
05.05.2019 23:46
7
Nebo změnit hosting. Protože pokud to má 1,5 GB db, mělo by to být něco lepšího než nějaký lowcost. A pokud to není lowcost, tak by to mělo zase zvládnout.
06.05.2019 06:35
8
Původně odeslal filipsedivy
4 dny na import sql je trochu moc. Já 10 GB rval do MySQL okolo 1,5 minuty.

Jaké jsou parametry toho serveru?
a mohu vědět jak ?
06.05.2019 08:01
9
Asi je třeba na úvod říct že používám jako úložiště InnoDB.

Já vždy dočasně navýším na serveru parametry pro InnoDB.

Kód:
innodb_buffer_pool_size = 4G
innodb_log_buffer_size = 256M
innodb_log_file_size = 1G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
Poté restartuji databázi

Kód:
service mysql restart --innodb-doublewrite=0
Následně naimportuji SQL soubor

Kód:
mysql --max_allowed_packet=512M -u root -p < "database-file.sql"
A následně ještě jednou restartuji databázi

Kód:
service mysql restart
---

Rozhodně se nespoléhat při těchto velikostech na nějaké Adminery nebo PhpMyAdminery... Ty nikdy nedokážou zpracovat takové velikosti. K tomu už právě existují CLI rozhraní.

Tyhle webový adminéři jsou dobrý pro soubory do velikost PHP konstanty upload_max_filesize. Což bývá okolo 64 MB - 512 MB.

---------- Příspěvek doplněn 06.05.2019 v 08:09 ----------

Ještě co mě napadá, tak vypnout indexy nad všemi tabulky. Protože při importu probíhá zároveň i indexování, tak že zda nemá smysl nejdříve naimportovat čistá data a následně poté postupně zapnout indexy nad tabulky aby server to zpracoval.
06.05.2019 08:16
10
Adminer umí nahrát data ze serveru. Stačí do složky, kde je adminer.php nahrát databázi pojmenovanou jako adminer.sql a pak dát nahrát ze serveru. Obejde se tím upload_max_filesize. Už jsem tak importoval databáze i větší než 1 GB. Vždy v pohodě, ale hosting nebyl žádný Wedos atp...
06.05.2019 09:35
11
Konfigurace serveru:
1U SuperMicro X9SCL-F
1 x Intel Xeon CPU E3-1230 @ 3.20Ghz
4 x 4GB RAM DDR3 ECC NREG
2x 1TB SATA

je komplet ve správě společnosti IGNUM, bohužel nemám k němu root přístup, vše je řešeno pouze klientským rozhraním ISPConfig

---------- Příspěvek doplněn 06.05.2019 v 09:36 ----------

Původně odeslal Whispere
Adminer umí nahrát data ze serveru. Stačí do složky, kde je adminer.php nahrát databázi pojmenovanou jako adminer.sql a pak dát nahrát ze serveru. Obejde se tím upload_max_filesize. Už jsem tak importoval databáze i větší než 1 GB. Vždy v pohodě, ale hosting nebyl žádný Wedos atp...
ano již jsem z koušel s výsledkem:
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
06.05.2019 09:49
12
Pristup do konzole nemas?
06.05.2019 09:55
13
Původně odeslal Whispere
Adminer umí nahrát data ze serveru. Stačí do složky, kde je adminer.php nahrát databázi pojmenovanou jako adminer.sql a pak dát nahrát ze serveru. Obejde se tím upload_max_filesize. Už jsem tak importoval databáze i větší než 1 GB. Vždy v pohodě, ale hosting nebyl žádný Wedos atp...
Zrovna Wedos umí přes phpMyAdmin až 1 GB importy. Je to oddělené od hostingu. Odzkoušeno na 700 MB tabulce.
06.05.2019 10:26
14
Wedos uvadej jako standard toho, co nefunguje, a ne toho, co se obcas povede ;)
06.05.2019 10:28
15
Pokud si u nich platíš server, a předpokládám i management tak nevidím důvod proč jim neposlat soubor a nechat zodpovědnost na ně. Sysadmini by měli být přesně na tohle trénováni a věřím že řešili i složitější případy než jen import několika GB souboru.

Ještě co mě napadá, co nastavit replikaci databáze? Nastavit starou databázi jako master a novou jako slave. Ono by si poté databáze měla poradit s nejrychlejším kopírováním dat.

Jenom co koukám na server, tak RAMka by měla být v pohodě. Ale divím se že ještě běží na SATA. Tam bych možná viděl problém v tom, že pokud databázi nahráváš a zároveň sestavuješ indexy, tak tam to může někde škytat. Otázkou je zda je to RAM nebo CPU. Chtělo by to se mrknout alespoň na nějakou statistiku serveru když to tam nahráváš.
06.05.2019 23:03
16
napis si na podporu a oni ta uz nasmeruju. Na forpsi my bez problemov technik spravil obnovu db zadarmo a to sa jednalo o blby hosting za 3€ na mesiac
07.05.2019 19:47
17
Tak závěr:
nastavil jsem si na cílovém serveru připojení do DB ze vzdálené IP adresy
na jiném linuxovém stroji jsem se přes terminál připojil do DB a spustil import.
po 30 min naimportoval 45 tis záznamů, z 10 mil :)
pak jsem zrušil všechny indexy, a zkusil to znovu = stejný výsledek

pak jsem si založil zkušební VPS a tam jsem to zkusil do lokální DB přímo přes terminál, výsledek celá DB do 3 min

tak jsem napsal na podporu, zda by to tam nahráli, ale stejně mi to vrtá hlavou proč je to tak pomalé.