Virheratkaisut

MySQL "Table is marked as crashed" -virhe ja taulun korjaaminen phpMyAdminilla

  • 9 minuuttia lukemista
  • Hostragons-tiimi
MySQL "Table is marked as crashed" -virhe ja taulun korjaaminen phpMyAdminilla

MySQL "Table is marked as crashed" -virhe kertoo yleensä siitä, että MyISAM-tietokantamoottoria käyttävä taulu on vioittunut eikä MySQL pysty lukemaan sitä turvallisesti. Nopein ratkaisu on ottaa varmuuskopio tietokannasta ja korjata taulu phpMyAdminin Korjaa taulu -toiminnolla. Virhe ei kuitenkaan aina ole vain yksi klikkaus, vaan se voi toistua, jos taustalla on esimerkiksi äkillinen palvelimen sammutus, täysi levytila, virheelliset kyselyt, kova kirjoituskuorma tai vanha MySQL-konfiguraatio. Tässä oppaassa käydään läpi virheen yleisimmät syyt, turvalliset korjausvaiheet phpMyAdminilla, varmuuskopiointi ennen korjausta sekä pysyvät ehkäisykeinot.

Sivustosi voi pohjautua WordPressiin, OpenCartiin, räätälöityyn PHP-ohjelmistoon tai foorumijärjestelmään. Kun MySQL-taulu vioittuu, vierailijat saattavat kohdata valkoisen ruudun, 500-virheen, yhteyden aikakatkaisun tai yllättäviä tietokantavirheitä hallintapaneelissa. Esimerkiksi verkkokaupoissa tilaus-, tuote-, istunto- tai ostoskori-taulujen vioittuminen voi aiheuttaa liikevaihdon menetystä jo muutamassa minuutissa. Korjausprosessissa onkin tärkeää suojata data sekä ymmärtää virheen perimmäinen syy. Luotettava hosting, säännölliset varmuuskopiot ja oikea tietokantamoottorin valinta vähentävät riskejä merkittävästi. Hallittavaa ja valvottavaa infrastruktuuria varten kannattaa tutustua Hostragons verkkohosting – ratkaisuihin tai vaativissa projekteissa Hostragons VPS-palvelin -vaihtoehtoihin.

Mikä on "Table is marked as crashed" -virhe?

"Table is marked as crashed" -virhe tarkoittaa, että MySQL-palvelin on merkinnyt taulun vioittuneeksi, eikä pysty käsittelemään luku- tai kirjoitusoperaatioita siihen. Virheilmoitus näkyy usein muodossa: Table './tietokanta/taulu_nimi' is marked as crashed and should be repaired tai Incorrect key file for table. Tämä viestii ongelmasta taulutiedostossa, indekseissä tai taulun eheydessä.

Virhe esiintyy useimmiten MyISAM-tauluissa. MyISAM on vanha, nopeaan lukemiseen optimoitu tietokantamoottori, mutta sen hätäpalautusominaisuudet eivät ole yhtä vahvoja kuin InnoDB:llä. Esimerkiksi äkillinen palvelimen sammutus, keskeytynyt levykirjoitus tai MySQL-palvelun väärä alasajo voivat helposti rikkoa MyISAM-tauluja. InnoDB on yleensä kestävämpi transaction log - ja crash recovery -mekanismien ansiosta, mutta InnoDB-tauluissakin voi esiintyä ongelmia kuten taulutila-, levy-, transaction log- tai datasanakirjaongelmia.

Yleisimmät syyt taulun vioittumiseen

Taulun korjaus phpMyAdminilla saattaa tuntua riittävältä, mutta jos et löydä virheen syytä, sama ongelma voi toistua nopeasti. Seuraavat syyt ovat kentällä yleisimpiä:

  • Äkillinen palvelimen sammutus: Sähkökatko, laiteuudelleen käynnistys tai käyttöjärjestelmän kaatuminen kesken tietokantakirjoituksen voi rikkoa taulun.
  • Täysi levytila: Jos MySQL ei pysty kirjoittamaan väliaikaistiedostoja, indeksejä tai päivityksiä, datan eheys voi vaarantua. Yli 90 % levyn täyttöaste on riskialtis.
  • MySQL-palvelun pakotettu alasajo: esim. kill -9, erityisesti kirjoituskuorman aikana, aiheuttaa ongelmia MyISAM-tauluissa.
  • Kova kirjoituskuorma: Jatkuvasti päivitettävät taulut (lokit, laskurit, istunnot, haut) ovat MyISAM:lla herkempiä vioittumaan.
  • Virheellinen lisäosa tai teema: WordPressin huonosti toteutetut lisäosat voivat tuottaa liiallisia kyselyitä ja taulukilkkauksia.
  • Laitteisto tai tiedostojärjestelmäongelmat: Levyjen bad sectorit, I/O-virheet tai vioittunut tiedostojärjestelmä voivat vaikuttaa tietokantatiedostoihin.
  • Vanha MySQL-versio: Päivittämättömillä versioilla suorituskyky, lukitukset ja palautukset voivat olla heikompia.

Turvalliset toimenpiteet ennen korjausta

Taulun korjaus on useimmiten turvallista, mutta vioittuneeseen tauluun kohdistettu operaatio ei poista täysin datan menetysriskiä. Tuotantoympäristössä eli live-sivustolla varmuuskopio on aina ensisijainen.

1. Ota ajantasainen varmuuskopio tietokannasta

Ennen korjausta vie tietokanta phpMyAdminilla talteen. Vaikka taulu olisi vioittunut, varmuuskopioi kaikki mahdollinen data. Valitse tietokanta phpMyAdminissa, siirry Vie -välilehdelle, valitse mielellään Custom (erityinen) -menetelmä ja tallenna SQL-muodossa. Isoissa tietokannoissa vienti voi kaatua aikakatkaisuun; tällöin hosting-paneelin varmuuskopiointityökalu tai SSH:n mysqldump on luotettavampi. Jos varmuuskopiointi ei ole säännöllistä, tutustu Hosting-varmuuskopiointiratkaisut -palveluihin.

2. Selvitä, mikä taulu on vioittunut

Virheilmoitus kertoo yleensä taulun nimen. WordPressissa saatat törmätä esimerkiksi wp_options, wp_posts, wp_comments tai wp_actionscheduler_actions -tauluihin. Räätälöidyissä ohjelmissa taulun nimi löytyy sovelluslokeista, PHP-virhelokeista tai MySQL error logista. Vioittuneen taulun tunnistaminen estää turhat korjaustoimenpiteet koko tietokantaan.

3. Aseta sivusto hetkeksi huoltotilaan

Jos korjauksen aikana tauluun tulee uusia kirjoituksia, prosessi voi epäonnistua tai data muuttua epäjohdonmukaiseksi. Vilkkailla sivuilla 2–5 minuutin huoltotila tekee korjauksesta turvallisemman. WordPressissa voit käyttää huoltotila-lisäosaa; räätälöidyllä sivulla aseta tilapäinen huoltosivu tai web-palvelimen ohjaus pysäyttämään käyttäjätoiminnot. Huoltosivulla SSL tulisi olla käytössä; jos sertifikaatin kanssa on ongelmia, tutustu SSL-sertifika -vaihtoehtoihin.

MySQL-taulun korjaaminen phpMyAdminilla

phpMyAdmin helpottaa taulun korjausta myös niille, jotka eivät ole komentorivin asiantuntijoita. Seuraavat vaiheet pätevät useimmissa cPanel-, Plesk- ja vastaavissa hosting-paneeleissa.

Vaihe 1: Kirjaudu phpMyAdminiin hosting-paneelista

Kirjaudu hosting-paneeliisi ja avaa phpMyAdmin tietokantaosiossa. Jos käytössäsi on useita hosting-tilejä tai domaineja, varmista että työskentelet oikealla tilillä. Väärän tietokannan korjaaminen ei yleensä vahingoita mitään, mutta voi tuhlata aikaa ja johtaa siihen, että korjaat testiympäristöä live-sivuston sijaan. Jos domain- ja hosting-yhdistelmät menevät sekaisin, tutustu Domainin hallinta -aiheeseen.

Vaihe 2: Valitse oikea tietokanta

Vasemmasta valikosta valitse sivustosi käyttämä tietokanta. WordPressissa tietokannan nimi löytyy wp-config.php tiedoston DB_NAME -riviltä. Räätälöidyissä PHP-ohjelmissa nimi on yleensä config.php, .env tai database.php tiedostossa. Yhdellä palvelimella usean sivuston kanssa tämä tarkistus on erityisen tärkeä.

Vaihe 3: Merkitse vioittunut taulu

Avaa tietokanta ja etsi taulu, jonka nimi ilmenee virheilmoituksesta. Valitse sen vasemmalla puolella oleva valintaruutu. Jos usea taulu on vioittunut, voit valita kaikki, mutta aloita kriittisimmästä taulusta. Näet taulun moottorin (MyISAM vai InnoDB) sarakkeesta Tyyppi tai Engine.

Vaihe 4: Suorita "Korjaa taulu" -toiminto

Valinnan jälkeen sivun alaosassa avautuvasta valikosta valitse Korjaa taulu. phpMyAdmin ajaa taustalla yleensä REPAIR TABLE taulu_nimi -komennon. Saat tuloksen onnistuneena, varoituksena tai epäonnistumisena. Onnistunut tulos näkyy usein status OK -viestinä. Isoilla tauluilla korjaus voi kestää minuutteja; älä päivitä sivua tai sulje selainta prosessin aikana.

Vaihe 5: Tarkista taulu ja testaa sivusto

Korjauksen jälkeen voit valita saman valikon Tarkista taulu -toiminnon. Testaa sivuston etusivua, hallintapaneelia, hakua, tuotelistausta ja kirjautumista. WordPressissa on hyvä tallentaa pysyvät linkit uudelleen, tyhjentää cache ja tarkistaa virhelokit.

Mitä phpMyAdminin korjausvaihtoehdot tarkoittavat?

phpMyAdminissa on useampia taulun ylläpitotoimintoja. Jokaisella on eri tarkoitus eikä niitä kannata käyttää väärin odotuksin.

Mitä phpMyAdminin korjausvaihtoehdot tarkoittavat?
Toiminto Mitä tekee? Milloin käytetään?
Tarkista taulu Tarkastaa taulun rakenteen ja virhetilanteen. Ennen ja jälkeen korjauksen, varmennukseen.
Korjaa taulu Yrittää korjata MyISAM-taulun ja indeksit. Kun Table is marked as crashed -virhe ilmenee.
Optimoi taulu Poistaa tyhjiä tiloja, järjestää taulun. Paljon poistoja/päivityksiä tehty, suorituskykyä varten.
Analysoi taulu Päivittää indeksitilastot kyselysuunnittelijalle. Epäily suorituskyvyn laskusta tai väärän indeksin käytöstä.

Yhteenvetona Table is marked as crashed -virheen korjaamiseen oikea vaihtoehto on Korjaa taulu. Optimointi ja analyysi ovat hyödyllisiä ylläpitotoimintoja, mutta eivät yksinään korjaa vioittunutta taulua.

Miksi InnoDB-tauluissa tilanne on erilainen?

phpMyAdminin Korjaa taulu -toiminto ei aina toimi InnoDB-tauluissa odotetusti, koska InnoDB ei toimi MyISAM:n yksinkertaisella tiedostopohjaisella korjauslogiikalla. InnoDB käyttää transaction-, redo- ja undo-lokeja sekä taulutiloja eheyden turvaamiseen. InnoDB-tapauksissa ratkaisu on usein MySQL-palvelimen lokien tutkiminen, levyn kunnon tarkastus, varmuuskopion palautus tai edistyneet palautusmenetelmät.

Jos virheilmoituksesi koskee MyISAM-taulua, phpMyAdminin korjaus yleensä onnistuu. InnoDB-tauluissa corrupt, tablespace, cannot open table -viestit vaativat ensin varmuuskopion ja lokien tutkimisen. Näissä tilanteissa hostingin tukipalvelu on turvallisin vaihtoehto. Verkkokaupan kriittisissä tiedoissa kannattaa välttää satunnaisia kokeiluja ja suosia ammattilaisapua.

Mitä jos korjaus epäonnistuu?

Taulun korjaus phpMyAdminilla ei aina onnistu. Iso taulukoko, vakava tiedostovaurio, levyn ongelmat tai käyttöoikeudet voivat estää prosessin. Tällöin voit kokeilla seuraavia vaiheita:

  • Palauta varmuuskopiosta: Luotettavin tapa on palauttaa tuorein, virheettömäksi tiedetty varmuuskopio. Tallenna vioittunut tietokanta erilliseen tiedostoon ennen palautusta.
  • myisamchk SSH:lla: MyISAM-tauluissa, jos pääsy palvelimelle on, voit käyttää myisamchk-työkalua. MySQL-palvelu pitää pysäyttää tai tauluun ei saa olla pääsyä.
  • REPAIR TABLE -komento: phpMyAdminin SQL-välilehdellä REPAIR TABLE taulu_nimi; toimii. Isoille tauluille voi käyttää QUICK tai EXTENDED -vaihtoehtoja.
  • Levy- ja inode-tarkistus: Jos levytila tai inode-laskuri on täynnä, korjaus ei onnistu. Poista turhat varmuuskopiot, lokit ja väliaikaistiedostot.
  • Lokien tarkastus: MySQL error log, web-palvelimen logit ja PHP error log auttavat löytämään juurisyyn.

Jaetulla hostingilla SSH- tai palvelimen hallintaoikeudet eivät välttämättä ole käytettävissä. Tällöin nopeutat ratkaisua lähettämällä tukitiimille virheilmoituksen, taulun nimen, arvioidun virheajankohdan ja viimeisimmän varmuuskopion ajankohdan.

Kuinka ehkäistä virheen toistuminen?

Kertaluonteinen korjaus ratkaisee ongelman väliaikaisesti. Pysyvä ratkaisu vaatii infrastruktuurin ja ylläpidon parempaa hallintaa. Seuraavat keinot vähentävät MySQL-taulujen vioittumisriskiä selkeästi:

Harkitse MyISAM-taulujen muuttamista InnoDB:ksi

Uusissa verkkosovelluksissa InnoDB on yleensä turvallisempi ja kestävämpi valinta. Rivikohtainen lukitus, transaction-tuki ja parempi palautuskyky tekevät siitä kirjoituskuormassa MyISAMia vahvemman. Muunnos käy ALTER TABLE taulu_nimi ENGINE=InnoDB; -komennolla, mutta testaa ensin staging-ympäristössä ja ota täysi varmuuskopio. Jotkin vanhat sovellukset voivat riippua MyISAMin erityisominaisuuksista.

Käytä säännöllisiä ja palautettavia varmuuskopioita

Varmuuskopio on arvokas vain, jos sen voi palauttaa. Päivittäiset varmuuskopiot, viikoittaiset täyskopiot ja manuaalivaraukset ennen tärkeitä päivityksiä ovat hyvä käytäntö. Vähintään 7 päivän varmuuskopioiden säilytys on järkevä useimmille pienille ja keskisuurille sivustoille. Verkkokaupoissa tilausdatan turvaamiseen tarvitaan usein tiheämpi varmuuskopiointi tai binlog-pohjainen palautus.

Seuraa levytilaa ja resursseja

Kun levytilan käyttö lähestyy 85–90 %, on syytä hälyttää. MySQL tarvitsee tilaa väliaikaistauluille, lokitiedostoille ja indeksien käsittelyyn. Myös CPU-, RAM- ja I/O-kuormaa tulee seurata. Resurssirajoissa jatkuvasti toimiva sivusto altistuu tietokantavirheille. Jos liikenteesi kasvaa, harkitse siirtymistä jaetusta hostingista tehokkaampaan pakettiin – tutustu Yrityshosting ja Korkean suorituskyvyn hosting -sivuihin.

Tarkista lisäosien, teemojen ja ohjelmiston päivitykset

Vanhat ohjelmistot eivät ole vain tietoturvariski, vaan ne voivat lähettää tehottomia kyselyitä tietokantaan. WordPressissä poista käyttämättömät lisäosat, siivoa lokitaulut ja vältä epäluotettavia lisäosia. Testaa päivitykset staging-ympäristössä ennen live-sivustolle siirtoa, jotta vältät yllättävät taulu- ja indeksiongelmat.

Sammuta palvelin oikein ja suunnittele ylläpito

Jos hallinnoit VPS- tai dedikoitua palvelinta, vältä MySQL-palvelun pakotettua alasajoa. Sammuta palvelut hallitusti, tee päivitykset hiljaisina aikoina ja tarkista lokit uudelleenkäynnistyksen jälkeen. Suunnitelmallinen ylläpitodisipliini vähentää vioittumisriskiä, erityisesti isoissa tietokannoissa.

WordPress-sivustojen erityishuomiot

WordPress näyttää MySQL-virheet usein yleisellä virhe tietokantayhteyden muodostamisessa -viestillä, mutta lokista löytyy tarkempi taulun vioittumisilmoitus. Yleisimmin vioittuvat taulut ovat wp_options, wp_posts, wp_postmeta, wp_comments sekä lisäosien luomat loki- ja ajastintaulut. Jos wp_options-taulu vioittuu, sivuston asetukset eivät lataudu; wp_posts vioittuu, sisällöt eivät näy; lisäosien lokitaulut voivat hidastaa hallintapaneelia.

WordPressissä on sisäänrakennettu tietokannan korjaustoiminto: lisää wp-config.php-tiedostoon define('WP_ALLOW_REPAIR', true); ja aja korjaus /wp-admin/maint/repair.php -osoitteesta. Poista tämä rivi heti korjauksen jälkeen, sillä korjaussivu on muuten julkisesti auki. phpMyAdmin-menetelmä on yleensä hallitumpi, koska voit valita tarkasti taulun. WordPress-projekteihin optimoitua hostingia varten tutustu WordPress hosting -sivuun.

Milloin kannattaa pyytää ammattilaisen apua?

Kaikkia MySQL-virheitä ei kannata eikä voi ratkaista itse. Seuraavissa tilanteissa ammattilaisapu on suositeltavaa:

  • Vioittunut taulu sisältää tilaus-, maksu-, jäsen- tai taloustietoja.
  • Korjausyrityksen jälkeen virhe jatkuu tai taulu katoaa näkyvistä.
  • Tietokannan koko ylittää useita gigatavuja ja phpMyAdmin kaatuu aikakatkaisuun.
  • InnoDB-tablespace- tai redo log -virheitä esiintyy.
  • Levyvirhe, I/O error tai tiedostojärjestelmän varoitus näkyy.
  • Tuoretta varmuuskopiota ei ole saatavilla.

Kun pyydät tukea, liitä mukaan virheilmoituksen koko teksti, vioittunut tietokanta ja taulun nimi, virheen alkamisaika, viimeisin päivitys tai siirto sekä varmuuskopion päiväys. Nämä tiedot nopeuttavat ratkaisua huomattavasti.

Nopea tarkistuslista

Toimi kiiretilanteessa seuraavasti:

  • Tunnista vioittuneen taulun nimi virheilmoituksesta.
  • Ota nykyinen tietokannan varmuuskopio.
  • Aseta sivusto hetkeksi huoltotilaan.
  • Valitse phpMyAdminissa oikea tietokanta.
  • Merkitse taulu ja aja Korjaa taulu -toiminto.
  • Tarkista taulu ja testaa sivuston toiminnallisuus.
  • Vähennä toistumisriskiä tarkistamalla levytila, resurssit, varmuuskopiot ja taulumoottori.

Usein kysytyt kysymykset

Tarkoittaako MySQL "Table is marked as crashed" -virhe datan menetystä?

Ei aina. Useimmat MyISAM-taulut voidaan pelastaa phpMyAdminin Korjaa taulu -toiminnolla. Jos taulu on pahasti vioittunut, osa tiedoista voi silti tuhoutua. Siksi on tärkeää ottaa varmuuskopio ennen korjausta.

Onko taulun korjaaminen phpMyAdminilla turvallista?

Yleensä kyllä, mutta kaikissa live-tietokannan ylläpitotoimissa on riski. Varmuuskopioi, valitse oikea taulu ja aseta sivusto huoltotilaan, jos mahdollista. Isoissa ja kriittisissä tauluissa suosi ammattilaisapua.

Tuleeko InnoDB-tauluissa käyttää Korjaa taulu -toimintoa?

InnoDB-taulut eivät korjaudu MyISAMin REPAIR TABLE -logiikalla. InnoDB-ongelmissa tulee tutkia MySQL-lokit, tarkistaa levytila ja palauttaa varmuuskopiosta. Satunnaiset korjausyritykset voivat lisätä datan menetysriskiä.

Miksi virhe toistuu jatkuvasti?

Jos virhe toistuu, perimmäistä syytä ei ole korjattu. Yleisimpiä syitä ovat täysi levytila, äkilliset palvelinsammutukset, kova kirjoituskuorma, huonot lisäosat, vanha MySQL-versio tai MyISAM-taulujen jatkokäyttö. Kestävän ratkaisun takana on syyn tunnistaminen.

Tuleeko ottaa yhteyttä hosting-palveluun ennen korjausta?

Yksinkertaisissa MyISAM-taulun vioissa voit varmuuskopioida ja korjata taulun itse. Jos taulu sisältää kriittistä dataa, varmuuskopiot puuttuvat, tietokanta on suuri tai InnoDB-virheitä näkyy, kannattaa kääntyä hostingin tuen puoleen.

Yhteenveto

MySQL "Table is marked as crashed" -virhe on tyypillinen MyISAM-tauluissa ja useimmiten korjattavissa phpMyAdminilla. Oikea toimintatapa on ottaa varmuuskopio, tunnistaa vioittunut taulu, korjata se phpMyAdminissa ja selvittää virheen syy. Säännölliset varmuuskopiot, riittävät palvelinresurssit, InnoDB-taulut ja ajantasainen ohjelmisto pienentävät virheen toistumisriskiä. Jos virheitä ilmenee usein, kannattaa tarkistaa infrastruktuuri ja valita tarpeisiin sopiva hosting Hostragonsin palveluista tai pyytää tukea heidän asiantuntijoiltaan.

Jaa tämä artikkeli:

Hostragons-tiimi

Asiantuntijatiimimme ajantasaiset oppaat webhotellista, palvelimista ja verkkotunnuksista. Löydätään yhdessä projektiisi sopiva ratkaisu.

Ota meihin yhteyttä