dg MySQL-dump – kompletní záloha DB
- Alsatian
- Člen | 175
Ahoj. Rád bych ve své Nette aplikaci vytvořil možnost zálohy, obnovy, stažení a import kompletní databáze, kterou aplikace používá (trochu jsem to teď zjednodušil).
Vše mám připravené a našel jsem skvěle vypadající komponentu, kterou
ale nevím, jak použít :)
https://github.com/dg/MySQL-dump
Instalaci jsem provedl pomocí composeru.
Databází používám Nette Database.
Na webu je příklad s implementací, který mi ale nefunguje (chápu, že mysqli tam asi být nemá):
$mysqli = new mysqli('localhost', 'root', 'password', 'database');
$dumper = new MySQLDump($mysqli);
Může mi, prosím, někdo poradit, jak mám komponentu použít a je správné, že jsem ji nainstaloval pomocí composeru a nebo jsem ji měl vložit do Nette projektu jinak?
Moc děkuji.
Editoval Alsatian (7. 11. 2018 22:51)
- Webster.K
- Člen | 211
Přidám se k tomuto staršímu příspěvku, protože jde o stejnou komponentu a když to někdo bude pročítat, třeba mu to pomůže, i když je to už 5 let. Dobrá zpráva je, že komponenta pořád skvěle funguje i s aktuální verzí Nette, tedy autorovy velké díky.
Co řeším je ukládání. Ukládání databáze standardně probíhá do /bin/ složky, případně když použiji:
$dump->save('exports/export.sql');
Tak se ukládá do složky /bin/exports. Jde nějak udělat, aby se export vůbec neukládal na server, ale rovnou odeslal třeba někam emailem? Ideální stav by za mě byl to nahrát někam na vzdálený server případně to mít někde úplně mimo server, ze kterého ta záloha je.
To o co mi jde jsou cca 5ti minutové zálohy (mám to jako CLI apku co přes autoloading tříd přes Composer se načítá). Ale nechci z bezpečnostních důvodu mít ty zálohy na serveru s apkou. Napadá někoho něco?
Další co by mě zajímalo, zda existuje způsob, jak vytvořit připojení k databázi jinak, než:
$db = new \mysqli('localhost', 'root', 'root', 'databaze');
$dump = new \MySQLDump($db);
Třeba ideálně když používám autoloading tříd přes Composer to do této komponenty načíst z konfiguračního souboru. Věřím že to určitě jde, ale nějak si nevím rady co dál s:
$container = \App\Bootstrap::boot()->createContainer();
$db = $container->getByType(\Nette\Database\Connection::class);
protože tohle fakt nefunguje
Editoval Webster.K (1. 7. 2023 18:43)