Portál o technologiích a vývoji

Jak zkopírovat velkou MySQL databázi

Autor: Jiří Čadek Datum: 9.11.2013 Počet shlédnutí: 6 221 966x

Ačkoliv je MySQL databáze často považována spíše za „malou“ databázi určenou pro menší webové projekty, často se stane, že jednotlivé tabulky nasbírají i GB dat a milióny řádků. Co pak ale s takovou databází když ji chcete přesunout jinam?

S PHPMyAdminem máte nejspíš smůlu, omezuje vás nastavení PHP (memory_limit a max_execution_time). Co ale vyzkoušet dál? Možností máte relativně mnoho, záleží na konfiguraci vašeho hostingu.

  • Máte povolený vzdálený přístup k databázi

Pokud máte povolený vzdálený přístup (remote access) k databázi, je vaše situace poměrně jednoduchá, stačí si nainstalovat program SQLyog (na 30 dní zdarma), který vám umožní vytvořit připojení k databázi přímo z desktop aplikace, na kterou se konfigurace PHP na serveru neváže, můžete tedy databázi bez problémů stáhnout na disk. Pokud si chcete práci urychlit a máte povolený vzdálený přístup k databázi jak na zdrojovém hostingu tak na cílovém, můžete přetáhnout tabulky s daty (nebo jen jejich strukturu) rovnou na cílový server.

1

 

Program umožňuje přetahovat libovolně velké databaze, dovolí navíc i vybrat přímo které tabulky chcete ze serveru na server kopírovat. U mého vlastního pokusu došlo k selhání při kopírování 12 GB tabulky, ale nejspíš se jednalo o nějaké omezení nastavené na zdrojovém hostingu.

  • Máte v PHP povolenou funkci exec()

Pokud váš webhosting má povolenou funkci exec(), můžete spustit dumpování databáze do souboru přímo v OS, přes PHP, skript vypadá například takto:

<?php 
$return_var = NULL;
$output = NULL;
$command = "/usr/bin/mysqldump --user=... --password=... --host=... DB_NAME > /path-to-export/file.sql";
exec($command, $output, $return_var);

if($return_var) {
  echo($return_var); // vypíše návratovou hodnotu (číslo chyby nebo 0)
}
?>
  •  Máte SSH přístup

Pokud máte SSH přístup, můžete dump udělat rovnou 🙂 Viz předchozí bod.

  • Nemáte ani vzdálený přístup ani SSH

dokonce i pokud jste takto absolutně limitováni webhostingem, stále vám zbývá jedna výborná možnost a to využití nástroje MySQLDumper, který nakopírujete na FTP, přes prohlížeč spustíte, připojíte k databázi a můžete zálohovat a pak celou zálohu přetáhnout ze serveru na server a pomocí stejného nástroje obnovit.  Aplikace využívá k zálohování PHP nebo Perl. Nedělá mu problém práce ani s velkými databázemi.

2

Výčet možností samozřejmě není kompletní, avšak možná může pomoci jako jednoduchý rozcestník při zálohování a přesunu MySQL databáze.

Štítky: | | |

Žádné komentáře

Poslat komentář

Vaše e-mailová adresa nebude zveřejněna.