کرش کردن مداوم جداول دیتابیس
سلام و خسته نباشید خدمت دوستان و مدیران گرامی
بنده با مشکلی بر روی VPS خودم روبرو هستم. چند انجمن برروی این سرویس VPS دارم که هر چند وقت یکبار جداول دیتابیس آنها کرش می کند .
انجمن ها با MyBB ساخته شده اند . پیغام خطای ارسال شده از خود MyBB به این شکل است :
کد:
MyBB has experienced an internal SQL error and cannot continue.
SQL Error:
1030 - Got error 134 from storage engine
Query:
SELECT s.sid, s.ip, s.time, s.location, u.uid, u.username, u.invisible, u.usergroup, u.displaygroup FROM mb_users u LEFT JOIN mb_sessions s ON (u.uid=s.uid) WHERE u.lastactive > 1357778016 ORDER BY u.username ASC, s.time DESC
که باید هر دفعه جداول دیتایس را optimize و repair کنیم . اگر این کار را نکنیم وضع تا جایی پیش خواهد رفت که سرور داون شده و دسترسی به ssh نیز بسته میشود و مدیر سرور میبایست سرویس VPS بنده را reboot کند .
دوستان اطلاع دارند چرا این مشکل پیش می آید و چه کار باید کرد ؟
منتظر پاسخ دوستان هستم .
باتشکر
پاسخ : کرش کردن مداوم جداول دیتابیس
سلام
شما
فقط Repair کردید ، آیا Check هم زدید ؟
خروجی دستور Check database رو میتونید قرار بدهید ؟
پاسخ : کرش کردن مداوم جداول دیتابیس
این کد را بزار توی کرون جابت و هر مثلا یک ساعت یک بار اجراش کن
کد PHP:
<?php
// Check and repair all tables in a PHPBB structure
// Author: espicom aka Jeff Brenton
// verify that we're supposed to run
// change 'PX42m3' to something unique for your site, so it will only
// execute if you call it as 'http://mysite.com/fixtables.php?PX42m3=1'
if (!isset($_GET['PX42m3']))
{
header("Location: http://127.0.0.1/");
die();
}
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'config.php');
// connect to the database server
$db = mysql_connect($dbhost,$dbuser,$dbpasswd);
if (!$db) die("Unable to connect to database!\n");
// select the PHPBB database
mysql_select_db($dbname,$db);
// get a list of tables for this PHPBB
$tablequery = "show tables like '".$table_prefix."%'";
$tablelist = mysql_query($tablequery,$db);
// cycle through them for repair
while ($tar = mysql_fetch_array($tablelist))
{
$tablename = $tar[0];
// output some verbosity for comfort
echo "Now checking and repairing table $tablename ... ";
$repres = mysql_query("REPAIR table $tablename");
$result = mysql_fetch_array($repres);
echo $result['Msg_text'] . "<br>\n";
}
?>
پاسخ : کرش کردن مداوم جداول دیتابیس
سلام و درود
کدی که قراردادید مال PHPBB نیست ؟ آخه من MyBB استفاده کرده بودم .
آیا راه حلی وجود نداره که بشه این مشکل را از پایه حل کرد ؟
پاسخ : کرش کردن مداوم جداول دیتابیس
نقل قول:
نوشته اصلی توسط
shm744
سلام و درود
کدی که قراردادید مال PHPBB نیست ؟ آخه من MyBB استفاده کرده بودم .
آیا راه حلی وجود نداره که بشه این مشکل را از پایه حل کرد ؟
با سلام
مشخصات ارسال کنید
چک کنیم
ببینیم مال کجاست
پاسخ : کرش کردن مداوم جداول دیتابیس
باید لاگ های Mysql رو بررسی کنید . ممکنه بخشی از منابع به صورت اتفاقی از دست میرن . مثل فضای temp یا حافظه .
ویرایش : از متدهای delay insert و یا concurrency بالا استفاده میکنید ؟
بعضی مواقع اررور 134 در مورد رکوردهایی داده میشه که رکورد موردنظر حذف شده ولی هنوز در کش های تیبل ها وجود داره .
پاسخ : کرش کردن مداوم جداول دیتابیس
این کد مشکلت را تا حد زیادی حل میکنه
خودش اتوماتیک همه ی تیبل های دیتابیست را ریپیر میکنه براش مهم نیست که مال چه سیستمی باشی
توی سایت خود mybb گذاشته بود