ことれいのもり

MySQLが起動しないエラーの復旧がなぜできる?~用語理解編~

はじめに

前回の記事で、XAMPPでMySQLのStartボタンを押しても起動しないエラーの復旧方法を紹介しました。

この手順で復旧できますが、なぜこの操作で復旧できるのか?各ファイルは何を表しているんだろう?といった疑問が湧いてきたので調べてみました。


エラー復旧方法の解説記事は前編(用語理解編)と、後編(手順解説編)に分かれています。

この記事は前編となっており、復旧手順を理解するために必要な用語や基礎知識をまとめています。

次回の後編では、実際の手順を一つずつ取り上げながら、「なぜこの操作でMySQLが直るのか?」を解説していきます。


データベースについて詳しくない初心者でも分かるようにまとめたので、気になる人はぜひご覧ください。


前回の記事:XAMPPでMySQLのStartボタンを押しても起動しないエラーの復旧方法

解説 前編:MySQLが起動しないエラーの復旧がなぜできる?~用語理解編~

解説 後編:MySQLが起動しないエラーの復旧がなぜできる?~手順解説編~

前提や環境

環境

  • XAMPP
  • MySQL
  • phpMyAdmin


ここから先の内容は、私の理解をもとに初心者の方にも分かりやすく説明しています。

そのため、厳密な定義や専門的な正確さよりも、イメージしやすさを優先している部分があります。

正確な情報を知りたい方は、公式ドキュメントや専門書などもあわせてご覧いただければ幸いです。

データベースの基礎知識

手順に沿って説明する前に、各用語の基礎知識があるので説明します。

知っているなら飛ばしてOK!


データベースとテーブルの関係

データベース

データベースとは、データを整理していれておく場所のことです。

このなかにはテーブルという単位でデータがまとめられています。


ただ、これだけだと少し分かりにくいので、本棚で例えてみましょう。

データベースは、たくさんの本を整理してしまっておける本棚のようなものです。


  • データが整理されて入っている!
  • 中のデータは読んだり修正したりできる!


こんなイメージで大丈夫です。

テーブル

テーブルとは、実際のデータが表形式でまとまっているものです。

1つのテーブルの中には行と列があり、一覧表のように情報が書かれています。


先ほどの本棚の例で言うと、テーブルは、データベース(本棚)の中にある本にあたります。

1冊の本にたくさんの情報が書き込まれているイメージです。

一つの本棚の中に何冊も本が入るように、一つのデータベースの中に複数のテーブルが入ります。


  • 実際に入っているデータのことで、表形式でまとまっている!
  • 一つのデータベースの中に複数のテーブルが入る!


こんなイメージで大丈夫です。

データベースの応用知識

データベースとテーブルについてなんとなく分かりましたか?

ここまでは知っている、という人も多いと思います。

続いて応用知識では、今回の復旧手順の要になる部分を説明します。

もう一息がんばりましょう!

ストレージエンジン

先ほど、「テーブルはデータを表形式でまとめている」と説明しました。

実は、このテーブルの中でデータをどう保存し、どう管理するかにはいくつかの形式があります。

この形式のことをストレージエンジンと呼びます。


たとえば、

InnoDB:トランザクション(データの処理をまとめて安全に行なう仕組み)に対応していて、高い信頼性を持つ

MyISAM: 軽量・全文検索に強いが、トランザクションに対応していない


どのストレージエンジンが一番優れているか?という答えはなく、用途に応じて選択するものです。

イメージとしては、テーブルを作成するときに「安全性を高めたいから、このテーブルはInnoDBで管理しよう」と選択できる感じです。

MySQLでは、自分で指定しない場合、デフォルトでInnoDBになります。

システムデータベース

さきほど、「データベースはデータを整理していれておく場所」と説明しました。

実は、データベースは大きく2つに分けることができます。

そのうちの一つがシステムデータベースです。


システムデータベースとは、インストールした時に最初から存在している、MySQL本体を動かすために必要なデータベースのことです。


phpMyAdminでいうと、赤枠の部分です。

システムデータベース


  • information_schema
  • mysql
  • performance_schema
  • phpmyadmin

ユーザーデータベース

一方、ユーザーが自分で作ったデータベースをユーザーデータベースといいます。

SQL文で作成したデータベースは、ユーザーデータベースになります。

CREATE DATABESE mydb;


phpMyAdminでいうと、青枠の部分です。

このデータベースは私が作った物なので、あなたの環境にはないかもしれません。

いずれにしても、自分で作成したデータベースがユーザーデーターベースです。

ユーザーデータベース


  • cms
  • cms_demo

フォルダについて

ここからは、復旧手順で使用するフォルダが何を意味しているかを説明します。

dataフォルダ

場所:xampp\mysql\data

  • データベースの本体が格納されている
  • システムデータベース・ユーザーデータベースが含まれる
  • ここが壊れるとMySQLが起動できなくなる


つまり、dataフォルダはMySQLの心臓部です。

実際のデータベースファイルがここにあり、最も重要なフォルダであると言えます

backupフォルダ

場所:xampp\mysql\backup

  • インストール直後の初期状態のシステムデータベースが入っている
  • 工場出荷時のリセット用データみたいなもの


backupフォルダは、初期状態のデータを保持しています。

そのため、トラブル時はこのフォルダの中身を使って初期状態に戻すことが出来ます。

ibdata1ファイル

場所:xampp\mysql\data

  • InnoDBの「辞書情報」(どのデータベースにどんなテーブルがあり、どのファイルにデータが保存されているかの対応関係)を管理する


ibdata1ファイルは、テーブル内のデータがどのファイルに保存されているのかを記録する特別なファイルです。


実際のテーブルデータやインデックスは.ibdファイルに保存され、テーブルの定義は.frmファイルに記録されています。

しかし、ibdata1ファイルがなければ、MySQLは「テーブルがあること」は認識できても、中身がどのファイルにあるのかが分からなくなってしまいます。


つまり、ibdata1ファイルは、データの場所を指し示す地図のような役割を担っています。

おわりに

ここまで、データベースやフォルダ、ファイルについて説明しました。

「dataフォルダ」「backupフォルダ」「ibdata1フォルダ」が何をしているのかイメージできれば、復旧手順でやっている操作の意味が分かりやすくなると思います。


次回の記事では、実際の復旧手順を一つずつ取り上げながら、なぜこの操作でMySQLが直るのか? を解説していきます。

興味がある方は、ぜひ続けて読んでみてください。

次回の記事:MySQLが起動しないエラーの復旧がなぜできる?~手順解説編~