MySQL バックアップと復旧

MySQLBeginner
オンラインで実践に進む

はじめに

この実験では、mysqldump コマンドラインツールを使用して MySQL データベースのバックアップと復元を行う方法を学びます。mysqldump は、論理バックアップを作成するための重要なユーティリティであり、データ保護、災害復旧、移行に不可欠です。

実験では、データベース全体のバックアップ、単一テーブルのバックアップを行い、その後、バックアップファイルから両方を復元する練習をします。この実験では、データ損失シナリオをシミュレートし、バックアップを使用してデータを復旧する方法をガイドし、完全なバックアップと復旧のライフサイクルを理解できるようにします。

データベース全体のバックアップ

データ保護の最初のステップは、完全なバックアップを作成することです。このステップでは、mysqldump を使用して、事前に設定された mydatabase データベースのフルバックアップを作成します。

まず、ターミナルを開きます。データベースの内容を確認するために、データベースを検査しましょう。root ユーザーを使用して MySQL サーバーに接続します。

sudo mysql -u root

mysql> プロンプトが表示されたら、mydatabase データベースに切り替えてテーブルを表示します。

USE mydatabase;
SHOW TABLES;

productsusers の 2 つのテーブルが表示されるはずです。

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

これで、MySQL シェルを終了してターミナルに戻ります。

exit

データベース全体のバックアップを行う時間です。mysqldump コマンドはデータベースを読み込み、それを再作成するために必要な SQL ステートメントを出力します。この出力を .sql ファイルにリダイレクトします。

次のコマンドを実行して mydatabase をバックアップし、/home/labex/backup ディレクトリ内に mydatabase_backup.sql という名前のファイルに保存します。

sudo mysqldump -u root mydatabase > /home/labex/backup/mydatabase_backup.sql

バックアップファイルが作成されたことを確認するには、/home/labex/backup ディレクトリの内容を一覧表示します。

ls /home/labex/backup

バックアップファイルが表示されるはずです。

mydatabase_backup.sql

データベースのフルバックアップを正常に作成しました。

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

データベース全体ではなく、特定のテーブルのみをバックアップする必要がある場合があります。これは、小規模でターゲットを絞った操作に役立ちます。このステップでは、products テーブルのみをバックアップします。

構文はデータベース全体のバックアップと似ていますが、データベース名の後にテーブル名を指定します。

ターミナルから、次のコマンドを実行して mydatabase から products テーブルをバックアップします。バックアップは products_backup.sql として保存されます。

sudo mysqldump -u root mydatabase products > /home/labex/backup/products_backup.sql

新しいバックアップファイルが作成されたことを確認しましょう。バックアップディレクトリの内容を再度一覧表示します。

ls /home/labex/backup

これで、データベース全体のバックアップと単一テーブルのバックアップの両方が表示されるはずです。

mydatabase_backup.sql  products_backup.sql

単一テーブルのバックアップファイルの内容を検査して、products テーブルの情報のみが含まれていることを確認できます。

cat /home/labex/backup/products_backup.sql

出力には、products テーブルのみを作成および投入するための SQL ステートメントが表示されます。これにより、ターゲットを絞ったバックアップが正常に作成されたことが確認できます。

データベース全体の復元

バックアップが完了したので、それらを復元する練習をしましょう。このステップでは、データベース全体を削除するという災害をシミュレートし、その後、フルバックアップファイルから復元します。

まず、データベースを削除します。-e フラグを使用すると、ターミナルから直接単一の SQL コマンドを実行できます。

sudo mysql -u root -e "DROP DATABASE mydatabase;"

データベースが削除されたことを確認します。

sudo mysql -u root -e "SHOW DATABASES;"

mydatabase がリストに表示されなくなっていることがわかります。

データを復元する前に、同じ名前の空のデータベースを作成する必要があります。

sudo mysql -u root -e "CREATE DATABASE mydatabase;"

次に、mydatabase_backup.sql ファイルを mysql クライアントへの入力としてリダイレクトすることで、データベースを復元します。

sudo mysql -u root mydatabase < /home/labex/backup/mydatabase_backup.sql

このコマンドは、バックアップファイル内のすべての SQL ステートメントを実行し、テーブルを再作成してデータを挿入します。

復元を確認するには、MySQL に接続し、テーブルとその内容を確認します。

sudo mysql -u root

mysql> プロンプトで、次のコマンドを実行します。

USE mydatabase;
SHOW TABLES;
SELECT * FROM users;

products および users テーブルが再び表示され、users テーブルには元のデータが含まれているはずです。

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

+----+------------+--------------------------+
| id | name       | email                    |
+----+------------+--------------------------+
|  1 | John Doe   | john.doe@example.com     |
|  2 | Jane Smith | jane.smith@example.com   |
+----+------------+--------------------------+
2 rows in set (0.00 sec)

MySQL シェルを終了します。

exit

壊滅的な障害からデータベース全体を正常に復旧しました。

まとめ

この実験では、mysqldump ユーティリティを使用して MySQL データベースのバックアップと復元を行うための基本的なスキルを学びました。データベース全体のバックアップと単一テーブルのターゲットバックアップの作成を実践しました。

また、データベース全体の損失と単一テーブルの誤削除の両方をシミュレートすることで、復旧手順の実践的な経験も得ました。両方のシナリオでデータを正常に復元することにより、データベース管理者または開発者にとって重要なスキルである、完全なデータ保護ライフサイクルの基本的な理解を示しました。