• 2 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
پشتيبان گيري از MySQL
#1
سلام.

مدتي دنبال يك كد براي پشتيبان گيري از mysql ميگشتم.

اين كد رو داخل يك فايل بگذاريد و تابع backup را صدا بزنيد.
host: _DBHOST
username mysql : _DBUSER
password : _DBPASS
dbname : _DBNAME

کد پی‌اچ‌پی:
        function my_handler($sql_insert)
        {
            global 
$crlf;
            echo 
"$sql_insert;$crlf";
        }

        
// Get the content of $table as a series of INSERT statements.
        // After every row, a custom callback function $handler gets called.
        // $handler must accept one parameter ($sql_insert);
        
function get_table_content($db$table$handler)
        {
            
$link mysql_connect(_DBHOST,_DBUSER,_DBPASS);
                   
mysql_select_db(_DBNAME,$link);
            
           
$result mysql_db_query($db"SELECT * FROM $table",$link) or mysql_die();
            
$i 0;
            while(
$row mysql_fetch_row($result))
            {
                
//        set_time_limit(60); // HaRa
                
$table_list "(";

                for(
$j=0$j<mysql_num_fields($result);$j++)
                
$table_list .= "`".mysql_field_name($result,$j)."`, ";

                
$table_list substr($table_list,0,-2);
                
$table_list .= ")";
 
                
$schema_insert "\n INSERT INTO `$table$table_list VALUES (";
             

                for(
$j=0$j<mysql_num_fields($result);$j++)
                {
                    if(!isset(
$row[$j]))
                    
$schema_insert .= " NULL,";
                    elseif(
$row[$j] != "")
                    
$schema_insert .= " '".addslashes($row[$j])."',";
                    else
                    
$schema_insert .= " '',";
                }
                
$schema_insert ereg_replace(",$"""$schema_insert);
                
$schema_insert .= ")";
                
$handler(trim($schema_insert));
                
$i++;
            }
            return (
true);
        }

        
// Return $table's CREATE definition
        // Returns a string containing the CREATE statement on success
        
function get_table_def($db$table$crlf)
        { 
            
$link mysql_connect(_DBHOST,_DBUSER,_DBPASS);
                   
mysql_select_db(_DBNAME,$link);
    
            
$schema_create "";
            
//$schema_create .= "DROP TABLE IF EXISTS $table;$crlf";
            
$schema_create .= " \n CREATE TABLE  IF NOT EXISTS  `$table` ($crlf";

            
$result mysql_db_query($db"SHOW FIELDS FROM $table",$link) or mysql_die();
            while(
$row mysql_fetch_array($result))
            {
                
$schema_create .= "   `$row[Field]$row[Type]";

                if(isset(
$row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
                
$schema_create .= " DEFAULT '$row[Default]'";
                if(
$row["Null"] != "YES")
                
$schema_create .= " NOT NULL";
                if(
$row["Extra"] != "")
                
$schema_create .= $row[Extra]";
                
$schema_create .= ",$crlf";
            }
            
$schema_create ereg_replace(",".$crlf."$"""$schema_create);
            
$result mysql_db_query($db"SHOW KEYS FROM $table",$link) or mysql_die();
            while(
$row mysql_fetch_array($result))
            {
                
$kname=$row['Key_name'];
                if((
$kname != "PRIMARY") && ($row['Non_unique'] == 0))
                
$kname="UNIQUE|$kname";
                if(!isset(
$index[$kname]))
                
$index[$kname] = array();
                
$index[$kname][] = $row['Column_name'];
            }

            while(list(
$x$columns) = @each($index))
            {
                
$schema_create .= ",$crlf";
                if(
$x == "PRIMARY")
                
$schema_create .= "   PRIMARY KEY (`" implode($columns", ") . "`)";
                elseif (
substr($x,0,6) == "UNIQUE")
                
$schema_create .= "   UNIQUE ".substr($x,7)." (`" implode($columns", ") . "`)";
                else
                
$schema_create .= "   KEY $x (`" implode($columns", ") . "`)";
            }

            
$schema_create .= "$crlf)";
            return (
stripslashes($schema_create));
        }

        function 
mysql_die($error "")
        {
            echo 
"<b> $strError </b><p>";
            if(isset(
$sql_query) && !empty($sql_query))
            {
                echo 
"$strSQLQuery: <pre>$sql_query</pre><p>";
            }
            if(empty(
$error))
            echo 
$strMySQLSaid.mysql_error();
            else
            echo 
$strMySQLSaid.$error;
            echo 
"<br><a href=\"javascript:history.go(-1)\">$strBack</a>";
            exit;
        }

        function 
backup()
        {
            
header("Content-disposition: filename="._DBNAME.".sql");
            
header("Content-type: application/octetstream");
            
header("Pragma: no-cache");
            
header("Expires: 0");
        
            
// doing some DOS-CRLF magic...
            
$client $_SERVER["HTTP_USER_AGENT"];
            if(
ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
            {
                
$os $regs[1];
                
// this looks better under WinX
                
if (eregi("Win",$os))
                
$crlf="\r\n";
            }
            
$link mysql_connect(_DBHOST,_DBUSER,_DBPASS);
                       
mysql_select_db(_DBNAME,$link);
        
            
$tables mysql_list_tables(_DBNAME,$link);
    
            
$num_tables = @mysql_numrows($tables);
            
            if(
$num_tables == 0)
            {
                echo 
$strNoTablesFound;
            }
            else
            {
                
$i 0;
                
$heure_jour date ("H:i");
     
                while(
$i $num_tables)
                {
                    
$table mysql_tablename($tables$i);
     
                    echo  
get_table_def(_DBNAME$table$crlf).";$crlf$crlf";
     
                    
get_table_content(_DBNAME$table"my_handler");
    
                    
$i++;
                }
            } 
        } 
  پاسخ
تشکر شده توسط : molana Y.P.Y


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان