Chociaż możesz wykonywać polecenia tworzenia kopii zapasowych z PHP, tak naprawdę nie mają one nic wspólnego z PHP. Wszystko sprowadza się do MySQL.
Sugeruję użycie narzędzia mysqldump do wykonania kopii zapasowej bazy danych. Dokumentację można znaleźć tutaj:http://dev.mysql. com/doc/refman/5.1/en/mysqldump.html .
Podstawowe użycie mysqldump to
mysqldump -u user_name -p name-of-database >file_to_write_to.sql
Następnie możesz przywrócić kopię zapasową za pomocą polecenia takiego jak
mysql -u user_name -p <file_to_read_from.sql
Czy masz dostęp do crona? Sugerowałbym stworzenie skryptu PHP, który uruchamia mysqldump jako zadanie cron. To byłoby coś w stylu
<?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*/}
Jeśli mysqldump nie jest dostępny, artykuł opisuje inną metodę, używając SELECT INTO OUTFILE
i LOAD DATA INFILE
polecenia. Jedynym połączeniem z PHP jest to, że używasz PHP do łączenia się z bazą danych i wykonywania poleceń SQL. Możesz to również zrobić z poziomu programu MySQL wiersza poleceń, monitora MySQL.
To całkiem proste, piszesz plik SQL za pomocą jednego polecenia i ładujesz/wykonujesz go, gdy nadejdzie czas na przywrócenie.
Dokumentację do wyboru w pliku outfile można znaleźć tutaj (wystarczy wyszukać na stronie plik wyjściowy). LOAD DATA INFILE jest zasadniczo odwrotnością tego. Zobacz tutaj dla dokumentów.