Categories: Скрипты

Пример скрипта для создания резерва MySQL

Данный скрипт написан на Unix Shell под управлением операционной системы CentOS . Он будет работать на большинстве систем семейств Linux и BSD.

Пример скрипта

Скрипт будет создавать для каждой базы свой дамп. Это необходимо для быстрого восстановления данных.

Создаем каталог для скриптов и сам скрипт:

mkdir /scripts

vi /scripts/mysql_backup.sh

  1. #!/bin/bash
  2. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  3. destination=»/backup/mysql»
  4. userDB=»backup»
  5. passwordDB=»backup»
  6. fdate=`date +%Y-%m-%d`
  7. test -d $destination/$fdate || mkdir -p $destination/$fdate
  8. find $destination -type d ( -name «*-1[^5]» -o -name «*-[023]?» ) -mtime +30 -exec rm -R {} ; 2>&1
  9. find $destination -type d -name «*-*» -mtime +180 -exec rm -R {} ; 2>&1
  10. for dbname in `echo show databases | mysql -u$userDB -p$passwordDB -Bs | egrep -v ‘information_schema|performance_schema|mysql|sys|test’`; do
  11. mysqldump —databases —skip-comments —no-tablespaces -u$userDB -p$passwordDB $dbname | gzip > $destination/$fdate/$dbname.sql.gz
  12. done;

Задаем права скрипту на выполнение:

chmod +x /scripts/mysql_backup.sh

Описание скрипта

1 Указываем на путь к интерпретатору.
2 Задаем системные переменные, чтобы не пришлось в скрипте прописывать полные пути до исполняемых файлов.
4 — 7 Задаем переменные.
4 Каталог, в котором будем сохранять резервные копии.
5 Учетная запись для подключения к базе данных.
6 Пароль для подключения к базе данных.
7 Дата, когда запускается скрипт.
9 Создаем каталог (если его нет), в который будем сохранять резервные копии. В качестве имени каталога используем дату запуска скрипта в формате ГГГГ-MM-ДД.
10 Находим все резервные копии, которые старше 30 дней и удаляем их. Оставаляем для архива файлы на 15 число.
11 Удаляем все резервные копии старше 180 дней.
13 — 15 Подключаемся к базе данных и вытаскиваем список всех баз данных (пропускаем служебные базы information_schema, mysql, performance_schema, sys, test). Для каждой делаем резервную копию.
14 Делаем резервную копию для баз.

Подготовка системы

Подключаемся к базе данных и создаем учетную запись с правом на создание резервных копий:

mysql -uroot -p

> CREATE USER ‘backup’@’localhost’ IDENTIFIED BY ‘backup’;

* в данном примере мы создаем учетную запись backup с паролем backup .

А также даем права:

> GRANT SELECT, SHOW VIEW, EVENT, TRIGGER, LOCK TABLES, EXECUTE, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER, LOCK TABLES, EXECUTE ON *.* TO backup@localhost;

Выходим из SQL-оболочки:

> quit

Сохранение данных на удаленном компьютере

Резервные копии необходимо создавать на удаленном компьютере или внешнем диске, чтобы они были доступны при выходе из строя сервера. В данном примере используется общая папка на удаленном сервере, в которой будут размещаться файлы с backup.

Чтобы упростить процесс монтирования сетевой папки, откроем на редактирование следующий файл:

# vi /etc/fstab

и добавим в него следующую строчку:

//192.168.0.1/backup /mnt cifs user,rw,noauto,credentials=/root/.smbclient 0 0

* в данном примере выполняется монтирование общей папки backup на сервере с IP-адресом 192.168.0.1 в каталог /mnt . В качестве сетевой файловой системы используется cifs (протокол SMB: сервер samba или общая папка Windows). Параметры для подключения — user : позволяет выполнить монтирование любому пользователю, rw : с правом на чтение и запись, noauto : не монтировать автоматически при старте системы, credentials : файл, в котором написаны логин и пароль для подключения к общей папке.

Теперь создадим файл с логином и паролем:

# vi /root/.smbclient

и приведем его к следующему виду:

username=backup
password=backup

* username : имя пользователя, password : пароль. Само собой, в вашем случае указываются свои данные.

Теперь введите следующую команду:

# mount /mnt

Должна примонтировать сетевая папка //192.168.0.1/backup. Это можно проверить следующей командой:

# mount

Автоматический запуск по расписанию

Создадим правило в cron для автоматического запуска нашего скрипта. Выполняем команду:

crontab -e

И добавляем строку:

0 3 * * * /scripts/mysql_backup.sh

* в данном примере мы будем запускать резервирование каждый день в 3 часа ночи.

admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

4 дня ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

4 дня ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

4 дня ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

4 дня ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

4 дня ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

4 дня ago