PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کرش کردن مداوم جداول دیتابیس



shm744
January 10th, 2013, 19:50
سلام و خسته نباشید خدمت دوستان و مدیران گرامی
بنده با مشکلی بر روی 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 کند .

دوستان اطلاع دارند چرا این مشکل پیش می آید و چه کار باید کرد ؟
منتظر پاسخ دوستان هستم .
باتشکر

sudo
January 11th, 2013, 12:01
سلام
شما
فقط Repair کردید ، آیا Check هم زدید ؟
خروجی دستور Check database رو میتونید قرار بدهید ؟

parsibox
January 11th, 2013, 12:19
این کد را بزار توی کرون جابت و هر مثلا یک ساعت یک بار اجراش کن

<?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";
}

?>

shm744
January 11th, 2013, 23:36
سلام و درود
کدی که قراردادید مال PHPBB نیست ؟ آخه من MyBB استفاده کرده بودم .
آیا راه حلی وجود نداره که بشه این مشکل را از پایه حل کرد ؟

CityKala.net
January 11th, 2013, 23:40
سلام و درود
کدی که قراردادید مال PHPBB نیست ؟ آخه من MyBB استفاده کرده بودم .
آیا راه حلی وجود نداره که بشه این مشکل را از پایه حل کرد ؟

با سلام
مشخصات ارسال کنید
چک کنیم
ببینیم مال کجاست

iMohsen
January 11th, 2013, 23:40
باید لاگ های Mysql رو بررسی کنید . ممکنه بخشی از منابع به صورت اتفاقی از دست میرن . مثل فضای temp یا حافظه .

ویرایش : از متدهای delay insert و یا concurrency بالا استفاده میکنید ؟
بعضی مواقع اررور 134 در مورد رکوردهایی داده میشه که رکورد موردنظر حذف شده ولی هنوز در کش های تیبل ها وجود داره .

parsibox
January 11th, 2013, 23:40
این کد مشکلت را تا حد زیادی حل میکنه
خودش اتوماتیک همه ی تیبل های دیتابیست را ریپیر میکنه براش مهم نیست که مال چه سیستمی باشی
توی سایت خود mybb گذاشته بود