Пятница, 27.12.2024
TiM
Меню сайта
Категории раздела
Мои статьи [9]
1С Бухгалтерия [1]
Arduino / ATMEGA [10]
ESP8266 [1]
OrangePi PC и Raspberry Pi 2 Model B V1.1 [4]
Шаговые двигатели [1]
PHPProBid [0]
CMS DLE (DataLife Engine) [0]
CMS Joomla [13]
SugarCRM [5]
Базы данных [5]
PHP скрипты [16]
Bash и скрипты [27]
IP АТС Elastix / Asterisk [12]
CentOS [6]
Debian [8]
Lubuntu / LinuxMINT [29]
Windows [28]
Умный дом [1]
Сервера [16]
Natural Selection [1]
System Shock 2 [1]
Форма входа
Главная » Статьи » Базы данных

XtraBackup Резервное копирование MySQL

XtraBackup — это утилита от Percona Labs, предназначенная для горячих бекапов таблиц InnoDB и XtraDB.

Установка

Загружаем последнею версию с официальной страницы http://www.percona.com/downloads/XtraBackup/

Использование

mysql-xtrabackup.sh

#!/bin/sh

# http://www.percona.com/software/percona-xtrabackup

#innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=[password] --rsync --compress --throttle=2 /var/backups/mysql/22

# --throttle=1 - для замедления и уменьшения нагрузки на процессов
# --compress -совместима только с --stream=xbstream, упаковывает хуже чем bzip2,
# совместно с bzip дает результат хуже чем один bzip2 и дает большую нагрузку на процессор.
# --xbstream=tar совместно с bzip2 дает максимальное сжатие, но не совместимо с шифрованием!
# bzip2 -s - для уменьшения использования оперативной памяти и снижении нагрузки н процессор при упаковке
# (только для небольших баз!, сильно увеличивается время упаковки
# --parallel=4 - запускать указанное кол-во параллельных процессов для ускорения (для многопроцессорных систем)

# Генерируем ключь для шифроваия резервной копии
#openssl enc -aes-256-cbc -pass pass:123 -P -md sha512 > encrypt.key

# Создаем резервную копию всех БД и упаковываем в xbstream.bz2
# innobackupex --defaults-file=/etc/mysql/my.cnf --socket=/var/run/mysqld/mysqld.sock \
#--user=root --password=ydvPj6fXW@Uwzhm --stream=xbstream --throttle=1 \
#/var/backups/mysql/22/ | bzip2 -zs9 - > /var/backups/mysql/22/66.xbstream.bz2
# --tmpdir=/var/backups/mysql/tmp

# Распаковываем бекап bzip2/xbstream (если использовали опцию --stream=xbstream)
#bzip2 -dkc /var/backups/mysql/22/66.xbstream.bz2 | xbstream -x -C /var/backups/mysql/22/11/

# Распаковываем чистый бекап xbstream, если дополнительно не использовали bzip2 или gzip (если использовали опцию --stream=xbstream)
#xbstream -x < /var/backups/backup.xbstream -C /var/backups/mysql/22/11/

# Создаем зашифрованную резервную копию всех БД и упаковываем в xbstream.bz2 и передаем в split для нарезки
# innobackupex --defaults-file=/etc/mysql/my.cnf --socket=/var/run/mysqld/mysqld.sock \
#--user=root --password=ydvPj6fXW@Uwzhm --stream=xbstream --compress --throttle=100 --encrypt=AES256 --encrypt-key-file=/etc/mysql/encrypt.key \
#/var/backups/mysql/22/ | bzip2 -zs9 | split -b 100m - /var/backups/mysql/22/66.xbstream.bz2

MYSQL_USER="login"
MYSQL_PSWD="password"

# Задаем лимит операций Input/Otput с жестким диском
IOS="2"
# Задаем лимит использования оперативной памяти
RAM_LIMIT="10MB"
# Задаем размер составного архива (для утилиты split)
VOLUME_SIZE="100m"

LOG="/var/log/mysql/innobackupex.log"
TMP_DIR="/tmp"
# Задаем каталог куда будем складывать резерные копии
DST="/var/backups/mysql"
# Указываем имя сервера (будет указано в имени архива)
NAME="NEMO"

INNOBACKUPEX="/usr/bin/innobackupex"
NICE="/usr/bin/nice -n 20"
BZIP2="/bin/bzip2"
SPLIT="/usr/bin/split"


# Удалить резервные копии старше 7 дней
find /var/backups/mysql/* -type f -mtime +7 -delete

# Создаем резервную копию всех БД и упаковываем в tar.bz2 и передаем в split для нарезки
 $NICE $INNOBACKUPEX --defaults-file=/etc/mysql/my.cnf --socket=/var/run/mysqld/mysqld.sock \
--tmpdir=$TMP_DIR \
--use-memory=$RAM_LIMIT --throttle=$IOS \
--stream=tar \
--user=$MYSQL_USER --password=$MYSQL_PSWD \
$DST | $BZIP2 -zs9 | $SPLIT -b $VOLUME_SIZE - $DST/mysql_${NAME}_all_backup-$(date +"%H:%M-%d.%m.%Y").tar.bz2



# Склеиваем нарезанный архив
#cat /var/backups/mysql/mysql_all_backup.tar.bz2* > /var/backups/mysql/mysql_all_backup.tar.bz2

# Распаковываем архив бекамом БД tar.bz2
#tar -xijf /var/backups/mysql/mysql_all_backup.tar.bz2 -C /var/backups/mysql/22/

# Распаковываем бекап bzip2/xbstream (если использовали опцию --stream=xbstream)
#bzip2 -dkc /var/backups/mysql/22/66.xbstream.bz2 |

#innobackupex --decrypt=AES256 --encrypt-key-file=/etc/mysql/encrypt.key /var/backups/mysql/22/

#xbstream -x -C /var/backups/mysql/22/11/

# Распаковываем чистый бекап xbstream, если дополнительно не использовали bzip2 или gzip (если использовали опцию --stream=xbstream)
#xbstream -x < /var/backups/backup.xbstream -C /var/backups/mysql/22/11/

# Для подготовки бекапа к восстановлению, обрабатываем лог транзакций
#innobackupex --apply-log --use-memory=50MB /var/backups/mysql/22/

#Востанавливаем базы данных из бекапа (можно просто остановить сервер и вручную скопировать файлы)
#innobackupex --copy-back /path/to/BACKUP-DIR

# При необходимости меняем владельца файлов
#chown -R mysql:mysql /var/lib/mysql
Категория: Базы данных | Добавил: Timofey (13.01.2016)
Просмотров: 1260
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
YANDEX
Яндекс.Метрика
Сайты
  • Харьковский Юридический Альянс
  • Оцифровка кинопленки
  • TiM ©
    Харьков 2024