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
backup maken (uitleg)
Moderator: Jeroen
backup maken (uitleg)
- Bijlagen
-
- admin_backup.JPG (22.84 KiB) 9131 keer bekeken
Re: backup maken (uitleg)
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
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
Re: backup maken (uitleg)
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
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
Re: backup maken (uitleg)
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?
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?
Re: backup maken (uitleg)
Ben er achter.....
database naam begon met een hoofdletter. Dat was dus de fout.
Hij is dus in de naam ook hoofdletter gevoelig.
database naam begon met een hoofdletter. Dat was dus de fout.
Hij is dus in de naam ook hoofdletter gevoelig.
Re: backup maken (uitleg)
top,
happy use. ;-D
Nu nog de "no frames" versie en dan is iedereen weer erg happy ;-D
happy use. ;-D
Nu nog de "no frames" versie en dan is iedereen weer erg happy ;-D