Обложка канала

Системный администратор

18542 @i_odmin

Системный администратор. Все для системного администратора: библиотека электронных книг, полезные статьи, мануалы.

Системный администратор

4 года назад
Открыть в
Скрипт для создания бекапов БД с помощью Percona XtraBackup Скрипт предназначен для создания резервных копий баз данных (в субботу — полная резервная копия, в остальные дни — инкрементальные). #!/bin/bash # Скрипт делает резервную копию БД # если сервер MySQL не запущен, то выходим MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" ping_output=`$MYADMIN ping 2>&1`; ping_alive=$(( ! $? )) if [ $ping_alive = 0 ]; then logger -t mysql-backup 'MYADMIN ping FAIL' exit fi BACKUP="/usr/bin/innobackupex-1.5.1 --no-lock" workdir="/usr/local/tmp/" DofW=`date +'%u'` full=0 incr=0 # если суббота - делаем полный бекап, иначе инкрементальный if [ "$DofW" = "6" ]; then full=1 logger -t mysql_backup 'make full backup' else incr=1 logger -t mysql_backup 'make incremental backup' fi if [ $full == '1' ]; then logger -t mysql_backup 'start mysql full backup' dump="mysql"`date +%Y%m%d`"full.tar" ext=".gz" # при распаковке использовать ключ -i, например tar -ixvf backup.tar $BACKUP --user=USER --password=PASSWORD --stream=tar ./ | pigz -p 5 > ${workdir}${dump}${ext} logger -t mysql_backup 'finish mysql full backup, start rsync' # с помощью rsync копируем резервную копию на удаленный сервер rsync --bwlimit=5000 ${workdir}${dump}${ext} 192.168.0.4::backup logger -t mysql_backup 'finish rsync' rm -f ${workdir}/mysql* fi if [ $incr == '1' ]; then logger -t mysql_backup 'start mysql incremental backup' # получаем значение LSN из последнего лога бекапа LSN=`cat /usr/local/sbin/innobackupex.log | grep "The latest check point (for incremental):" | awk -F"'" '{print $2}' | tail -n 1` echo $LSN > /usr/local/sbin/lsn dump="mysql"`date +%Y%m%d`"incr" archiv="mysql"`date +%Y%m%d`"incr.tar.gz" ext=".tar.gz" $BACKUP --user=USER --password=PASSWORD --incremental --incremental-lsn=$LSN --stream=xbstream ./ > ${workdir}${dump}.xbstream logger -t mysql_backup 'finish mysql incremental backup, start tar' cd ${workdir} `tar -czf $archiv $dump.xbstream` rm -f ${workdir}/*.xbstream logger -t mysql_backup 'finish tar, start rsync' # с помощью rsync копируем резервную копию на удаленный сервер rsync --bwlimit=5000 ${workdir}${dump}${ext} 192.168.0.4::backup logger -t mysql_backup 'finish rsync' rm -f ${workdir}/mysql* fi #Percona #XtraBackup 👉 @database_info