เกี่ยวกับการ backup mysql ครับ คือมีวิธี ในการเขียนโคด phpในการ backup mysql ไหมครับ แบบที่ไม่ต้องเข้าไปทำใน phpmyadmin
ใช้อย่างไง อ่ะครับ งง
ขอคำอธิบายที่ครับ
ขอบคุณครับ
Date :
2009-04-26 16:05:41
By :
omaga03
Code (PHP)
<?php
mysql_query("mysqldump -u root -p mydatabase > C:\db.sql");
?>
Date :
2009-04-26 20:09:45
By :
webmaster
<?php
$host="localhost";
$user="root";
$pw="";
$dbname="car_db";
$result=mysql_query("mysqldump -u root -p car_db > C:\car_db.sql");
if($result){
echo"==backup ok";
}else{
echo"==no backup";
}
?>
ใช้แบบนี้รึเปล่าครับ เปลี่ยนแค่ mydatabase เป็น car_db ซึ่งเป็นฐานข้อมูลของผม
แล้วถ้าเกิดทำผ่านเครือข่ายต้องเพิ่มเติมตรงไหน รึเปล่าครับ
ขอบคุณครับ
Date :
2009-04-30 14:21:36
By :
omaga03
มีปัญหา ครับ คือว่าเวลาเราได้ ไฟล์ .sql ที่ dumpออกมาแล้ว สมุติผมเอาไปเก็บที่ไดรว์ >D:/xxx.sql แบบนี้ใช่ใหมครับ ปัญหามีอยู่ว่า ทำไมไฟลืที่ได้มีขนาด 0 kb.
แต่เวลาผมเปิด comman line ขึ้นมาแล้วพิมพ์คำสั่ง
mysqldump -u root -p $db_name > D/$db_name.sql
มันจะให้ผมใส่ passwor ****
ผมก็ใส่ไป และแล้วผลลัพธ์ก็คือ ได้ไฟล์ออกมาครับ ไม่มีปัญหาในไฟล์ก็มีข้อมูลอยู่เพียบ
ผมอยากถามว่า mysqldump -u root -p=$password$db_name >D:\xxx.sql ต่างจาก
mysqldump -u root -p $db_name > D:\xxx.sql ยังไงครับ เพราว่าถ้าแบบที่หนึ่งหลังจากพิมพ์มันจะให้ใส่password และไฟล์ที่ได้มีขนาดมีข้อมูลจริง แต่แบบที่สองจะไม่ถาม password แต่ไฟล์ที่ได้ทำไมมันไม่มีข้อมูลข้างใน 0 kb. นี่คือโค้ดที่ผมเขียนไว้ รบกวนแนะนำด้วยครับ
Code (PHP)
<?php
$host="localhost";
$username="root";
$password="1234";
$dbname="db_project";
$day=date("d-m-Y");
mysql_connect($host, $username, $password) or die("ไม่สามารถเชื่อมต่อฐานข้อมูลได้");
mysql_select_db($dbname) or die("ฐานข้อมูลไม่ถูกต้อง");
$sql = (" mysqldump -u root -p $dbname > D:\$dbname_$day.sql ");
exec($sql);
?>
Date :
2009-09-01 11:52:20
By :
uru_pich
Code (PHP)
<?php
$host="localhost";
$user="root";
$pw="x";
$dbname="tantip_db";
$day=date("d-m-Y");
$sql = ("C:\AppServ\MySQL\bin\mysqldump --host=$host --user=$user --password=$pw $dbname > D:/db.sql");
exec($sql);
?>
Date :
2010-01-28 11:30:31
By :
iamohmm
ลองดูลองแล้วสุดยอด
Code (PHP)
<?php
backup_tables('localhost','root','1234','db_book');
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
?>
Date :
2012-08-07 12:19:07
By :
apirako
แล้วถ้า ต้องการเฉพาะเพียงบางเรคคอร์ด ที่ต้องการหล่ะครับ ต้องเขียนโค๊ด php ยังไง ครับ
ประวัติการแก้ไข 2012-09-04 08:54:45
Date :
2012-09-03 15:41:37
By :
saksri555
แบบบ้านๆ copy ของคนโน้นที คนนี้ที รวมทั้งคิดเพิ่มเติม ผสมปนเปกันไปหมด
สร้าง table
CREATE TABLE `inv_backup` (
`id` int(11) NOT NULL,
`da` date NOT NULL,
`ti` varchar(20) NOT NULL,
`naf` varchar(200) NOT NULL,
PRIMARY KEY (`naf`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
สร้างไฟล์ bdata.php
<?php
error_reporting(E_ALL);
define("DB_USER", 'xxxxx');
define("DB_PASSWORD", 'xxxxxx');
define("DB_NAME", 'xxxxxx');
define("DB_HOST", 'localhost');
define("OUTPUT_DIR", 'database');
define("TABLES", '*');
require_once("bzip_min.php"); // include Class
//####### Class Backup_Database Start #######################
class Backup_Database {
public $host = 'localhost';
public $username = 'xxxxxx';
public $passwd = 'xxxxxxx';
public $dbName = 'xxxxxx';
public $charset = '';
//##########################################
public function del_file($idf,$naf)
{
$conn = mysql_connect($this->host, $this->username, $this->passwd); mysql_select_db($this->dbName, $conn);
$sql="delete from inv_backup where id=$idf ";
$result=mysql_query($sql,$conn);
$dir2 ="database";
unlink ("$dir2/$naf");
}
//##########################################
public function process_Database()
{
$obj = new Backup_Database(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$status = $obj->backupTables(TABLES, OUTPUT_DIR)? 'OK' : 'KO';
}
//##########################################
public function Backup_Database($host, $username, $passwd, $dbName, $charset = 'tis-620')
{
$this->host = $host;
$this->username = $username;
$this->passwd = $passwd;
$this->dbName = $dbName;
$this->charset = $charset;
$this->initializeDatabase();
}
//###################################
protected function initializeDatabase()
{
$conn = mysql_connect($this->host, $this->username, $this->passwd); mysql_select_db($this->dbName, $conn);
if (! mysql_set_charset ($this->charset, $conn))
{
mysql_query('SET NAMES '.$this->charset);
}
}
//######################################
public function backupTables($tables = '*', $outputDir = '.')
{
try {
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
}else{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
$sql = 'CREATE DATABASE IF NOT EXISTS '.$this->dbName.";\n\n"; $sql .= 'USE '.$this->dbName.";\n\n";
foreach($tables as $table)
{
//echo "Backing up ".$table." table...";
$result = mysql_query('SELECT * FROM '.$table);
$numFields = mysql_num_fields($result);
$sql .= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$sql.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $numFields; $i++)
{
while($row = mysql_fetch_row($result))
{
$sql .= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$numFields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j]))
{
$sql .= '"'.$row[$j].'"' ;
}else{
$sql.= '""';
}
if ($j < ($numFields-1))
{
$sql .= ',';
}
}
$sql.= ");\n";
}
}
$sql.="\n\n\n";
//echo " OK" . "<br />";
}
}
//###############################
catch (Exception $e)
{
var_dump($e->getMessage());
return false;
}
//##########################################
return $this->saveFile($sql, $outputDir);
}
//#########################################
protected function saveFile(&$sql, $outputDir = '.')
{
if (!$sql) return false;
try {
$handle = fopen($outputDir.'/db_backup_'.$this->dbName.'_'.date("Ymd_His", time()).'.sql','w+');
fwrite($handle, $sql);
$da=date("Y-m-d");
$tim=date("H:i");
$naf='db_backup_'.$this->dbName.'_'.date("Ymd_His", time()).'.sql';
$naf2='db_backup_'.$this->dbName.'_'.date("Ymd_His", time()).'';
$sql="SELECT id FROM inv_backup order BY id desc;";
$result=mysql_query($sql);
$dbarr=mysql_fetch_array($result);
if($dbarr){
$noNext=$dbarr['id']+1;
}else{
$noNext=1;
}
$ZipName1 = "database/$naf";
$ZipName = "database/$naf2.zip";
$ZipName2 = "$naf2.zip";
$zipfile = new zipfile();
$fileonserver =$ZipName1;
$filename = $ZipName1;
$zipfile -> addFile(file_get_contents($fileonserver), $filename);
$contents = $zipfile -> file();
file_put_contents($ZipName, $contents);
mysql_query("insert into inv_backup (id,da,ti,naf) values ($noNext,'$da','$tim','$ZipName2');");
fclose($handle);
$dir2 ="database";
unlink ("$dir2/$naf");
}
catch (Exception $e)
{
var_dump($e->getMessage());
return false;
}
return true;
}
//##############################################
public function detail()
{
$conn = mysql_connect($this->host, $this->username, $this->passwd); mysql_select_db($this->dbName, $conn);
echo "
<tr>
<td>
<table width=\"100%\" border=\"0\">
<tr bgcolor=gray>
<td align=center colspan=4 height=30>
<a href=\"bdatamain.php?mn=bk\" ><font color=yellow><b>Backup Database Now</td>
</tr>
<tr bgcolor=#C7C7C7 class=\"unnamed1\">
<td align=center>ชื่อ file</td>
<td align=center height=25>dat</td>
<td align=center >time</td>
<td align=center >mn</td>
</tr>";
$sql2="SELECT id FROM inv_backup order BY id desc;";
$result2=mysql_query($sql2);
$rowck=mysql_fetch_array($result2);
$idmax=$rowck["id"];
$sql="select * from inv_backup order BY id desc";
$result=mysql_query($sql,$conn);
$rows=mysql_num_rows($result);
for($i=0;$i<$rows;$i++)
{
$rs=mysql_fetch_array($result);
$idf=$rs["id"];
$naf=$rs["naf"];
echo "<tr onmouseover=\"menuOver(this,'ccff99')\" onmouseout=\"menuOut(this,'')\">";
echo "<td align=center ><a href=\"database/$naf\" ><font color=blue>".$rs["naf"]."</a></td>";
echo "<td align=center class=\"unnamed1\"><font color=gray>".$rs["da"]."</font></td>";
echo "<td align=center class=\"unnamed1\"><font color=gray>".$rs["ti"]."</font></td>";
$ckdel=$idmax-$idf;
if($ckdel<4){
?>
<td align=center class="unnamed1"><font color=gray><b>ลบ</td>
<?php }else{ ?>
<td align=center ><a href="bdatamain.php?idf=<?php echo $idf;?>&mn=del&naf=<?php echo $naf;?>"><font color=red><b>ลบ</a></td>
<?php } ?>
</tr>
<?php
}
echo "</table>";
echo "</td></tr>";
}
}
//####### Class Backup_Database End #######################
สร้างไฟล์ bdatamain.php
<?php
error_reporting(E_ALL);
include "bdata.php";
class show
{
public $mn="";
public function proxx($mn)
{
$obj = new Backup_Database(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if($mn=="bk"){
$obj->process_Database();
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0;url=bdatamain.php?mn=ok\">";
}
if($mn=="del"){
$obj->del_file($_GET["idf"],$_GET["naf"]);
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0;url=bdatamain.php?mn=ok\">";
}
$obj->detail();
}
}
$obj2=new show;
$obj2->proxx($_GET["mn"]);
?>
สร้างไฟล์ bzip_min.php
<?php
class zipfile
{
var $datasec = array();
var $ctrl_dir = array();
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
var $old_offset = 0;
function unix2DosTime($unixtime = 0)
{
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if ($timearray['year'] < 1980)
{
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
}
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
}
function addFile($data, $name, $time = 0)
{
$name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00";
$fr .= "\x00\x00";
$fr .= "\x08\x00";
$fr .= $hexdtime;
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
$c_len = strlen($zdata);
$fr .= pack('V', $crc);
$fr .= pack('V', $c_len);
$fr .= pack('V', $unc_len);
$fr .= pack('v', strlen($name));
$fr .= pack('v', 0);
$fr .= $name;
$fr .= $zdata;
$this -> datasec[] = $fr;
$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00";
$cdrec .= "\x14\x00";
$cdrec .= "\x00\x00";
$cdrec .= "\x08\x00";
$cdrec .= $hexdtime;
$cdrec .= pack('V', $crc);
$cdrec .= pack('V', $c_len);
$cdrec .= pack('V', $unc_len);
$cdrec .= pack('v', strlen($name) );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('V', 32 );
$cdrec .= pack('V', $this -> old_offset );
$this -> old_offset += strlen($fr);
$cdrec .= $name;
$this -> ctrl_dir[] = $cdrec;
}
function file()
{
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . pack('v', sizeof($this -> ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
}
}
?>
ลองเอาไปใช้ดูนะครับ
Date :
2013-06-17 23:40:57
By :
ผ่านมา
Load balance : Server 03