MySQL — Резервное копирование базы данных ежедневно

Я разработал программу, которая работает (на стороне сервера) с PHP и MySQL. Последнее, что мне нужно сделать, это сделать автоматическое ежедневное резервное копирование базы данных.

Это то, что я подумал, может быть самым простым: написать скрипт php, который раз в 24 часа сохраняет файл (имя которого будет меткой времени) в определенной папке на сервере. В сочетании с машиной времени или другим программным обеспечением для резервного копирования этой папки на внешний диск должно быть достаточно.

Итак, теперь вопросы: как мне сделать PHP-скрипт для автоматического запуска один раз в день? Как сохранить файл с резервной копией sql из скрипта php? (Аналог экспорта phpMyAdmin как sql)

Спасибо!

0

Решение

Если вы работаете apache сервер:

sudo nano /etc/crontab

Добавьте ниже строки:

0 0 * * * root mysqldump -u root -proot db_name > /home/username/db_backup/$( date +"\%Y_\%m_\%d" ).sql

0 0 * * * => каждые 24 часа

4

Другие решения

Если ваш сервер Linux, вы можете создать cron, используя этот скрипт: cronsql.sh ,

#!/bin/bash

path=/home/backup/
projet=(databasename1 databasename2)
now=$(date +"%Y-%m-%d")

for arg in ${projet[*]}
do
if [ ! -d $path$arg ]; then
mkdir $path$arg
fi
cd $path$arg
mkdir dump$now
cd dump$now
mysqldump -dBR --triggers -p"dbpassword" $arg > structure.sql
mysqldump --no-create-info -p"dbpassword" $arg > data.sql

done

Он создаст папку с именем базы данных.
Внутри папка с датой
Внутри папки файл struct.sql и файл data.sql

>databasename1
---->20151009
---->data.sql
---->structure.sql
---->20151008
---->data.sql
---->structure.sql
---->20151007
---->data.sql
---->structure.sql

для крон
использование crontab -e

затем добавьте 59 23 * * * /home/backup/cronsql.sh если cronsql.sh находится в / home / backup /

И последнее но не менее важное,
вы можете добавить в crontab

01 01 * * * find /home/backup/ -mindepth 2 -ctime +30 -exec rm -fr {} +

Он удалит каждый файл / папку старше 30 дней.
Таким образом, у вас есть резервная копия за последние 30 дней.
И нет необходимости чистить его вручную

0

Я обнаружил, что вы можете сделать это с * летучей мышью, если вы работаете в Windows.
Это сохранит ваши базы данных как zip, вы также можете загрузить их в ftp, немного изменив этот скрипт.
Перейдите по этой ссылке:
http://www.redolive.com/utah-web-designers-blog/automated-mysql-backup-for-windows/
Это легко сделать, если у вас есть какие-либо вопросы, просто спросите

0