بکاپ گرفتن از دیتابیس یکی از مهمترین کارهایی است که هر توسعه دهنده وب یا مدیر سایتی باید به صورت دوره ای انجام دهد. داشتن بکاپ دیتابیس , ریسک از دست دادن اطلاعات کاربران و مطالب جلوگیری و در صورت بروز مشکل امکان بازگردانی اطلاعات سایت را به ما می دهد.پس ، بکاپ گرفتن از دیتابیس mysql ایده خوبی برای مشکلات احتمالی است.
راه های زیادی برای گرفتن بکاپ گرفتن از دیتابیس mysql در یک فایل وجود دارد و حتی در بعضی هاستینگ ها با یک کلیک می توانید بکاپ از دیتابیس تهیه کنید. اما اگر قصد گرفتن بکاپ از دیتابیس Mysql بدون لاگین شدن به پنل هاستینگ یا phpmyadmin دارید یا اینکه قصد اضافه کردن این قابلیت به پنل مدیریت را دارید ، می توانید این کار را از طریق اسکریپت php انجام بدید .در این آموزش قصد داریم نحوه بکاپ گرفتن از دیتابیس mysql و ذخیره کردن در یک فایل sql را یاد بگیریم.
گرفتن بکاپ از mysql در php
همه کد ها برای راحتی در یک تابع به نامbackupDatabaseTables()
جمع شدند.
با استفاده از این تابع می توانید از یک جدول خاص یا همه جداول دیتابیس بکاپ بگیرید. . پارامتر های زیر برای بکاپ گرفت از دیتایس mysql در php داخل این تابع استفاده شدند.
$dbHost
– الزامی . هاستی که دیتابیس در آن ذخیره است$dbUsername
– الزامی . نام کاربری اتصال به دیتابیس$dbPassword
– الزامی . رمزعبور اتصال به دیتابیس$dbName
– الزامی . نام دیتابیسی که قصد بکاپ گرفتن را دارید$tables
– اختیاری . اسم جداول در قالب یک آرایه یا جدا شده با کاما (,) . برا بکاپ گرفتن فول از دیتابیس مقدار آن را خالی بزارید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php /** * @function backupDatabaseTables * @author Termijan * @link http://netparadis.com * @usage Backup database tables and save in SQL file */ function backupDatabaseTables($dbHost,$dbUsername,$dbPassword,$dbName,$tables = '*'){ //connect & select the database $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); //get all of the tables if($tables == '*'){ $tables = array(); $result = $db->query("SHOW TABLES"); while($row = $result->fetch_row()){ $tables[] = $row[0]; } }else{ $tables = is_array($tables)?$tables:explode(',',$tables); } //loop through the tables foreach($tables as $table){ $result = $db->query("SELECT * FROM $table"); $numColumns = $result->field_count; $return .= "DROP TABLE $table;"; $result2 = $db->query("SHOW CREATE TABLE $table"); $row2 = $result2->fetch_row(); $return .= "\n\n".$row2[1].";\n\n"; for($i = 0; $i < $numColumns; $i++){ while($row = $result->fetch_row()){ $return .= "INSERT INTO $table VALUES("; for($j=0; $j < $numColumns; $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 < ($numColumns-1)) { $return.= ','; } } $return .= ");\n"; } } $return .= "\n\n\n"; } //save file $handle = fopen('db-backup-'.time().'.sql','w+'); fwrite($handle,$return); fclose($handle); } |
نحوه فراخوانی :
از تابع backupDatabaseTables() برای ساختن بکاپ دیتابیس در قالب فایل sql به اینصورت استفاده کنید
1 |
backupDatabaseTables('localhost','root','*****','netparadis'); |
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام
وقت بخیر، ببخشید من میخوام با برنامه mysql بکاپ گیری کنم ولی نمیشه یعنی بلد نیستم…برا فردا صبح هم نیازش دارم ممنون میشم کمکم کنین..
سلام. داخل هاست گزینه mysql backup موجود هست. همچنین از هاستینگ میتونید بخواید براتون بکاپ میگیرند
سلام خوبید
وقتتون بخیر
مهندس دیتابیس MySqlدارم حجمش زیاده تقریبا ۲۰۰ گیگ چطوری بکاب بردارم از اون
ایسک پورت نمیشه
سلام. ممنون.
از طریق خود ابزار بکاپ داخل پنل مثلا در سی پنل استفاده کنید.
یا اینکه از طریق SSH با کامند لاین خروجی بگیرید
mysqldump -u [username] -p [database-you-want-to-dump] > [path-to-place-data-dump.sql]
یا اینکه با همان دستور بصورت gzip کنید تا حجم کاهش پیدا کنه
mysqldump -u [USERNAME] -p [DBNAME] –ignore-table=[DBNAME].search_index | gzip > [/path_to_file/DBNAME].sql.gz
دو ابزار دیگه ای که می تونید استفاده کنید:
http://dl.bintray.com/verace/MySQLDumpSplitter/jar
که دیتابیس را به فایل های کوچکتر تقسیم می کند
و ابزار دومی نیز sypex هست: (پولی)
http://sypex.net/en
اگر به هر دلیل دیگه ای نتونستید انجام بدید, حتما با مدیر سرور یا هاستینگ در میان بزارید مطمین باشید کمک می کنند و سریعا میتونید مورد رو حل کنید
موفق باشید.
کجا ذخیره میکنه فایل دیتا بیس رو ؟؟!
سلام.
داخل همان فولدری که این اسکریپت را اجرا می کنید, فایل دیتابیس هم ساخته می شود.
موفق باشید.