Zálohování MySQL pomocí Subversion: Porovnání verzí
(Založena nová stránka: <source lang="bash"> #!/bin/bash USER=root PASS=password DATABASE=schema for I in $(mysql -N -B -u ${USER} --password=${PASS} -e "show tables from ${DATABASE}" -s --sk…) |
Bez shrnutí editace |
||
Řádek 1: | Řádek 1: | ||
=Úvod= |
|||
Pokud chcete uchovávat historii změn v databázi bez potřeby nějakého sofistikovaného mechanizmu, který by toto prováděl nad SQL tabulkami přímo v databázi a stačí vám mít zálohu někde bokem pro případ nutnosti vrátit se ke starším datům, tak pravděpodobně sáhnete po periodickém např. denním zálohování do komprimovaného souboru. Každý takový komprimovaný soubor pak zabírá velikost celé databáze. Počet takových souborů pak v čase roste, takže buď staré soubory smažete ručně nebo automaticky průběžně. |
|||
Další možnost je použít nějakého mechanizmu pro vytváření rozdílových záloh a uchovávat pak jen jednu nebo několik plný záloh a mnoho menších rozdílových. |
|||
Existuje však také další možnost, která využívá pro uchování záloh schopnosti verzovacího systému Subversion. Ten umí efektivně uchovávat rozdílové zálohy ideálně textových, ale také binárních souborů. Zároveň jsou data na serveru komprimována. Pak výsledný repozitář po několika provedených změnách v souborech je stále dosti malý. Tento systém, který se s výhodou používá pro verzování zdrojových souborů a jiných textových souborů, tak lze použít také pro verzování výpisu dat z databází (dump). Ty jsou generovány v textové podobě. Pak zálohovací skript vygeneruje data z databází do složek a souborů a provede odevzdání (commit) dat do databáze. |
|||
'''Výhody:''' |
|||
* Malá velikost uložených dat na serveru |
|||
* Kompletní historie změn v databázi |
|||
* Uložená data lze prohlížet pomocí propracovaných nástrojů jako TortoiseSVN, Kdesvn, aj. |
|||
* Data lze spravovat a načítat i ze vzdálených klientů |
|||
'''Nevýhody:''' |
|||
* S každou revizí velikost repozitáře na serveru roste. Předchozí revize lze umazat např. provedením kompletního exportu a importu do nového repozitáře. |
|||
* Velikost pracovní kopie je dvojnásobek uložených exportů. |
|||
=Příklady skriptů= |
|||
<source lang="bash"> |
<source lang="bash"> |
||
#!/bin/bash |
#!/bin/bash |
Verze z 11. 11. 2012, 19:53
Úvod
Pokud chcete uchovávat historii změn v databázi bez potřeby nějakého sofistikovaného mechanizmu, který by toto prováděl nad SQL tabulkami přímo v databázi a stačí vám mít zálohu někde bokem pro případ nutnosti vrátit se ke starším datům, tak pravděpodobně sáhnete po periodickém např. denním zálohování do komprimovaného souboru. Každý takový komprimovaný soubor pak zabírá velikost celé databáze. Počet takových souborů pak v čase roste, takže buď staré soubory smažete ručně nebo automaticky průběžně. Další možnost je použít nějakého mechanizmu pro vytváření rozdílových záloh a uchovávat pak jen jednu nebo několik plný záloh a mnoho menších rozdílových.
Existuje však také další možnost, která využívá pro uchování záloh schopnosti verzovacího systému Subversion. Ten umí efektivně uchovávat rozdílové zálohy ideálně textových, ale také binárních souborů. Zároveň jsou data na serveru komprimována. Pak výsledný repozitář po několika provedených změnách v souborech je stále dosti malý. Tento systém, který se s výhodou používá pro verzování zdrojových souborů a jiných textových souborů, tak lze použít také pro verzování výpisu dat z databází (dump). Ty jsou generovány v textové podobě. Pak zálohovací skript vygeneruje data z databází do složek a souborů a provede odevzdání (commit) dat do databáze.
Výhody:
- Malá velikost uložených dat na serveru
- Kompletní historie změn v databázi
- Uložená data lze prohlížet pomocí propracovaných nástrojů jako TortoiseSVN, Kdesvn, aj.
- Data lze spravovat a načítat i ze vzdálených klientů
Nevýhody:
- S každou revizí velikost repozitáře na serveru roste. Předchozí revize lze umazat např. provedením kompletního exportu a importu do nového repozitáře.
- Velikost pracovní kopie je dvojnásobek uložených exportů.
Příklady skriptů
#!/bin/bash
USER=root
PASS=password
DATABASE=schema
for I in $(mysql -N -B -u ${USER} --password=${PASS} -e "show tables from ${DATABASE}" -s --skip-column-names);.
do.
echo -ne "$I, "
mysqldump -u ${USER} --password=${PASS} ${DATABASE} $I --skip-dump-date --extended-insert=FALSE> "$I.sql";.
done
svn commit -m "" .
svn cleanup