Резервное копирование БД#

Выдача прав пользователю для резервного копирования:

GRANT LOCK TABLES, SELECT ON *.* 
  TO 'backup'@'%' 
  IDENTIFIED BY 'my_secret_password';

Строку можно поместить в cron или sh скрипт:

for db in $(mysql -ubackup -pmy_secret_password -e 'show databases' -s --skip-column-names); do mysqldump $db -ubackup -pmy_secret_Password | gzip > "/srv/backup/mysqldump-$(hostname)-$db-$(date +%Y-%m-%d_%H-%M).gz"; done

То же самое, но чуть удобнее для восприятия:

for db in $(mysql \
  -ubackup \
  -pmy_secret_password \
  -e 'show databases' \
  -s --skip-column-names)
do 
  mysqldump $db \
    -ubackup \
    -pmy_secret_password | gzip > \
    "/srv/backup/mysqldump-$(hostname)-$db-$(date +%Y-%m-%d_%H-%M).gz"
done

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

sudo mysqldump db-name > \
  /path/to/backups/PROD_db-name_`date +%F_%H-%M-%S`.sql \
    ### MYSQL_DUMP