вторник, 22 апреля 2014 г.

Автоматизация: настраиваем бекап mySQL, postrgeSQL, SVN

Привожу скрипт для бекапа с комментариями.
Для архивирования бекапов используется многопоточный архиватор pigz а так же Cygwin.


#!/bin/bash
#Shared Variables
backup_date=`date +'%y%m%d'`
backup_dir="/cygdrive/c/Temp/test_svn_backup"
backup_dir_unix=`cygpath -u "$backup_dir"`

# Mysql Function 
fn_mysql() {
mysql_root="root"
mysql_password="root"
echo "Starting export MySQL ..."
# получаем список баз mySQL и бекапим все, кроме information 
mysql -u"$mysql_root" -p"$mysql_password" --protocol tcp -s -N -e "show databases;"| grep -v information | while read line;do
echo Backing up mysql schema: $line
mysqldump $line -u"$mysql_root"  -p"$mysql_password" --protocol tcp | pigz  -f -9 > $backup_dir_unix/mysql_"$line"_"$backup_date".tgz 
done
}
#End MySQL

# Postrges Function
fn_postgres() {
# экспортируем в переменные окружения имя пользователя и пароль.
export PGUSER=postgres
export PGPASSWORD=postgres
postgres_bin="/cygdrive/c/Program Files/PostgreSQL/8.3/bin"
psql_tool="/cygdrive/c/Program Files/PostgreSQL/8.3/bin/psql.exe"
cd "$postgres_bin"
echo "Starting Postgres backup ..."
# получаем список баз делаем Vacuum и бекапим все
./psql -l -t -q |awk {'print $1'}|  sed '/^$/d' | while read line; do 
    echo "Vacuuming  DB: " $line ..
    ./vacuumdb.exe $name 
    echo "Backing up DB: " $line ..
    ./pg_dump $line | pigz -f -9 > $backup_dir_unix/PSQL_"$line"_"$backup_date".tgz
done
}
#End Postgres

# SVN Function
# -------------------------------
fn_svn() {
svn_repo="/cygdrive/c/Program Files/BitNami Redmine Stack/subversion/repos"
svnadmin_tool="/cygdrive/c/Program Files/BitNami Redmine Stack/subversion/bin/svnadmin.exe"
cd "$svn_repo"
# идем в репозитарии, т.к имя директории совпадает с именем репозитория пробегаемся по всем и бекапим
ls | while read line; do
echo Backing up Repository: $line
"$svnadmin_tool" dump $line | pigz -f -9 > $backup_dir_unix/Repo_"$line"_"$backup_date".tgz
done
}
#End SVN

# MAIN BODY 
# Выбираем что будем бекапить

fn_postgres
fn_svn
fn_mysql
 
 Если статья была вам полезна - кликните на баннер или кнопку Donate :)
Яндекс.Метрика

Популярные сообщения