[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Авто-бэкап Базы Данных
ПацаныДата: Суббота, 01.11.2014, 16:25 | Сообщение # 1
Группа: Удаленные
Сообщений: 50079





Episode 1/2/3
 
Создать файл .sh и вставить туда:
#! /bin/bash# Скрипт бэкапа базы | mysql backup script## $Id: backup-mysql.sh,v 3 2014/04/16 02:20:39 cas Exp $## введите user/password, или данные возьмуться из конфига ~/.my.cnf#MYSQL_USER="root"#MYSQL_PWD=""[-n "$MYSQL_USER"]&& ARGS="$ARGS -u$MYSQL_USER"[-n "$MYSQL_PWD"]&& ARGS="$ARGS -p$MYSQL_PWD"DATABASES=$(mysql $ARGS -D mysql --skip-column-names -B -e 'show databases;'| egrep -v 'information_schema');BACKUPDIR=/var/backupsYEAR=$(date +"%Y")MONTH=$(date +"%m")DAY=$(date +"%d")DATE="$YEAR-$MONTH/$YEAR-$MONTH-$DAY"# установите права на создание файлов/папок (rwxr-x---)umask 0027mkdir -p "$BACKUPDIR/$DATE"cd "$BACKUPDIR/$DATE"mysql $ARGS -Bse"SELECT CONCAT('SHOW GRANTS FOR \'', user ,'\'@\'', host, '\';') FROM mysql.user"| \ mysql $ARGS -Bs| \ sed 's/$/;/g'> mysql-grants.txt# "создать базу данных", для легкого копи-паста> mysql-create-databases.txtfor i in $DATABASES ;do echo "CREATE DATABASE $i;">> mysql-create-databases.txtdoneARGS2="--skip-opt --no-create-db --no-create-info --single-transaction --flush-logs"for db in $DATABASES ;do echo -n "Бэкап базы данных -- $db: схема..." mysqldump $ARGS --no-data $db > $db.schema.sql echo -n "расширеный..." mysqldump $ARGS $ARGS2 --extended-insert $db > $db.data.extended.sql # uncomment if you want complete-insert dumps too.#echo -n "данные...завершение..."#mysqldump $ARGS $ARGS2 --complete-insert $db > $db.data.complete.sql echo -n "сжатие..." gzip -9fq $db.schema.sql $db.data.extended.sql #$db.data.complete.sql echo "завершено."doneecho ""echo "Удаление старых бэкапов...завершено"find "$BACKUPDIR"-mindepth 1-a -type d -mtime +7-print0 | xargs -0r rm -rfvСохранить
Закинуть файл в папку root(или другую директорию)
 
Делаем скрипт "автоматическим" с помощью cron, для этого запишем в файл crondtab(etc/crontab) строчку:
**/24 * * * root /bin/sh root/name.shГде name.sh имя вашего файла со скриптом. После выполнить команду service crond restart в SSH.
Теперь БД будет бэкапиться каждый день.
 
Функции
  • Создание текстового документа с sql командой "CREATE DATABASE", для легкого копи-паста
  • Сжатие sql файлов в архив gz
  • Создание двух идентичных sql файлов (Схематичная и расширеная)
  • Сортирует бэкапы по дате

 
Примечания
 
1. Не ставить бэкап БД каждую минуту/час, дает нагрузку на MySQL и хостинг (дамп + архивирование)
2. Бэкапить можно вручную, введя команду ./name.sh в SSH (где name.sh имя вашего файла со скриптом).
3. Скрипт находит и бэкапит все базы данных(кроме mysql и information_schema)
4. Желательно создать файл .sh в кодировке UTF-8
5.
BACKUPDIR=/var/backupsДиректория где будут хранится бэкапы.
 
Пользуйтесь на здоровье 
 
Мини-гайд по CRON
Скрытый текст  .---------------- минута (0 - 59)
 |   .------------- час (0 - 24)
 |   |  .---------- день месяца (1 - 31)
 |   |  |   .------- месяц (1 - 12)
 |   |  |   |  .---- день недели (0 - 6) (Воскресенье=0 или 7)
 |   |  |   |  |
 *  *  *  *  * root команда директория
 
Примеры:
 
№ 1
 
* */1 * * * root php var/www/html/test.php
 
- Каждый час будет выполнятся PHP скрипт с названием test
 
№ 2
 
10 16 * * 2 root php var/www/html/test.php
 
- Каждый вторник в 16:10 будет выполнятся PHP скрипт с названием test

 
  • Страница 1 из 1
  • 1
Поиск: