Архивиране на база данни през PHP

cloxy

Super Moderator
Екип
Някой може ли да ми каже как през PHP може да се генерира архив (SQL файл) на MySQL база данни?

Пробвах с mysqldump, но той изисква използването на функции, като system() и exec(), които обикновено са забранени заради сигурността.

Пробвах и с MySQL конструкции, като "SELECT * INTO OUTFILE archive.sql FROM tablename", но пак има някакви ограничения по хостовете, заради сигурността и/или слага файла в недостъпни за мен директории на MySQL.

Някой да знае някакъв по-лесен и ефективен начин? Има добавки за Wordpress, които го правят някакси, значи има начин, но не ми се играе да ги разглеждам.
 
Re: Архивиране на база данни през PHP

доколкото разбрах таблицата в базата е само една(и ти трябва само за backup) - тогава що не я експортнеш в csv файл(Excel)? това със сигурност ще работи навсякъде
 
Re: Архивиране на база данни през PHP

Може да се напише скрипт на PHP естествено.
Тук има един готов клас, който може да се ползва
Код:
http://www.phpclasses.org/browse/package/1931.html

Аз преди време бях изкарал дъмп модула на phpmyadmin да правя автоматични бакъпи в един проект също.
 
Re: Архивиране на база данни през PHP

Ъм най-добре се обърни към съпорта на хостинг компанията, щом си на shared hosting?? 🙂)
Те тря ти дадат решение как да си бекъпваш. По принцип повечето читави компании предлагат phpMyAdmin или друго решение за да се бекъпва.

Можеш разбира се да пробваш и със директно извличане на данните и генериране на query-та ама ще стане куцо и трябва да си много наясно със schema-та на таблицата.

Пример:
Код:
<?php
...
$request = mysql_query ("select * from ".$table);
$i=0;
while ($result = mysql_fetch_assoc($request)) { 
    $objects[$i]->setId ($result['ID']);
    ...
    $i++;
}
$backup.="CREATE TABLE `".$table."` ( ... //пишеш си schema-ta 
for ($j=0;$j<$i;$j++) {
    $backup.="INSERT INTO ".$table." VALUES (".$objects[$i]->getId()... //дописваш си заявката
}
echo $backup; // :)
?>
- разбира се, такъв подход би бил удачен единствено ако таблицата която експортваш не е с много полета, щото иначе бая ще има да пишеш заявки! успех!
 
Re: Архивиране на база данни през PHP

@voyager - Правя един CMS и идеята ми беше, ако потребителят вземе, че омаже някоя страница, да мога да я възстановя. Тоест, да се прави архив на базата след първото логване за деня на потребител.

Като гледам колко сложно става - ще взема да си направя една огледална таблица (аз общо взето една таблица ще архивирам) и ще правя в нея архив със заявки от типа INSERT INTO SELECT. Лошото е, че си нямам архив, ако хостингът нещо се сгафи.
 
Re: Архивиране на база данни през PHP

Ако имаш достъп до базата от отдалечен хост
можех там да пуснеш mysqldump
 
Re: Архивиране на база данни през PHP

Защо не пробваш с някакъв versioning, например нещо такова?
Ако ползваш някакъв framework виж дали няма плъгин за тая цел.
 

Back
Горе