New backup format with commands in CLI.
This commit is contained in:
@@ -114,7 +114,8 @@ class DataBaseMaintenance
|
||||
public function setTempDir($tmpDir)
|
||||
{
|
||||
$this->tmpDir = $tmpDir;
|
||||
mkdir($this->tmpDir);
|
||||
if (!file_exists($tmpDir))
|
||||
mkdir($this->tmpDir);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -313,11 +314,6 @@ class DataBaseMaintenance
|
||||
|
||||
}
|
||||
|
||||
printf("%-70s", "UNLOCK TABLES");
|
||||
if( @mysql_query("UNLOCK TABLES;") )
|
||||
echo " [OK]\n";
|
||||
else
|
||||
echo "[FAILED]\n";
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -414,6 +410,28 @@ class DataBaseMaintenance
|
||||
$mysqli->close();
|
||||
}
|
||||
|
||||
function lockTables() {
|
||||
$aTables = $this->getTablesList();
|
||||
if (empty($aTables))
|
||||
return false;
|
||||
printf("%-70s", "LOCK TABLES");
|
||||
if( @mysql_query("LOCK TABLES ".implode(" READ, ", $aTables)." READ; ") ) {
|
||||
echo " [OK]\n";
|
||||
return true;
|
||||
} else {
|
||||
echo "[FAILED]\n".mysql_error()."\n";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function unlockTables() {
|
||||
printf("%-70s", "UNLOCK TABLES");
|
||||
if( @mysql_query("UNLOCK TABLES;") )
|
||||
echo " [OK]\n";
|
||||
else
|
||||
echo "[FAILED]\n".mysql_error()."\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* dumpSqlInserts
|
||||
*
|
||||
@@ -421,51 +439,21 @@ class DataBaseMaintenance
|
||||
*
|
||||
* @return integer $bytesSaved;
|
||||
*/
|
||||
function dumpSqlInserts($table)
|
||||
function dumpSqlInserts($table)
|
||||
{
|
||||
|
||||
$bytesSaved = 0;
|
||||
$this->outfile = $this->tmpDir . $table . '.sql';
|
||||
$metadatafile = $this->tmpDir . $table . '.meta';
|
||||
|
||||
//if the file exists delete it
|
||||
if( is_file($this->outfile) ) {
|
||||
@unlink($this->outfile);
|
||||
}
|
||||
$fp = fopen($this->outfile, "wb");
|
||||
$fpmd = fopen($metadatafile, "wb");
|
||||
printf("%-70s", "LOCK TABLES $table READ");
|
||||
if( @mysql_query("LOCK TABLES $table READ; ") )
|
||||
echo " [OK]\n";
|
||||
else
|
||||
echo "[FAILED]\n".mysql_error()."\n";
|
||||
$result = @mysql_query("SELECT * FROM `$table`");
|
||||
|
||||
//echo "FLUSH TABLES WITH READ LOCK ................";
|
||||
/*if( @mysql_query("FLUSH TABLES WITH READ LOCK;") )
|
||||
echo "[OK]\n";
|
||||
else
|
||||
echo "[FAILED] - ".mysql_error()."\n";
|
||||
*/
|
||||
|
||||
$num_rows = mysql_num_rows($result);
|
||||
$num_fields = mysql_num_fields($result);
|
||||
|
||||
|
||||
$data = "";
|
||||
for( $i = 0; $i < $num_rows; $i ++ ) {
|
||||
|
||||
$row = mysql_fetch_object($result);
|
||||
$data = "INSERT INTO `$table` (";
|
||||
|
||||
// Field names
|
||||
for( $x = 0; $x < $num_fields; $x ++ ) {
|
||||
$field_name = mysql_field_name($result, $x);
|
||||
$data .= "`{$field_name}`";
|
||||
$data .= ($x < ($num_fields - 1)) ? ", " : false;
|
||||
}
|
||||
|
||||
$data .= ") VALUES (";
|
||||
|
||||
// Values
|
||||
$data .= "INSERT INTO `$table` VALUES (";
|
||||
|
||||
for( $x = 0; $x < $num_fields; $x ++ ) {
|
||||
$field_name = mysql_field_name($result, $x);
|
||||
|
||||
@@ -474,22 +462,10 @@ class DataBaseMaintenance
|
||||
}
|
||||
|
||||
$data .= ");\n";
|
||||
$fsData = sprintf("%09d", strlen($data));
|
||||
fwrite($fpmd, "$fsData\n");
|
||||
$bytesSaved += fwrite($fp, $data);
|
||||
}
|
||||
|
||||
printf("%-59s%20s", "Dump of table $table", "$bytesSaved Bytes Saved\n");
|
||||
|
||||
printf("%-70s", "UNLOCK TABLES");
|
||||
if( @mysql_query("UNLOCK TABLES;") )
|
||||
echo " [OK]\n";
|
||||
else
|
||||
echo "[FAILED]\n".mysql_error()."\n";
|
||||
|
||||
fclose($fp);
|
||||
fclose($fpmd);
|
||||
return $bytesSaved;
|
||||
printf("%-59s%20s", "Dump of table $table", strlen($data) . " Bytes Saved\n");
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -499,7 +475,7 @@ class DataBaseMaintenance
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
function backupDataBaseSchema($outfile)
|
||||
function backupDataBase($outfile)
|
||||
{
|
||||
$aTables = $this->getTablesList();
|
||||
$ws = explode('_', $this->dbName);
|
||||
@@ -509,24 +485,23 @@ class DataBaseMaintenance
|
||||
$schema .= " --\n";
|
||||
$schema .= " -- Workspace: " . $ws . "\n";
|
||||
$schema .= " -- Data Base: " . $this->dbName . "\n";
|
||||
$schema .= " -- Tables:\t " . (count($aTables)) . "\n";
|
||||
$schema .= " -- Date:\t\t " . (date('l jS \of F Y h:i:s A')) . "\n";
|
||||
$schema .= " -- Tables: " . (count($aTables)) . "\n";
|
||||
$schema .= " -- Date: " . (date('l jS \of F Y h:i:s A')) . "\n";
|
||||
$schema .= " --\n\n";
|
||||
|
||||
$metafile = str_replace('.sql', '.meta', $outfile);
|
||||
$fpmd = fopen($metafile, "wb");
|
||||
|
||||
$sx = strlen($schema);
|
||||
$file = fopen($outfile, "w+");
|
||||
|
||||
fwrite($file, $schema);
|
||||
|
||||
foreach( $aTables as $table ) {
|
||||
$tableSchema = $this->getSchemaFromTable($table);
|
||||
$schema .= $tableSchema;
|
||||
$fsData = sprintf("%09d", (strlen($tableSchema) + $sx));
|
||||
fwrite($fpmd, "$fsData\n");
|
||||
$sx = 0;
|
||||
$tableSchema = "\nDROP TABLE IF EXISTS `$table`;\n\n";
|
||||
$tableSchema .= $this->getSchemaFromTable($table);
|
||||
$data = $this->dumpSqlInserts($table);
|
||||
fwrite($file, $tableSchema);
|
||||
fwrite($file, $data);
|
||||
}
|
||||
|
||||
fclose($fpmd);
|
||||
file_put_contents($outfile, $schema);
|
||||
|
||||
fclose($file);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
<?php
|
||||
|
||||
/* Get the size of the terminal (only works on Linux, on Windows it's always 80) */
|
||||
preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output);
|
||||
if(sizeof($output) == 3) {
|
||||
define("COLUMNS", $output[2][0]);
|
||||
} else {
|
||||
define("COLUMNS", 80);
|
||||
}
|
||||
|
||||
/**
|
||||
* From http://www.php.net/manual/en/function.getopt.php#83414
|
||||
* Parses $args for parameters and assigns them to an array.
|
||||
|
||||
@@ -5,6 +5,7 @@ pake_task('info');
|
||||
pake_task('workspace-upgrade');
|
||||
|
||||
pake_task('workspace-backup');
|
||||
pake_task('workspace-restore');
|
||||
|
||||
pake_task('translation-upgrade');
|
||||
pake_task('cacheview-upgrade');
|
||||
@@ -220,4 +221,9 @@ function run_workspace_backup($task, $args) {
|
||||
$workspace->backup($filename);
|
||||
}
|
||||
|
||||
function run_workspace_restore($task, $args) {
|
||||
//$workspace = new workspaceTools($args[0]);
|
||||
workspaceTools::restore($args[0], $args[1]);
|
||||
}
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user