Существует несколько способов резервного копирования данных 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 для запуска по расписанию, которое вы предпочитаете.