دریافت بکاپ از mysql با php
گاهی اوقات ممکن است دسترسی شما به پنل دایرکت ادمین و سی پنل ناموجود شود و نیاز شود یک کپی یا یک بکاپ از دیتابیس mysql خود تهیه کنید که در این حالت دسترسی به phpmyadmin ندارید؛ با کمک این آموزش و این کد میتوانید یک نسخه از دیتابیس خود را بدون phpmyadmin و با کمک زبان برنامه نویسی php دانلود کنید.
دریافت بکاپ از mysql با php
اگر میخواهید از بانک اطلاعاتی خود که در بستر phpmyadmin تعریف شده است به سادگی یک نسخهی کپی یا بکاپ تهیه کنید کافیست قطعه کد زیر را در فایلی با پسوند php ذخیره کنید و در سرور خود اضافه کنید. نکته اینکه شاید بگویید اگر دسترسی به هاست نداریم پس چگونه این کار را انجام دهیم؟! برای اینکار ما فرض میکنیم که شما دسترسی به FTP دارید.
کد PHP برای بکاپ از دیتابیس بدون دسترسی به phpmyadmin
کد زیر را با نام mysqlbak.php ذخیره کنید و آنرا اجرا کنید:
<?php
// Database configuration
$host = "localhost";
$username = "root";
$password = "";
$database_name = "mydatabasename";
// Get connection object and set the charset
$conn = mysqli_connect($host, $username, $password, $database_name);
$conn->set_charset("utf8");
// Get All Table Names From the Database
$tables = array();
$sql = "SHOW TABLES";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_row($result)) {
$tables[] = $row[0];
}
$sqlScript = "";
foreach ($tables as $table) {
// Prepare SQLscript for creating table structure
$query = "SHOW CREATE TABLE $table";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_row($result);
$sqlScript .= "\n\n" . $row[1] . ";\n\n";
$query = "SELECT * FROM $table";
$result = mysqli_query($conn, $query);
$columnCount = mysqli_num_fields($result);
// Prepare SQLscript for dumping data for each table
for ($i = 0; $i < $columnCount; $i ++) {
while ($row = mysqli_fetch_row($result)) {
$sqlScript .= "INSERT INTO $table VALUES(";
for ($j = 0; $j < $columnCount; $j ++) {
$row[$j] = $row[$j];
if (isset($row[$j])) {
$sqlScript .= '"' . $row[$j] . '"';
} else {
$sqlScript .= '""';
}
if ($j < ($columnCount - 1)) {
$sqlScript .= ',';
}
}
$sqlScript .= ");\n";
}
}
$sqlScript .= "\n";
}
if(!empty($sqlScript))
{
// Save the SQL script to a backup file
$backup_file_name = $database_name . '_backup_' . time() . '.sql';
$fileHandler = fopen($backup_file_name, 'w+');
$number_of_lines = fwrite($fileHandler, $sqlScript);
fclose($fileHandler);
// Download the SQL backup file to the browser
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($backup_file_name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($backup_file_name));
ob_clean();
flush();
readfile($backup_file_name);
exec('rm ' . $backup_file_name);
}
?>
در کد بالا متغیرهای $host و $username و $password و $database_name را تغییر دهید و آنرا اجرا کنید؛ اگر به این اطلاعات نیاز دارید کافیست در فایل wp-config.php آنها را مشاهده کنید. با اجرای کد بالا یک نسخه از دیتابیس خود را دانلود میکنید.
پینشنهاد نویسنده: کتاب آموزش php و mysql
اگر سوالی در ارتباط با این نوشته دارید برای ما بنویسید.



















استفاده از set_charset(“utf8”) نکته خوبی بود
موفق باشین
پیشنهاد میکنم یه لایه رمزگذاری برای فایل بکاپ اضافه بشه تا امنیت بالاتر بره
ممنون از پیشنهاد خوب شما
سرعتش روی دیتابیسهای بزرگ چطوره؟
این روش برای دیتابیسهای کوچک تا متوسط مناسب است. برای دیتابیسهای بسیار بزرگ، ممکن است زمانبر باشد و بهتر است از ابزارهای تخصصیتر استفاده کنید.
اگه هاست SSH هم داشته باشید، میشه این کار رو حتی راحتتر با mysqldump انجام داد
ممنون از توجه شما
پیشنهاد میکنم قبل از اجرا، حتماً اطلاعات دیتابیس رو از wp-config.php بهروز کنید
موفق باشین