Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
|
Re: MySql kontrol & yedekleme aparatı tavsiyeniz?
<?PHP
$host="localhost";
$kullanici="kullanici adi db";
$sifre="sifre db";
$dibi="veritabanı";
$kes='';
$kac='\'';
$buf=32768;
$tblstn=30;
$GZ_enabled=(bool)function_exists('gzopen');
$ay="\r\n";
$yol="/tmp/";
$fn=$dibi.'_'.date("d-m-Y").'.SQL'.($GZ_enabled?'.gz':'');
$yolf=$yol.$fn;
if (!function_exists('getmicrotime')) {
function getmicrotime() {
list($usec, $sec) = explode(' ', microtime());
return ((float) $usec + (float) $sec);
}
}
mysql_connect($host,$kullanici,$sifre) or die ('<BR><B>Could not connect to database - check username and password.</B>');
flush();
if (($GZ_enabled && ($zp = gzopen($yolf, 'wb'))) || (!$GZ_enabled && ($fp = fopen($yolf, 'wb')))) {
$fileheaderline = '#Type = ';
if ($GZ_enabled) {
gzwrite($zp, $fileheaderline, strlen($fileheaderline));
} else {
fwrite($fp, $fileheaderline, strlen($fileheaderline));
}
if ($GZ_enabled) {
gzwrite($zp, 'Complete'.$ay.$ay, strlen('Complete'.$ay.$ay));
} else {
fwrite($fp, 'Complete'.$ay.$ay, strlen('Complete'.$ay.$ay));
}
$backuptype = 'full';
unset($SelectedTables);
$tables = mysql_list_tables($dibi);
if (is_resource($tables)) {
$tablecounter = 0;
while (list($tablename) = mysql_fetch_array($tables)) {
$SelectedTables["$dibi"][] = $tablename;
}
}
$TableErrors = array();
foreach ($SelectedTables as $dibi => $selectedtablesarray) {
mysql_select_db($dibi);
foreach ($selectedtablesarray as $selectedtablename) {
flush();
$result = mysql_query('CHECK TABLE '.$selectedtablename);
while ($row = mysql_fetch_array($result)) {
if ($row['Msg_text'] == 'OK') {
mysql_query('OPTIMIZE TABLE '.$selectedtablename);
} else {
$TableErrors[] = $row['Table'].' ['.$row['Msg_type'].'] '.$row['Msg_text'];
if (!isset($TableErrorTables) || !is_array($TableErrorTables) || !in_array($dibi.'.'.$selectedtablename, $TableErrorTables)) {
$TableErrorDB[] = $dibi;
$TableErrorTables[] = $selectedtablename;
}
}
}
}
}
$overallrows = 0;
foreach ($SelectedTables as $dibi => $value) {
mysql_select_db($dibi);
$tablecounter = 0;
for ($t = 0; $t < count($SelectedTables["$dibi"]); $t++) {
if ($tablecounter++ >= $tblstn) {
$tablecounter = 1;
}
$SQLquery = 'SELECT COUNT(*) AS num FROM '.$SelectedTables["$dibi"]["$t"];
$result = mysql_query($SQLquery);
$row = mysql_fetch_array($result);
$rows["$t"] = $row['num'];
$overallrows += $rows["$t"];
}
}
$starttime = getmicrotime();
$alltablesstructure = '';
foreach ($SelectedTables as $dibi => $value) {
mysql_select_db($dibi);
for ($t = 0; $t < count($SelectedTables["$dibi"]); $t++) {
$fieldnames = array();
$structurelines = array();
$result = mysql_query('SHOW FIELDS FROM '.$SelectedTables["$dibi"]["$t"]);
while ($row = mysql_fetch_array($result)) {
$structureline = $row['Field'];
$structureline .= ' '.$row['Type'];
$structureline .= ' '.($row['Null'] ? '' : 'NOT ').'NULL';
if (isset($row['Default'])) {
switch ($row['Type']) {
case 'tinytext':
case 'tinyblob':
case 'text':
case 'blob':
case 'mediumtext':
case 'mediumblob':
case 'longtext':
case 'longblob':
break;
default:
$structureline .= ' default \''.$row['Default'].'\'';
break;
}
}
$structureline .= ($row['Extra'] ? ' '.$row['Extra'] : '');
$structurelines[] = $structureline;
$fieldnames[] = $row['Field'];
}
mysql_free_result($result);
$tablekeys = array();
$uniquekeys = array();
$fulltextkeys = array();
$result = mysql_query('SHOW KEYS FROM '.$SelectedTables["$dibi"]["$t"]);
while ($row = mysql_fetch_array($result)) {
$uniquekeys[$row['Key_name']] = FALSE;
if ($row['Non_unique'] == 0) {
$uniquekeys[$row['Key_name']] = TRUE;
}
$fulltextkeys[$row['Key_name']] = FALSE;
if ($row['Comment'] == 'FULLTEXT') {
$fulltextkeys[$row['Key_name']] = TRUE;
}
$tablekeys[$row['Key_name']][$row['Seq_in_index']] = $row['Column_name'];
ksort($tablekeys[$row['Key_name']]);
}
mysql_free_result($result);
foreach ($tablekeys as $keyname => $keyfieldnames) {
$structureline = '';
if ($keyname == 'PRIMARY') {
$structureline .= 'PRIMARY ';
} else {
$structureline .= ($fulltextkeys[$keyname] ? 'FULLTEXT ' : '');
$structureline .= ($uniquekeys[$keyname] ? 'UNIQUE ' : '');
}
$structureline .= 'KEY'.(($keyname == 'PRIMARY') ? '' : ' '.$keyname);
$structureline .= ' ('.implode(',', $keyfieldnames).')';
$structurelines[] = $structureline;
}
$tablestructure = 'CREATE TABLE '.$dibi.'.'.$SelectedTables["$dibi"]["$t"].' ('.$ay;
$tablestructure .= ' '.implode(','.$ay.' ', $structurelines).$ay;
$tablestructure .= ');'.$ay.$ay;
$alltablesstructure .= str_replace(' ,', ',', $tablestructure);
}
}
if ($GZ_enabled) {
gzwrite($zp, $alltablesstructure.$ay, strlen($alltablesstructure) + strlen($ay));
} else {
fwrite($fp, $alltablesstructure.$ay, strlen($alltablesstructure) + strlen($ay));
}
if ($_REQUEST['StartBackup'] != 'structure') {
$processedrows = 0;
foreach ($SelectedTables as $dibi => $value) {
mysql_select_db($dibi);
for ($t = 0; $t < count($SelectedTables["$dibi"]); $t++) {
$result = mysql_query('SELECT * FROM '.$SelectedTables["$dibi"]["$t"]);
$rows["$t"] = mysql_num_rows($result);
if ($rows["$t"] > 0) {
$tabledatadumpline = '# dumping data for '.$dibi.'.'.$SelectedTables["$dibi"]["$t"].$ay;
if ($GZ_enabled) {
gzwrite($zp, $tabledatadumpline, strlen($tabledatadumpline));
} else {
fwrite($fp, $tabledatadumpline, strlen($tabledatadumpline));
}
}
unset($fieldnames);
for ($i = 0; $i < mysql_num_fields($result); $i++) {
$fieldnames[] = mysql_field_name($result, $i);
}
if ($_REQUEST['StartBackup'] == 'complete') {
$insertstatement = 'INSERT INTO '.$kes.$SelectedTables["$dibi"]["$t"].$kes.' ('.implode(', ', $fieldnames).') VALUES (';
} else {
$insertstatement = 'INSERT INTO '.$kes.$SelectedTables["$dibi"]["$t"].$kes.' VALUES (';
}
$currentrow = 0;
$thistableinserts = '';
while ($row = mysql_fetch_array($result)) {
unset($valuevalues);
foreach ($fieldnames as $key => $val) {
$valuevalues[] = mysql_escape_string($row["$key"]);
}
$thistableinserts .= $insertstatement.$kac.implode($kac.', '.$kac, $valuevalues).$kac.');'.$ay;
if (strlen($thistableinserts) >= $buf) {
if ($GZ_enabled) {
gzwrite($zp, $thistableinserts, strlen($thistableinserts));
} else {
fwrite($fp, $thistableinserts, strlen($thistableinserts));
}
$thistableinserts = '';
}
if ((++$currentrow % 1000) == 0) {
set_time_limit(60);
}
}
if ($GZ_enabled) {
gzwrite($zp, $thistableinserts.$ay.$ay, strlen($thistableinserts) + strlen($ay) + strlen($ay));
} else {
fwrite($fp, $thistableinserts.$ay.$ay, strlen($thistableinserts) + strlen($ay) + strlen($ay));
}
}
}
}
if ($GZ_enabled) {
gzclose($zp);
} else {
fclose($fp);
}
}
header('Content-Type: application/force-download');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: inline; filename="'.$fn.'"');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
// readfile($yol.$fn);
$fs = fopen($yolf,"rb");
$buffer = "";
while(!feof($fs)) {
$buffer = fread($fs,$buf);
echo $buffer;
}
fclose($fs);
unlink($yol.$fn);
?>
bunu backup. PHP diye kaydedip direk çağırabilirsin.
__________________
Take me back to my boat on the river
and I won't cry out any more
|