こんにちは、2024年4月に入社した高田です。
入社してから数ヶ月が経ち、社内研修を終えて、少しずつ実際の業務に携わるようになりました。最近は、実務の単体試験の一環としてMySQLのデータベース操作を行う機会があり、その中でデータベースおよびテーブルのバックアップとリストアを行いました。
今回は、MySQLのバックアップ・リストア方法について、手順やポイントを説明します。
MySQLのバックアップ方法
1. 単一のデータベースをバックアップ
以下のコマンドを使用すると、特定のデータベース全体をバックアップできます。
なお、「-h ホスト名」は、リモートサーバーに接続する場合に指定します。ホスト名が「localhost」の場合は、-h localhost を省略してもデフォルトで「localhost」に接続されます。
1 |
mysqldump -h ホスト名 -u ユーザー名 -p データベース名 > 出力ファイル名.sql |
2. 特定のテーブルをバックアップ
特定のデータベース内の一部のテーブルのみをバックアップしたい場合は、以下のコマンドを使用します。
1 |
mysqldump -h ホスト名 -u ユーザー名 -p データベース名 テーブル名1 テーブル名2 > 出力ファイル名.sql |
MySQLのリストア方法
バックアップファイルから特定のデータベースにデータをリストアする場合、バックアップファイルが単一のデータベース全体であっても、複数のテーブルを含む場合であっても、以下のコマンドでリストアできます。「-h ホスト名」については、バックアップ時と同様です。ホスト名が 「localhost」の場合は、省略してもデフォルトで「localhost」に接続されます。
1 |
mysql -h ホスト名 -u ユーザー名 -p データベース名 < 入力ファイル名.sql |
実例
社内研修で使用した「laravelDB」というデータベースを使ってデータベースおよびテーブルのバックアップとリストアを実施します。
「laravelDB」データベースは「users」テーブルと「prefectures」テーブルの2つのテーブルを含んでいます。
データベースのバックアップ・リストア手順
1. データベースのバックアップ
1 |
mysqldump -u root -p laravelDB > /tmp/laravelDB.sql |
2. リストア用のデータベース作成
1 2 3 4 5 |
# MySQLに接続 mysql -u root -p # データベース作成 CREATE DATABASE laravelDB_restore; |
3. データベースのリストア
1 |
mysql -u root -p laravelDB_restore < /tmp/laravelDB.sql |
以上の3ステップを実行すると、「laravelDB」データベースのバックアップデータを使用して、「laravelDB_restore」データベースに復元できます。復元後のデータベースには、バックアップ時点のデータやテーブル構造が再現されていることを確認できます。
テーブルのバックアップ・リストア手順
1. テーブルのバックアップ
1 |
mysqldump -u root -p laravelDB users prefectures > /tmp/laravelDB_tables.sql |
2. リストア用のデータベース作成
1 2 3 4 5 |
# MySQLに接続 mysql -u root -p # データベース作成 CREATE DATABASE laravelDB_restore_tables; |
3. テーブルのリストア
1 |
mysql -u root -p laravelDB_restore_tables < /tmp/laravelDB_tables.sql |
以上の3ステップを実行すると、「users」テーブルと「prefectures」テーブルのバックアップデータを作成し、新しく作成した「laravelDB_restore_tables」データベースに復元できます。データベース全体ではなく、特定のテーブルのみを対象としてバックアップ・リストアを行うため、復元後のデータベースにはバックアップしたテーブルのみが含まれ、それ以外のテーブルは存在しません。
まとめ
今回は、MySQLの基本的なバックアップおよびリストア手順について学びました。研修では、SELECT文、UPDATE文、DELETE文、CREATE文の使用方法を中心に学習しましたが、バックアップやリストアもコマンドを使用することで手軽に実行できると知りました。
本番環境のデータを扱う際には、事前にバックアップを取得し、万が一のトラブル時にも迅速にデータをリストアできるよう備えておくことが重要だと思いますので、今回学習した知識や技術をしっかりと整理し、必要なときに迅速に活用できるようにしていきたいと思います。