Въпреки че можете да изпълнявате команди за архивиране от PHP, те всъщност нямат нищо общо с PHP. Всичко е за MySQL.
Бих предложил да използвате помощната програма mysqldump за архивиране на вашата база данни. Документацията може да бъде намерена тук:http://dev.mysql. com/doc/refman/5.1/en/mysqldump.html .
Основното използване на mysqldump е
mysqldump -u user_name -p name-of-database >file_to_write_to.sql
След това можете да възстановите архива с команда като
mysql -u user_name -p <file_to_read_from.sql
Имате ли достъп до cron? Бих предложил да направите PHP скрипт, който изпълнява mysqldump като cron работа. Това би било нещо като
<?php
$filename='database_backup_'.date('G_a_m_d_y').'.sql';
$result=exec('mysqldump database_name --password=your_pass --user=root --single-transaction >/var/backups/'.$filename,$output);
if(empty($output)){/* no output is good */}
else {/* we have something to log the output here*/}
Ако mysqldump не е наличен, статията описва друг метод, използвайки SELECT INTO OUTFILE
и LOAD DATA INFILE
команди. Единствената връзка с PHP е, че използвате PHP за свързване към базата данни и изпълнение на SQL командите. Можете също да направите това от програмата MySQL на командния ред, MySQL монитора.
Доста е просто, вие пишете SQL файл с една команда и го зареждате/изпълнявате, когато дойде време за възстановяване.
Можете да намерите документите за избор в изходящ файл тук (просто потърсете в страницата за outfile). LOAD DATA INFILE е по същество обратното на това. Вижте тук за документите.