Бекап рабочего сервера баз данных MySQL можно делать различными способами. C одним таким способом, через bash, мы сегодня познакомимся.
Преимущество данного метода в том, что скрипт сам выбирает все нужные базы, делает дамп информации и запаковывает в архив. На выходе мы имеем полный бекап информации всех нужных БД в компактном виде.
Наш скрипт backup_mysql.sh будет выглядеть следующим образом:
#!/bin/bash
USER="Логин, который имеет доступ ко всем базам"
PASSWORD="Пароль"
OUTPUT="/usr/home/backup_mysql" #директория для хранения резервных копий
databases=`mysql --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] ; then
echo "Dumping database: $db"
mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
gzip $OUTPUT/`date +%Y%m%d`.$db.sql
fi
done
После этого необходимо дать права на запуск нашего скрипта:
chmod 700 backup.sh
Скрипт можно запускать руками или же автоматизировать это действие при помощи стандартного планировщика cron.