backup maken (uitleg)

Installatie problemen / opmerkingen

Moderator: Jeroen

Plaats reactie
paheve
Berichten: 108
Lid geworden op: di 26 feb 2008, 21:14

backup maken (uitleg)

Bericht door paheve »

Hola mensen,

Ik heb een php scripje gevonden (en een beetje aangepast) die een full backup maakt.
Deze heb ik aan het admin menu gekoppeld zodat een admin nu snel een full backup kan maken.
Misschien iets om standaard mee te nemen...

op mijn website (in de ek2008 directory) heb ik een folder aangemaakt met de naam "backups"
In deze folder heb ik onderstaande php code gezet:

-----------knip-----------

<?php
// +------------------------------------------------------------------+
// | Usage :
// | 1. Fill in the dbuser, dbname, and dbpwd fields below.
// | 2. set up a cron job to call this file.
// | this will create a backup of the db, in an .sql file, which can be restored via phpmyadmin.
// |
// | you can test it via http://www.domain.com/[folder]/cron_bac ... ?verbose=1
// |
// | Referrences :http://www.interspire.com/content/artic ... on-to-Cron
// +------------------------------------------------------------------+

$dbuser = 'user';
$dbpwd = 'wachtwoord';
$dbname = 'databasenaam';
$dbhost = 'localhost';
$dbprefix = '';
if(!$mycon = @mysql_connect($dbhost,$dbuser,$dbpwd)) die('Database Error: '.mysql_error());
elseif(!@mysql_select_db($dbname,$mycon)) die ('Database Error: '.mysql_error());

error_reporting(E_ALL & ~E_NOTICE);
$verbose = !empty($_REQUEST['verbose']) ? 1 : 0;
@set_time_limit(600); // try to give ourselves plenty of time to run

function backup_mysql()
{
global $dbname, $verbose;
$backticks =1;
$ticks = ($backticks == 1)? '`' : "'";
$set['data'] = 1; //with data;
$set['endit'] = 1;
$set['usedrop']= 1;

$tables = mysql_list_tables($dbname) or die(mysql_error());
$gettables = @mysql_num_rows($tables);

$a .= "##--------------------------------------------\r\n";
$a .= "##--------------------------------------------\r\n";
$a .= "##--".$_SERVER['SERVER_NAME']." mySQL Database : ".$dbname."\r\n";
$a .= "##--Total Tables : ".$gettables." Saved On :".date("Y-m-d H:i:s",time())." \r\n";
$a .= "##--------------------------------------------\r\n";
$a .= "##--------------------------------------------\r\n\r\n";
if($verbose) echo "<pre>".$a."</pre>";

$ender = ($set['endit']) ? ';':'';

$sql = mysql_query("SHOW TABLES");
while($table1 = mysql_fetch_array($sql))
{
$table = $table1[0];
$a .= "\r\n##------------------ ".$table." ----------------------\r\n \r\n";

$drop = "DROP TABLE IF EXISTS $ticks".$table.$ticks.$ender."\r\n";
$a .= ($set['usedrop']== 1) ? $drop:'';

$row1 = mysql_query("SHOW CREATE TABLE ".$table) or die(mysql_error());
$row2 = mysql_fetch_array($row1);
$row2 = ($backticks == 1) ? $row2[1] : str_replace("`","'",$row2[1]);
$a .= $row2.$ender."\r\n";

//data
$a .= ($set['data'] == 1) ? "\r\n".backup_table($table,$set['endit']):'';
$a .= "\r\n\r\n\r\n\r\n";
}
$a .= "##------------ END OF FILE ----------------------\r\n \r\n";
define( '_MSOL_PATH', dirname(__FILE__) );
$filename = _MSOL_PATH.'/sql_'.$dbname.'_'.date("dmy_His",time()).'.sql';

$filelength = strlen($a);
$filedata = $a;
if($verbose) echo "<pre> Path : ".$filename."</pre>";

if (!$handle = fopen($filename, 'w+')) {
die("Failed to open stream : ".$filename);
}
if (!fwrite($handle,$filedata)){
die("Fail - Not able to right to file : ".$filename);
}
fclose($handle);
exit();
}
function backup_table($table,$endit=0)
{
global $dbname, $verbose;

$sql = mysql_query("SELECT * FROM $table") or die(mysql_error());
$count = mysql_num_rows($sql);

$backticks = 1;
$ticks = ($backticks == 1)? '`' : "'";
$countit = mysql_num_fields($sql);

while ($row = mysql_fetch_array($sql))
{
$a .= "INSERT INTO $ticks".$table."$ticks SET ";

for ($i=0; $i < $countit; $i++)
{
$get = mysql_fetch_field($sql,$i);
$a .= $ticks.$get->name.$ticks."='".addslashes(stripslashes($row[$i]))."'";

if ($i+1 < $countit)
{
$a .= ", ";
}
}

$a .= ($endit == 1 )? ";":"";
$a .= "\r\n";
}

return $a;

}

if($verbose) echo "<br>Starting Backup!";
backup_mysql();

?>


-------------------knip-----

Deze code maakt een sql bestand aan met de naam van de database_de datum en tijd. Dit is een FULL backup.


Vervolgens heb ik de menu.php aangepast met deze regels:

-----knip----
print "<br><b>Backup</b><br>";
Print "<a href=backups/bck.php?verbose=1 target=main>Database backup</a><br>";
Print "<a href=backuphelp.php target=main>Database backup help</a><br><br>";
-----knip----
De laatse regel is een help file voor restore uit te voeren... zie http://ek2008.eekhoornlaan.nl/backuphelp.php

gr,

Paheve
Bijlagen
admin_backup.JPG
admin_backup.JPG (22.84 KiB) 9130 keer bekeken
scherrenburg

Re: backup maken (uitleg)

Bericht door scherrenburg »

Hoi,

Ziet er goed uiten een geweldig idee.

Maar...
Ik krijg dus de volgende melding:
Database Error: Access denied for user 'ek2008'@'localhost' to database 'Ek2008'

Terwijl ik 100% zeker weet dat het juist ingevuld is.
Databasenaam, gebruiker n wachtwoord.

Zou het een ander probleem kunnen zijn?

groet,

Peter
paheve
Berichten: 108
Lid geworden op: di 26 feb 2008, 21:14

Re: backup maken (uitleg)

Bericht door paheve »

Hola Peter,

je gebruikt toevallig niet een usernaam en wachtwoord wat je in de pool ingegeven hebt?
Het gaat hier om de sql gegevens..... deze staan ook in de config.php file. Het lijkt tich echt een rechten probleem.
Als ik namelijk in wil loggen met een gebruiker die niet bekend is krijg is deze melding:
Database Error: Access denied for user 'user4532'@'localhost' (using password: YES)

Gr,

Paheve
scherrenburg

Re: backup maken (uitleg)

Bericht door scherrenburg »

Hoi,
Nee het is geen probleem van een gebruikersnaam van de poel.
Het is echt de sql username en paswoord.
Misschien dat ik met die naam niet genoeg rechten heb om de database te backuppen?
scherrenburg

Re: backup maken (uitleg)

Bericht door scherrenburg »

Ben er achter.....
database naam begon met een hoofdletter. Dat was dus de fout.
Hij is dus in de naam ook hoofdletter gevoelig.
paheve
Berichten: 108
Lid geworden op: di 26 feb 2008, 21:14

Re: backup maken (uitleg)

Bericht door paheve »

top,
happy use. ;-D
Nu nog de "no frames" versie en dan is iedereen weer erg happy ;-D
Plaats reactie

Terug naar “Installatie”