Prosty trick do “inkrementacyjnego” backupu MySQLa. Nie nadaje się raczej na produkcję z racji tego że nie da się sensownie usuwać starych backupów, oraz przy dużych bazach będzie raczej wolne (wymagany dump i potem diff ze starą bazą po każdym dumpie), ale na serwerach developerskich może być całkiem przydatne z racji tego że daje ładny changelog zmian w bazie więc można popatrzeć co zmienił np. update aplikacji. Powinno się też nadawać do mało zmieniających się stron np. blog (no chyba że ktoś używa modułu do statów, wtedy może się szybko zapchać).

Tworzymy repo:

# mkdir ~/mysql_backup
# cd ~/mysql_backup
# git init

Tworzymy skrypt backupujący o treści:

#!/bin/sh
cd ~/mysql_backup
mysqldump --defaults-file=/etc/mysql/debian.cnf --lock-tables --all-databases --skip-extended-insert --skip-comments    >db.sql
DATE=$(date +%F_%X)
git commit -a -m"$DATE"
git gc

i dorzucamy go do crona, można codzień, można co minutę. git gc można odpalać rzadziej, ale chociaż raz na jakiś czas jest zalecane żeby repo nie rosło zbytnio