В этом руководстве вы узнаете, как создать скрипт который будет выполнять резервное копирование всех ваших баз данных MySQL. Вы также узнаете, как настроить запланированное задание для ежедневного запуска сценария резервного копирования.
Создайте файл с именем mysql-backup.sh в папке scripts:
Теперь у вас должна быть ежедневная резервная копия всех ваших баз данных MySQL.
Шаг 1: Создайте скрипт резервного копирования
Создайте папку для хранения вашего резервного скрипта. Я предлагаю / scripts для этого примера:
sudo mkdir /scripts
Создайте файл с именем mysql-backup.sh в папке scripts:
sudo vim /scripts/mysql-backup.sh
Добавьте следующий код в файл и сохраните его:
#!/bin/bash
#----------------------------------------
# OPTIONS
#----------------------------------------
USER='root' # MySQL User
PASSWORD='webdev' # MySQL Password
DAYS_TO_KEEP=0 # 0 to keep forever
GZIP=1 # 1 = Compress
BACKUP_PATH='/backups/mysql'
#----------------------------------------
# Create the backup folder
if [ ! -d $BACKUP_PATH ]; then
mkdir -p $BACKUP_PATH
fi
# Get list of database names
databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "|" | grep -v Database`
for db in $databases; do
if [ $db == 'information_schema' ] || [ $db == 'performance_schema' ] || [ $db == 'mysql' ] || [ $db == 'sys' ]; then
echo "Skipping database: $db"
continue
fi
date=$(date -I)
if [ "$GZIP" -eq 0 ] ; then
echo "Backing up database: $db without compression"
mysqldump -u $USER -p$PASSWORD --databases $db > $BACKUP_PATH/$date-$db.sql
else
echo "Backing up database: $db with compression"
mysqldump -u $USER -p$PASSWORD --databases $db | gzip -c > $BACKUP_PATH/$date-$db.gz
fi
done
# Delete old backups
if [ "$DAYS_TO_KEEP" -gt 0 ] ; then
echo "Deleting backups older than $DAYS_TO_KEEP days"
find $BACKUP_PATH/* -mtime +$DAYS_TO_KEEP -exec rm {} \;
fi
В начале этого скрипта вы заметите 5 настраиваемых параметров. Основные из них, которые вам нужно будет отредактировать - это ПОЛЬЗОВАТЕЛЬ и ПАРОЛЬ. Это должно быть изменено на пользователя и пароль MySQL, который имеет разрешения на создание списка и резервное копирование баз данных.
После того, как вы изменили параметры, сделайте сценарий исполняемым с помощью следующей команды:
sudo chmod +x mysql-backup.sh
Теперь вы можете протестировать скрипт резервного копирования, выполнив:
sudo ./mysql-backup.sh
Шаг 2. Создание запланированной задачи в crontab
Теперь мы запланируем ежедневный запуск скрипта резервного копирования. Мы сделаем это, добавив вызов скрипта mysql-backup.sh в cron. Выполните следующую команду, чтобы добавить скрипт в crontab:
sudo crontab -e
Теперь добавьте к последней строке файла следующее:@daily sh /scripts/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1
Теперь у вас должна быть ежедневная резервная копия всех ваших баз данных MySQL.
Комментарии
Отправить комментарий