【MySQL】データベースの移行方法【3分で完了】

  • MySQLでデータベースを移行するには?
  • MySQLでのデータベース移行の流れとは?

本記事ではこのような疑問を解決します。


サーバーを移行したり、新しくデータベースサーバーを構築する際に必要になってくるのが元のデータベースの移行作業です。

さらに、シェアが広いMySQLにおけるデータベースの移行方法は需要が高い情報でしょう。


そこで今回はMySQLでデータベースを移行する方法を解説していきます。

難しそうに感じている方も多いと思いますが、3分で終わる簡単な手順です。

MySQLでのデータベース移行の流れ

MySQLでのデータベース移行の流れは以下の通りです。

①バックアップを作成する(移行元サーバー)

②空のデータベースを作成する(移行先サーバー)

③バックアップから空のデータベースへデータを復元する(移行先サーバー)

①バックアップを作成する(移行元サーバー)

まずは移行元サーバーにおいてデータベースのバックアップを作成します。

具体的にはデータベースのバックアップとして「〇〇.sql」というファイルを作成します。

そして、このバックアップファイルを作成するために使うのが、
MySQL用のバックアップツールであるmysqldumpです。
※dumpとはバックアップのこと

mysqldumpはMySQLの外側で動かすため、ログインコマンドの前やコマンドラインの段階で利用し、
MySQLの文末につけるデリミタ(;)も不要
になります。

それでは以下のコマンドでデータベースのバックアップファイルを作成しましょう。

$ mysqldump -u ユーザー名 -p データベース名 > dumpファイル名
※dumpファイルの拡張子は基本的に「.sql」

これで現在のディレクトリにバックアップファイルが作成されたと思います。

なお、データベース内の特定のテーブルだけバックアップを取りたい場合やオプションを付けてコマンドを実行したい場合は「mysqldump コマンド」などで検索すると記事がたくさんヒットするのでそちらを参考にしてみてください。
※本記事では省略

<常時運用しているデータベースの場合>(読み飛ばしてもOK)
このような場合、dumpを始めたタイミングとdumpを終了したタイミングでデータベースの内容に相違が出てしまうことがあります。
つまり、dumpファイルとデータベースで不整合が生じる可能性があるということです。
こんな時、dumpを行っている間はデータベースをロックする(内容を変更させない状態にする)という方法も考えられますが、常時運用しているデータベースを実質使用不能にするのは問題があるでしょう。
そこで常時運用しているデータベースの場合は「–single-transaction」オプション(データの整合性を保証してくれるオプション)を利用することで上記の問題を解決できます。

②空のデータベースを作成する(移行先サーバー)

次に、移行先サーバーにおいて、先ほど取ったバックアップを入れるための空のデータベースを作成します。

ここではmysqlにログインし、空のデータベースを作成しましょう。

mysql> create database 任意のデータベース名;

なお、データベース名は元のデータベース等と同じにする必要はありません。

③バックアップから空のデータベースへデータを復元する(移行先サーバー)

最後に移行先サーバーにおいてバックアップから空のデータベースへデータを復元します。

復元するコマンドは以下の通りです。

$ mysql -u ユーザー名 -p データベース名 < dumpファイル

dumpファイルは現在のディレクトリに配置するか、ファイルのパスを指定しましょう。

ここまでで無事にデータベースの移行が完了したと思います。

mysqlにおけるshowコマンドなどで移行データがあるかどうか確認してみてください!

まとめ

以上がMySQLでデータベースを移行する方法になります。

データベースの移行と聞くと難しそうに感じますが、やるべきことは簡単で単純な3つの手順だけです。

なお、mysqldumpコマンドやmysqlコマンドには様々なオプションを指定できるので、用途に合わせて使ってみてください。

ググると「よく使うオプション集」のような記事がヒットします。

最後までお読みいただきありがとうございました。