လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> $ errno အပေါ် အခြေခံ. ဒေတာဘေ့စ်ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေး switching အတွက်ဆုံးဖြတ်ချက်ကိုအစပျိုး

$ errno အပေါ် အခြေခံ. ဒေတာဘေ့စ်ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေး switching အတွက်ဆုံးဖြတ်ချက်ကိုအစပျိုး

M66 2025-06-01

ခေတ်သစ်မြင့်မားသောရရှိနိုင်သည့်ဗိသုကာလက်ရာများတွင်ဒေတာဘေ့စ်ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေး (Failover) (Failover) သည်စနစ်၏ယုံကြည်စိတ်ချရမှုကိုသေချာစေရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ အထူးသဖြင့်ဖြန့်ဝေထားသောဒေတာဘေ့စ်များ (သို့) Master-Slave ဗိသုကာများ၌မာစတာဒေတာဘေ့စ်သည်ပျက်ကွက်သောအခါ, ဤအောင်မြင်ရန် MySQL: MySQLI :: Rurowno သည် Develabase Operations တွင်အမှားအယွင်းများရှိ, မရှိမရှိဆုံးဖြတ်ရန်အတွက် MySQLI :: $ errno ကိုပေးသည်။ အမှားကုဒ်များမှတစ်ဆင့်ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေးခလုတ်ကိုဖြစ်ပေါ်စေသည်။

MySQLI :: $ errno မှတဆင့်ဒေတာဘေ့စ်သည်ဘေးအန္တရာယ်ပြန်လည်နာလန်ထူရန်လိုအပ်သည်ကိုမည်သို့ဆုံးဖြတ်ရမည်ကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။

MySQLI :: $ errno ဆိုတာဘာလဲ။

MySQLI :: $ errno သည် MySQLI အတန်းထဲတွင်အိမ်ခြံမြေပိုင်ဆိုင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည် MySQL စုံစမ်းမှုစစ်ဆင်ရေး၏အမှားကုဒ်ကိုကိုယ်စားပြုသည်။ အကယ်. စုံစမ်းမှုသည်အောင်မြင်လျှင်အိမ်ခြံမြေ၏တန်ဖိုးသည် 0; အမှားတစ်ခုဖြစ်ပါကအိမ်ခြံမြေသည်သက်ဆိုင်ရာ MySQL အမှားကုဒ်ကိုပြန်ပို့လိမ့်မည်။ ဤပိုင်ဆိုင်မှုသည်အမှားတစ်ခုဖြစ်ပွားပြီးသက်ဆိုင်ရာအမှားကိုင်တွယ်ခြင်းရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုနိုင်သည်။

သာမန်အမှားကုဒ်များမှာ -

  • 2002 : ဆက်သွယ်မှုငြင်းဆန် , ဒေတာဘေ့စ်ချိတ်ဆက်မရနိုင်ပါ။

  • 1040 - ဆက်သွယ်မှုများလွန်းခြင်း , ဒေတာဘေ့စ်ဆက်သွယ်မှုအရေအတွက်သည်အထက်ပိုင်းအကန့်အသတ်ရှိသည်။

  • 1213 : အကျပ်အတည်း , အကျပ်အတည်းအမှား။

MySQLI :: errno ကို အသုံးပြုနည်း

MySQL Master-Slave ဗိသုကာလက်ရာများကိုသင်အသုံးပြုနေသည်ဟုယူဆသည်, Master Library ပျက်ကွက်ပါက၎င်းသည်အခြားကျွန်စာကြည့်တိုက်သို့အလိုအလျောက်ပြောင်းသင့်သည်။ MySQLI :: $ errno ကို သုံးနိုင်သည်။ Relor Recovery switching ကိုဆုံးဖြတ်ရန်အမှားကုဒ်ကိုဆုံးဖြတ်ရန်ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။

ဤနေရာတွင်ရိုးရှင်းသောဘေးအန္တရာယ်ပြန်လည်နာလန်ထူအကောင်အထည်ဖော်မှု၏ဥပမာတစ်ခုမှာ -

 <?php

// ဒေတာဘေ့စ် connection configuration ကို
$primary_db_config = [
    'host' => 'primary.m66.net',
    'user' => 'root',
    'password' => 'password',
    'database' => 'test_db'
];

$secondary_db_config = [
    'host' => 'secondary.m66.net',
    'user' => 'root',
    'password' => 'password',
    'database' => 'test_db'
];

// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
function connectDatabase($db_config) {
    $mysqli = new mysqli($db_config['host'], $db_config['user'], $db_config['password'], $db_config['database']);
    if ($mysqli->connect_error) {
        echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error . "\n";
        return null;
    }
    return $mysqli;
}

// အဓိကစာကြည့်တိုက်ကိုချိတ်ဆက်ရန်ကြိုးစားပါ
$mysqli = connectDatabase($primary_db_config);
if ($mysqli === null) {
    // 如果主库ဆက်သွယ်မှုမအောင်မြင်ပါ,အရန်ကူးစာကြည့်တိုက်သို့ပြောင်းပါ
    echo "主数据库ဆက်သွယ်မှုမအောင်မြင်ပါ,Standby ဒေတာဘေ့စ်သို့ပြောင်းပါ...\n";
    $mysqli = connectDatabase($secondary_db_config);
}

// စုံစမ်းမှုစစ်ဆင်ရေးလုပ်ဆောင်ပါ
if ($mysqli) {
    $query = "SELECT * FROM some_table";
    if ($mysqli->query($query) === FALSE) {
        // အမှားကုဒ်အပေါ် အခြေခံ. ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေး switching လိုအပ်, မလိုအပ်ကြောင်းဆုံးဖြတ်ရန်
        echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->errno . " - " . $mysqli->error . "\n";
        if ($mysqli->errno == 2002 || $mysqli->errno == 1040) {
            // အကယ်. ဒေတာဘေ့စ်ဆက်သွယ်မှုသည်မှားယွင်းသောသို့မဟုတ်ဆက်သွယ်မှုအရေအတွက်ပြည့်နေလျှင်,ဒေတာဘေ့စ်ကိုပြောင်းရန်ကြိုးစားပါ
            echo "ဒေတာဘေ့စ်ကိုပြောင်းရန်ကြိုးစားပါ...\n";
            $mysqli = connectDatabase($secondary_db_config);
        }
    } else {
        echo "အောင်မြင်သောစုံစမ်းမှု\n";
    }
}

code parsing

  1. Database Configuration : Master နှင့်ကျွန်စာကြည့်တိုက်များအတွက်ဒေတာဘေ့စ်ဆက်သွယ်မှုအချက်အလက်များကိုကျွန်ုပ်တို့ပြုပြင်သည်။ အဓိကစာကြည့်တိုက်၏ဆက်သွယ်မှု configuration ကို $ Test_DB_COCFIG variable တွင်သိမ်းဆည်းထားသည်။

  2. ဒေတာဘေ့စ်ဆက်သွယ်မှု - Database connection တစ်ခုတည်ထောင်ရန် ConnectDABSE () function ကိုအသုံးပြုသည်။ ၎င်းသည်ဒေတာဘေ့စ် configuration information ကိုလက်ခံရရှိပြီး MySQLI အရာဝတ်ထုတစ်ခုကိုပြန်လည်ရရှိပြီးဆက်သွယ်မှုပျက်သွားပါက NULL ကိုပြန်ပို့ပါ။

  3. အဓိကစာကြည့်တိုက်ဆက်သွယ်မှုမအောင်မြင်ပါကကျွန်သို့ပြောင်းပါ ။ အဓိကစာကြည့်တိုက်ဆက်သွယ်မှုမအောင်မြင်ပါကကျွန်ုပ်တို့သည် 0 န်ဆောင်မှုကိုချိတ်ဆက်ရန်ကြိုးစားပြီး MySQLI variable ကိုဆက်သွယ်မှုအသစ်ကိုညွှန်ပြရန်ကြိုးစားသည်။

  4. Query query : ဒေတာဘေ့စ်စုံစမ်းမှုကို $ MySQLI-> စုံစမ်းမှု () မှတဆင့် Execute Execute query လုပ်ပါ။ အကယ်. မေးမြန်းမှုမအောင်မြင်ပါကကျွန်ုပ်တို့သည်အမှားကုဒ်မှတဆင့်အမှားကုဒ်များကို ဒေါ်လာ MySQLI-> ERRNO မှတဆင့်အမှားကုဒ်ကိုရယူရန်လိုအပ်သည်။ ဥပမာအားဖြင့်, errno == 2002 ဆိုသည်မှာဒေတာဘေ့စ်ဆက်သွယ်မှုမအောင်မြင်ဟုဆိုလိုသည် Database connection နံပါတ်သည်အပြည့်အ 0 သည် ဖြစ်ရပ်နှစ်ခုလုံးတွင်ကျွန်ုပ်တို့သည် standby database သို့ပြောင်းရန်ကြိုးစားသည်။

ကောက်ချက်

MySQLI :: :: $ errno သည် ဒေတာဘေ့စ်လုပ်ငန်းများ၌အမှားများကိုအကောင်အထည်ဖော်ရန်နှင့်အမှားကုဒ်မှတဆင့်ဘေးအန္တရာယ်ပြန်လည်နာလန်ထူ switching လိုအပ်ရှိမရှိကိုထိရောက်စွာကူညီနိုင်သည်။ ဤရိုးရှင်းသောဥပမာနှင့်အတူမာစတာကျွန်ဒေတာဘေ့စ် Schema တွင်ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေးလုပ်ငန်းများကိုမည်သို့လုပ်ဆောင်ရမည်ကိုပြသသည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်သင်သည်စနစ်၏အသုံး 0 င်မှုနှင့်တည်ငြိမ်မှုကိုပိုမိုကောင်းမွန်စေရန်တိကျသောအမှားကုဒ်များနှင့်စနစ်လိုအပ်ချက်များအပေါ် အခြေခံ. ဘေးအန္တရာယ်ပြန်လည်နာလန်ထူသောယုတ္တိဗေဒကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။