PHP ile MySql Yedekleme

PHP MySql

Merhabalar Php kullanarak MySql yedeği almak için sürekli kulandığın bir fonksiyonu sizinle paylaşmak isterim.

Fonksiyon kullanımı oldukça basit dosyada yer alan

backup_tables('localhost','Kullanici','Sifre','DbAdi');

alanı kendi değerleriniz ile değiştirin. Dosyayı çalıştırdığınızda bulunduğu dizine yedeği oluşturacaktır.

Fonksiyon Parametreleri

    • $host => // İlk parametre sunucu adınız (localhost vb.)
    • $user => // MySql kullanıcı adınız
    • $pass => // MySql Kullanıcısının şifresi
    • $name => // Veritabanınızın adı
    • $tables => // Bu parametre varsayılan olarak “*” değerini alır. Boş bırakılırsa veritabanının tamamını yedekler Eğer bir veya daha fazla tablonun yedeğini almak isterseniz tablo isimlerini virgül ile ayırın.

Dosyayı indirmek için tıklayın => PHP MySql Yedekleme

//Fonksiyon Parametreleri
backup_tables('localhost','Kullanici','Sifre','DbAdi');

function backup_tables($host,$user,$pass,$name,$tables = '*')
{
	
	$link = mysql_connect($host,$user,$pass);
	mysql_select_db($name,$link);
	
	/* Tüm tabloları şeç */	
	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);
	}
	
	// Verileri döndür
	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";
	}
	
	// Dosya olarak kaydet
	$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
	fwrite($handle,$return);
	fclose($handle);
}

“PHP ile MySql Yedekleme” için 4 yorum

  1. hocam çalışıyor sistem çalışıyor ve yedek dosyasını oluşturuyor ancak ilk olarak şu hata çıkıyor : ”
    Notice: Undefined variable: return in” İkiniciside alınan sql yedekte Türkçe karakter hataları çıkıyor bununla ilgili nasıl bir işlem yapmalıyız ?

    1. İlk aldığın hata bilinmeyen değişken hatası değişkenlerini kontrol et.
      ikinci hata için veri tabanının karakter koduna bak.

  2. Bir proje için Mysql veritabanı yedeklemesi gerekiyordu, yazdığınız kodlar sorunsuz bir şekilde çalıştı. Bu yedekleri Cloud ortamına aktaracağım. Emeğinize sağlık.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir