MySQL のバックアップと復元

MySQLMySQLBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、mysqldump コマンドラインツールを使用して MySQL データベースをバックアップおよび復元する方法を学びます。この実験では、データの整合性と可用性を確保するための論理バックアップの作成と復元に関する基本的な技術をカバーしています。

この実験では、サンプルのデータベースとテーブルを作成し、それを mysqldump を使用してバックアップすることを含むデータベースのエクスポートの手順を案内します。また、単一のテーブルをバックアップする方法、ダンプファイルからデータベースを復元する方法、最後に復元されたデータの正確性を確認して復元プロセスの成功を検証する方法も学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/SystemManagementToolsGroup(["System Management Tools"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_database("Database Deletion") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/SystemManagementToolsGroup -.-> mysql/mysqldump("Data Export Utility") subgraph Lab Skills mysql/use_database -.-> lab-550902{{"MySQL のバックアップと復元"}} mysql/create_database -.-> lab-550902{{"MySQL のバックアップと復元"}} mysql/drop_database -.-> lab-550902{{"MySQL のバックアップと復元"}} mysql/create_table -.-> lab-550902{{"MySQL のバックアップと復元"}} mysql/select -.-> lab-550902{{"MySQL のバックアップと復元"}} mysql/insert -.-> lab-550902{{"MySQL のバックアップと復元"}} mysql/mysqldump -.-> lab-550902{{"MySQL のバックアップと復元"}} end

mysqldump でデータベースをエクスポートする

このステップでは、mysqldump コマンドラインツールを使用してデータベースをエクスポートする方法を学びます。mysqldump は、MySQL データベースの論理バックアップを作成するためのユーティリティです。このバックアップを使用して、データベースを元の状態に復元したり、別のサーバーに移行したりすることができます。

始める前に、作業対象となるサンプルのデータベースとテーブルを作成しましょう。ターミナルを開き、以下のコマンドを実行して、root ユーザーとして MySQL サーバーに接続します。ルートパスワードの入力を求められる場合がありますが、開発環境では通常デフォルトで空になっています。

mysql -u root -p

次に、mydatabase という名前のデータベースを作成します。

CREATE DATABASE mydatabase;

次に、mydatabase データベースに切り替えます。

USE mydatabase;

users という名前の簡単なテーブルを作成します。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE
);

users テーブルにいくつかのサンプルデータを挿入します。

INSERT INTO users (name, email) VALUES
('John Doe', '[email protected]'),
('Jane Smith', '[email protected]');

MySQL シェルを終了します。

exit

これで、データが含まれたデータベースができましたので、mysqldump を使用してエクスポートしましょう。データベースをエクスポートする基本的な構文は次の通りです。

mysqldump -u [username] -p[password] [database_name] > [output_file.sql]

[username] をあなたの MySQL ユーザー名(通常は root)に置き換え、[password] をあなたの MySQL パスワード(ある場合)に置き換え、[database_name] をエクスポートしたいデータベースの名前(mydatabase)に置き換え、[output_file.sql] をバックアップを保存したいファイルの名前(例:mydatabase_backup.sql)に置き換えます。

この場合、コマンドは次のようになります。

mysqldump -u root -p mydatabase > ~/project/mydatabase_backup.sql

MySQL ルートパスワードの入力を求められます。パスワード(ある場合)を入力してください。

このコマンドにより、~/project ディレクトリに mydatabase_backup.sql という名前のファイルが作成され、このファイルには mydatabase データベースとその内容を再作成するために必要な SQL 文が含まれています。

~/project ディレクトリの内容を一覧表示することで、ファイルが作成されたことを確認できます。

ls ~/project

出力に mydatabase_backup.sql が表示されるはずです。

また、nano を使用してバックアップファイルの内容を表示することもできます。

nano ~/project/mydatabase_backup.sql

これにより、mysqldump が生成した SQL 文が表示されます。Ctrl+X を押して nano を終了します。

単一のテーブルをバックアップする

このステップでは、mysqldump コマンドを使用して MySQL データベースから単一のテーブルをバックアップする方法を学びます。これは、特定のテーブルのみをバックアップし、データベース全体をバックアップする必要がない場合に便利です。

前のステップで作成した mydatabase データベースと users テーブルを引き続き使用します。

単一のテーブルをバックアップするには、同じ mysqldump コマンドを使用しますが、データベース名の後にテーブル名を指定します。

mysqldump -u [username] -p[password] [database_name] [table_name] > [output_file.sql]

[username] をあなたの MySQL ユーザー名(通常は root)に置き換え、[password] をあなたの MySQL パスワード(ある場合)に置き換え、[database_name] をデータベースの名前(mydatabase)に置き換え、[table_name] をエクスポートしたいテーブルの名前(users)に置き換え、[output_file.sql] をバックアップを保存したいファイルの名前(例:users_backup.sql)に置き換えます。

この場合、コマンドは次のようになります。

mysqldump -u root -p mydatabase users > ~/project/users_backup.sql

MySQL ルートパスワードの入力を求められます。パスワード(ある場合)を入力してください。

このコマンドにより、~/project ディレクトリに users_backup.sql という名前のファイルが作成され、このファイルには users テーブルとその内容を再作成するために必要な SQL 文が含まれています。

~/project ディレクトリの内容を一覧表示することで、ファイルが作成されたことを確認できます。

ls ~/project

出力には、前のステップで作成した mydatabase_backup.sqlusers_backup.sql の両方が表示されるはずです。

また、nano を使用してバックアップファイルの内容を表示することもできます。

nano ~/project/users_backup.sql

これにより、mysqldumpusers テーブルに対して生成した SQL 文が表示されます。Ctrl+X を押して nano を終了します。

次に、単一のテーブルのバックアッププロセスをさらに説明するために、データベースに別のテーブルを追加しましょう。MySQL サーバーに接続します。

mysql -u root -p

mydatabase データベースに切り替えます。

USE mydatabase;

products という名前の新しいテーブルを作成します。

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2)
);

products テーブルにいくつかのサンプルデータを挿入します。

INSERT INTO products (name, price) VALUES
('Laptop', 1200.00),
('Mouse', 25.00);

MySQL シェルを終了します。

exit

ここで、products テーブルのみをバックアップしたい場合は、次のコマンドを使用します。

mysqldump -u root -p mydatabase products > ~/project/products_backup.sql

これにより、~/project ディレクトリに products_backup.sql という名前のファイルが作成され、このファイルには products テーブルのデータのみが含まれます。

ダンプファイルからデータベースを復元する

このステップでは、mysqldump で作成したダンプファイルからデータベースを復元する方法を学びます。これは、バックアップファイルに保存された SQL 文からデータベースとその内容を再作成するプロセスです。

まず、データベースを復元する必要があるシナリオをシミュレートするために、mydatabase データベースを削除しましょう。MySQL サーバーに接続します。

mysql -u root -p

mydatabase データベースを削除します。

DROP DATABASE mydatabase;

MySQL シェルを終了します。

exit

次に、最初のステップで作成した mydatabase_backup.sql ファイルから mydatabase データベースを復元します。データベースを復元する基本的な構文は次の通りです。

mysql -u [username] -p[password] [database_name] < [input_file.sql]

[username] をあなたの MySQL ユーザー名(通常は root)に置き換え、[password] をあなたの MySQL パスワード(ある場合)に置き換え、[database_name] を復元先のデータベースの名前(mydatabase)に置き換え、[input_file.sql] をバックアップファイルの名前(mydatabase_backup.sql)に置き換えます。

復元する前に、先ほど削除した mydatabase データベースを再度作成する必要があります。MySQL サーバーに接続します。

mysql -u root -p

mydatabase データベースを作成します。

CREATE DATABASE mydatabase;

MySQL シェルを終了します。

exit

次に、データベースを復元します。

mysql -u root -p mydatabase < ~/project/mydatabase_backup.sql

MySQL ルートパスワードの入力を求められます。パスワード(ある場合)を入力してください。

このコマンドにより、mydatabase_backup.sql 内の SQL 文が実行され、mydatabase データベースとそのテーブルおよびデータが再作成されます。

データベースが復元されたことを確認するには、MySQL サーバーに接続します。

mysql -u root -p

mydatabase データベースに切り替えます。

USE mydatabase;

データベース内のテーブルを表示します。

SHOW TABLES;

users テーブルと products テーブルが表示されるはずです。

users テーブルからすべてのデータを選択します。

SELECT * FROM users;

最初のステップで挿入したデータが表示されるはずです。

products テーブルからすべてのデータを選択します。

SELECT * FROM products;

2 番目のステップで挿入したデータが表示されるはずです。

MySQL シェルを終了します。

exit

これで、mydatabase_backup.sql ファイルから mydatabase データベースを正常に復元しました。

復元データの正確性を確認する

このステップでは、復元されたデータを元のデータと比較することで、その正確性を検証します。これにより、バックアップと復元のプロセスが正常に完了し、データが失われたり破損したりしていないことを確認できます。

復元された mydatabase データベースに接続し、users テーブルと products テーブルをクエリして、最初に挿入したデータと一致するかどうかを確認します。

MySQL サーバーに接続します。

mysql -u root -p

mydatabase データベースに切り替えます。

USE mydatabase;

users テーブルからすべてのデータを選択します。

SELECT * FROM users;

以下の出力が表示されるはずです。

+----+----------+-----------------------+
| id | name     | email                 |
+----+----------+-----------------------+
|  1 | John Doe | [email protected]  |
|  2 | Jane Smith | [email protected] |
+----+----------+-----------------------+
2 rows in set (0.00 sec)

これにより、users テーブルのデータが正常に復元されたことが確認されます。

次に、products テーブルからすべてのデータを選択します。

SELECT * FROM products;

以下の出力が表示されるはずです。

+----+---------+---------+
| id | name    | price   |
+----+---------+---------+
|  1 | Laptop  | 1200.00 |
|  2 | Mouse   |   25.00 |
+----+---------+---------+
2 rows in set (0.00 sec)

これにより、products テーブルのデータも正常に復元されたことが確認されます。

出力が最初に挿入したデータと一致する場合、復元プロセスは成功しています。出力が異なる場合やエラーが発生した場合は、バックアップまたは復元プロセスに問題があった可能性があります。

データの整合性をさらに確保するために、特定のデータ値やテーブル間の関係を確認するためのより複雑なクエリを実行することができます。ただし、この実験では、users テーブルと products テーブルの内容を確認することで基本的なデータの正確性を検証しました。

MySQL シェルを終了します。

exit

これで、復元されたデータの正確性を正常に検証しました。これで、MySQL データベースのエクスポート、バックアップ、復元に関する実験は完了です。

まとめ

この実験では、mysqldump コマンドラインツールを使用して MySQL データベースの論理バックアップを作成する方法を学びました。これには、users テーブルを持つ mydatabase という名前のサンプルデータベースを作成し、サンプルデータを挿入する作業が含まれていました。その後、mysqldump を使用して、データベース全体を SQL ファイル mydatabase_backup.sql にエクスポートしました。

このプロセスでは、mysqldump コマンドの基本的な構文を実演しました。これには、ユーザー名、パスワード、データベース名、および出力ファイルの指定が含まれます。このバックアップファイルを使用して、データベースを元の状態に復元したり、別のサーバーに移行したりすることができます。