Simple DB backup

Материал из BiTel WiKi

Перейти к: навигация, поиск

Большое спасибо пользователю ok-2004 с форума битела за помощь

UPDATE: Схема проверена и годится для переноса DB на другой сервер.

Используем Percona XtraBackup
Собирать и компилить ничего не надо - качаем binary, просто кидаем содержимое в каталог типа /usr/sbin/ что бы пути не писать.

cat /etc/rc.d/rc.full.backup

#!/bin/bash
 
s_date=`date "+%Y-%m-%d_%H-%M-%S"`
 
s_date_log=$s_date'_log'
 
innobackupex \
--defaults-file=/var/lib/mysql/my.cnf.b \
--no-lock \
--no-timestamp \
--ibbackup=/usr/bin/xtrabackup_55 \
--user=root \
--password=mypassword \
/var/BACKUP/$s_date > /var/BACKUP/$s_date_log 2>&1
 
cp /var/lib/mysql/my.cnf /var/BACKUP/$s_date
tar -cvzf /var/BACKUP/$s_date.tar.gz /var/BACKUP/$s_date >/dev/null 2>&1
rm -rf /var/BACKUP/$s_date

внимание на my.cnf.b - это тот же my.cnf, только пути проставлены полные, типа:
datadir=/var/lib/mysql/db
innodb_data_home_dir = /var/lib/mysql/db
innodb_log_group_home_dir = /var/lib/mysql/log

Перед восстановлением, развернув из архива, бекап надо подготовить:

cat prepare.backup.sh

#!/bin/bash
 
log=$1'_log'
 
innobackupex \
--use-memory=1G \
--defaults-file=/var/lib/mysql/my.cnf.b \
--apply-log \
--ibbackup=xtrabackup_55 \
--user=root \
--password=mypassword \
/var/BACKUP/$1 > /var/BACKUP/$log 2>&1

Само восстановление проводить лучше уже руками:
бездумно не стоит копировать эти строки

#/etc/init.d/mysql stop 
#rm -rf /var/lib/mysql/db 
#mkdir /var/lib/mysql/db
 
#cp -av /var/BACKUP/full/bgbilling /var/lib/mysql/db 
#cp -av /var/BACKUP/full/mysql /var/lib/mysql/db 
#cp -av /var/BACKUP/full/performance_schema /var/lib/mysql/db 
#cp -av /var/BACKUP/full/ibd* /var/lib/mysql/db 
 
#chown -R mysql:mysql /var/lib/mysql/db 
#chown -R mysql:mysql /var/lib/mysql/log 
 
#chmod -R 775 /var/lib/mysql/ 
 
#/etc/init.d/mysql start
Личные инструменты