PDA

View Full Version : بک آپ گیری از دیتابیس روی سرور



armangara
پنج شنبه 20 مهر 1391, 00:43 صبح
سلام
من یه سایتی روی هاست هلم ویندوزی دارم که داخل هاست phpmyadmin ندارم و حالا مجبورم هاست رو منتقل کنم. اما نمی تونم تز دیتابیس بک آپ بگیرم. دیتابیس روی هاست به صورت لوکال قرار گرفته.
داخل هاست یه فولدر دیتابیس هست که حاوی جدول ها و پراسجرها هست. آیا باید همون فولدر را منتقل کنم. یا راه دیگه ای هم هست?

Hamid.RDN
پنج شنبه 20 مهر 1391, 00:54 صبح
دیتابیستون چی هست دوست دوست عزیز؟

Unique
پنج شنبه 20 مهر 1391, 01:23 صبح
با توجه به اشاره به phpmyadmin و اینکه اینجا انجمن php هست شما دارین از mysql استفاده میکنید !
خوب میتونید phpmyadmin را روی سیستم خودتون نصب کنین و با استفاده از اون backup بگیرین. البته از وظایف ارائه کننده خدمات هاست هست که هر وقت نیاز داشتین بهتون backup بدهند ! حالا یا phpmyadmin روی سیستم خود نصب کنین و ip سایت و کلمه کاربری و عبور بدین ! یا از نرم افزار هایی مثل sqlyog استفاده کنید و خروجی بگیرین ! البته با یکسری اسکریپت مثل این (http://davidwalsh.name/backup-mysql-database-php) هم میشه backup گرفت ! خلاصه به تجربه شما بر میگرده !

بنده همیشه از mysqldump استفاده میکنم ! بهترین راه هم همینه ! به صورت remote هم جواب میده ! اطلاعات بیشتر (http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/)

armangara
پنج شنبه 20 مهر 1391, 15:38 عصر
ممنونم از پاسختان.
من از کد زیر استفاده کردم اما نمی دونم فایل خروجی رو کجا ذخیره می کند.
backup_tables('localhost','username','password','b log');


/* 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);
}
هاست ویندوز هست و تو تنظیمات دیتابیس هاست لوکال هست. برای دیتابیس آی پی ندارم.

Unique
جمعه 21 مهر 1391, 02:14 صبح
localhost یعنی همون ip سرور که سایت روش قرار داره ! برای سایت localhost میشه دیگه ! معمولا mysql را روی همون سرور که web server هست نصب میکنند (البته بیشتر هاست ها)
شما از بین راه ها ضعیف ترین را انتخاب کردین ! اما همین هم باید کار کنه. فایل را باید در کنار همون اسکریپت براتون بسازه ، این اسکریپت را روی همون سایت خودتون بگذارین که لازم نباشه Ip سرور را بدین و همون localhost کفایت کنه !

armangara
شنبه 22 مهر 1391, 23:36 عصر
ممنون
من این کد رو چندین بار امتحان کردم اما چیزی تولید نکرد. خطایی هم نداره. phpmyAdmin رو تغییر دادم که به هاست متصل بشم اما اون هم خطای زیر رو می دهد.
phpMyAdmin - Error
You should upgrade to MySQL 5.0.15 or later.

Unique
یک شنبه 23 مهر 1391, 01:03 صبح
شما احتمالا از Mysql4 دارین استفاده میکنید و phpmyadmin با نسخه قدیمی تر باید گیر بیارین ! از mysqldump استفده کنید ! من که لینک دادم برای استفادش. از همه بهتره به نظر من !