задание cron для резервного копирования базы данных в linux / php - PullRequest
4 голосов
/ 12 декабря 2010

Я новичок в Linux cron, я использую mysql DB, мою базу данных с именем finaldb, я хочу использовать эту базу данных каждый час,

У меня есть папка с именем dailbackup, в ней у меня есть папка по дате, в каждой папке у меня есть резервная копия файла mysql db

имя типа final_db_9.sql (эта резервная копия сделана в 9 утра), final_db_13.sql (эта резервная копия сделана в полдень 13:00, вот так:

этот процесс в данный момент делаю вручную, возможно ли сделать это автоматизацией, любые идеи, предложения,

Ответы [ 5 ]

6 голосов
/ 12 декабря 2010

Создайте скрипт PHP, содержащий следующее:

$dbFile = 'final_db'.date('H').'.sql.gz';
$dbHost = 'localhost'; // Database Host
$dbUser = 'username'; // Database Username
$dbPass = 'password'; // Database Password
exec( 'mysqldump --host="'.$dbHost.'" --user="'.$dbUser.'" --password="'.$dbPass.'" --add-drop-table "finaldb" | gzip > "'.$dbFile.'"' );
5 голосов
/ 12 декабря 2010

Создайте где-нибудь скрипт для создания резервных копий, как этот (непроверенный, но должен работать):

#!/bin/bash

BKPDIR=dailbackup  # You must use absolute path here
DB=finaldb
USERNAME=myusername
PASSWORD=mypassword

BKPFILE=${BKPDIR}/`date +%Y-%m-%d`/final_db_`date +%H`.sql

# Create backup
mysqldump --user=${USERNAME} --password=${PASSWORD} ${DB} | gzip -c > ${BKPFILE}

# Remove older backups (> 7 days),
# unless you want to run out of drive space
find ${BKPDIR} -mtime +7 -print0 | xargs -0 rm -rf

Затем настройте этот скрипт так, чтобы он выполнялся как почасовой кронхоб:

crontab -e

0 * * * * /absolute-path-to-where-you-saved-the-script
2 голосов
/ 12 декабря 2010
crontab -e

положить это:

the_date='date +%Y%m%d'
the_hour='date +%H'
0 * * * * mysqldump OPTIONS > /dailbackup/`$the_date`/final_db_`$the_hour`.sql

вышеуказанный cron позволяет вам резервировать базу данных каждый час и использовать %H в качестве имени файла sql

1 голос
/ 12 декабря 2010

Да, конечно, вы можете делать это, пока ваш сервер MySQL работает и слушает :). Вам нужно будет создать сценарий оболочки или perl и использовать команду edit crond с помощью следующей команды (в Fedora):

crontab -e

Компоненты вашей работы cron: ::

1) Путь к вашему скрипту (исполняемый)

2) Минуты (00-59)

3) Часы (00 - 23)

4) Месяц (01-12)

5) День (01-31)

6) День недели (00 -06 с 00 как воскресенье)

Пример :: Вы хотите запускать скрипт test_pl каждый день в 1200

запись в crontab будет ::

00 12 * * * / home / jok / test_pl

1 голос
/ 12 декабря 2010

непроверенный один вкладыш:

mysqldump -u*user* -p*password* -P*dbport* -h localhost finaldb > /.../dailbackup/final_db_$(date +%Y-%m-%d_%H_%M).sql

просто добавьте его в свою работу cron или заверните в скрипт, и все готово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...