Если возникла ошибка  504 Gateway Timeout (time out) в связке nginx+apache то увеличим на сервере допустимое время выполнения скриптов и ожидания ответа:
php.ini:
1
max_execution_time = 900
nginx.conf:
1
2
3
4
proxy_read_timeout  900;
client_header_timeout  10m;
client_body_timeout    10m;
send_timeout           10m;
Теперь есть 900 секунд (15 минут) на выполнение скриптов.


#!/bin/bash

# Variables
CNF=/etc/mysql/debian.cnf
BACKUPDIR=/var/backups/mysql/
DATE=`date +%F`
OLDDAYS=7

# Main part
for DATABASE in `echo SHOW DATABASES | mysql —defaults-file=${CNF} —skip-column-names`;do
BACKUPNAME=${BACKUPDIR}${DATABASE}.sql.${DATE}
BZBACKUPNAME=${BACKUPNAME}.bz2
echo Dumping ${DATABASE} into ${BZBACKUPNAME}
mysqldump —defaults-file=${CNF} ${DATABASE} > ${BACKUPNAME}; bzip2 -f ${BACKUPNAME}
done

# Deleting old backups

find ${BACKUPDIR} -mtime +${OLDDAYS} -delete

Дампит и сжимает базы данных.
Можно (и нужно) добавить его в крон, например:

00 05 * * * root /usr/local/sbin/mysqlbackup.sh