Статьи

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

Существует несколько способов резервного копирования данных MySQL, однако автоматизация, безусловно, облегчает этот процесс. Обеспечение удаленного хранения резервных копий обеспечивает дальнейшую непрерывность бизнеса в случае необходимости восстановления данных в новых системах в случае сбоя оборудования и т. Д.

Потратив некоторое время на пробежку по моей сети (без необходимости изобретать велосипед для исследования эффективной процедуры резервного копирования), я наткнулся на некоторые сценарии резервного копирования от PJ Doland .

PJ (Патрик) — веб-дизайнер в Вашингтоне, округ Колумбия, ранее был связан с веб-сайтом Института CATO и хотел поделиться двумя сценариями, которые он использует. Мне понравились эти сценарии, поскольку они просты и включают в себя функциональность для автоматизации удаления резервных копий на удаленном сервере для обеспечения непрерывности бизнеса.

Первый предназначен для использования в качестве стандартной резервной копии MySQL и находится ниже:


#!/bin/bash

#####################################
### MySQL Переменные конфигурации ###
#####################################

# MySQL Hostname
DBHost = ‘локальный’

# MySQL Имя пользователя
DBUSER = ‘корень’

# MySQL Password
DBPASSWD = ‘пароль’

#####################################
### Переменные конфигурации FTP #####
#####################################

# FTP Hostname
FTPHost = ‘www.example.com’

# FTP Имя пользователя
FTPUSER = ‘имя пользователя’

# Пароль FTP
FTPPASSWD = ‘пароль’

# Локальный каталог для файлов дампа
LOCALDIR = / путь / к / локальный / каталог /

# Удаленный каталог для автономного резервного копирования
REMOTEDIR = / путь / к / удаленной / каталог /

# Префикс для резервного копирования .tar файла
TARPREFIX = DB1

#####################################
### Редактировать ниже, если необходимо #########
#####################################

CD $ LOCALDIR
SUFFIX = `дата оценки +% y% m% d`

DBS = `mysql -u $ DBUSER -p $ DBPASSWD -h $ DBHOST -e» показать базы данных «`

для базы данных в $ DBS
делать
if [$ DATABASE! = «База данных»]; тогда
FILENAME = $ SUFFIX- $ DATABASE.gz
mysqldump -u $ DBUSER -p $ DBPASSWD -h $ DBHOST $ DATABASE | gzip —best> $ LOCALDIR $ FILENAME
фи
сделано

chmod 400 $ LOCALDIR * .gz

tar -cf $ TARPREFIX- $ SUFFIX.tar $ SUFFIX — *. gz

ftp -n $ FTPHOST

Это простой скрипт, использующий mysqldump и tar / gzips файлы перед использованием ftp для перемещения данных на удаленный сервер. Этот скрипт и приведенный ниже можно легко изменить, чтобы использовать scp, если вы предпочитаете запускать передачу по ssh.

Второй скрипт обновлен для использования mysqlhotcopy и специально предназначен для использования только с таблицами ISAM / MYISAM. Этот скрипт ниже НЕ будет работать с таблицами InnoDB.


#!/bin/bash

### Переменные конфигурации

DBHost = ‘локальный’
DBUSER = ‘корень’
DBPASSWD = ‘пароль’
FTPHost = ‘ftp.example.com’
FTPUSER = ‘имя пользователя’
FTPPASSWD = ‘пароль’
LOCALDIR = / путь / к / местные /
REMOTEDIR = / путь / к / местные /
TARPREFIX = DB1

### Не редактируйте ничего ниже этой строки

CD $ LOCALDIR
SUFFIX = `дата оценки +% y% m% d`

DBS = `mysql -u $ DBUSER -p $ DBPASSWD -h $ DBHOST -e» показать базы данных «`

для базы данных в $ DBS
делать
if [$ DATABASE! = «База данных»]; тогда
FILENAME = $ SUFFIX- $ DATABASE.tar.gz
mysqlhotcopy -u $ DBUSER -p $ DBPASSWD $ DATABASE $ LOCALDIR
tar -czf $ LOCALDIR $ FILENAME $ LOCALDIR $ БАЗА ДАННЫХ
rm -rf $ LOCALDIR $ DATABASE
rm -rf $ LOCALDIR $ DATABASE-replicate
фи
сделано

chmod 400 $ LOCALDIR * .tar.gz

tar -cf $ TARPREFIX- $ SUFFIX.tar $ SUFFIX — *. tar.gz

ftp -n $ FTPHOST

Рекомендуется использовать 700 разрешений для этих сценариев оболочки, чтобы ограничить их полномочиями пользователя root, поскольку они содержат существенную информацию об имени пользователя, пароле и пути к нескольким серверам после того, как они обновлены вашей информацией.

Затем их можно добавить в cron для запуска по расписанию, которое вы предпочитаете.