Пацаны | Дата: Суббота, 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
|
|
| |