もっと詳しく

データは人や組織にとって価値があります。 顧客または給与情報を含む会社のデータベースを失うことを想像してみてください。 データベースのバックアップは、データ損失の可能性からのセーフティネットとして不可欠ですが、それは議論の余地がありません。

MySQLデータベースとテーブルをバックアップするための優れた方法は mysqldump 指図。 させないでください ごみ 名前であなたをだます; mysqldump は、MySQLのインストールに付属する多用途で強力なツールです。

準備? 読んで、MySQLデータベースバックアッププロになりましょう!

前提条件

このチュートリアルは、実践的なデモンストレーションになります。 フォローしたい場合は、MySQLがすでにインストールされているLinuxコンピュータが必要です。 このチュートリアルでは、MySQL8.0.29を搭載したUbuntu20.04コンピューターを使用します。 フォローする UbuntuにMySQLをインストールする方法 MySQLをまだインストールしていない場合は、最初にチュートリアルを実行してください。

このチュートリアルでは、Linuxコンピューターへのターミナルセッションが既に開いていることも前提としています。

テストデータベースの作成

データベースをバックアップする前に、少なくとも1つは必要です。 このセクションでは、テスト用のテーブルとデータを使用して2つのサンプルデータベースを作成します。

このチュートリアルでは、MySQLデータベース、テーブルの作成、およびデータの挿入について詳しく説明していません。 このセクションの手順またはコマンドは、デモンストレーションのみを目的としています。

1.まず、rootとしてmysqlコマンドシェルに接続します。 プロンプトが表示されたらパスワードを入力し、Enterキーを押します。

2.次に、以下のコードをコピーしてmysqlプロンプトに貼り付け、Enterキーを押します。 各ステートメントの機能を理解するには、インラインコメントを参照してください。

このコードは、menagerie1とmenagerie2という名前の2つのデータベースを作成し、各データベース内にpetsテーブルを作成し、各テーブル内にサンプルレコードを挿入します。

/* Create two databases called menagerie1 and menagerie2 */
CREATE DATABASE menagerie1;
CREATE DATABASE menagerie2;

/* Create a new table called pets on the menagerie1 database */
CREATE TABLE menagerie1.pets (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE
);

/* Create a new table called pets on the menagerie2 database */
CREATE TABLE menagerie2.pets (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE
);

/* Insert a new sample record into the pets table on menagerie1*/
INSERT INTO
    menagerie1.pets
VALUES
    (
        'Puffball',
        'Diane',
        'hamster',
        'f',
        '1999-03-30',
        Null
    );

/* Insert a new sample record into the pets table on menagerie2*/
INSERT INTO
    menagerie2.pets
VALUES
    (
        'Good Boy',
        'Karen',
        'dog',
        'm',
        '2000-02-18',
        NULL
    );

3.次に、以下のステートメントを実行して、データベースのテーブル内にサンプルデータが存在することを確認します。

SELECT * FROM menagerie1.pets;
SELECT * FROM menagerie2.pets;

以下のスクリーンショットのような結果が表示されるはずです。 ご覧のとおり、両方のデータベースのテーブルには、それぞれ1つのレコードがあります。

データベースとテーブルの両方からのレコードのクエリ
データベースとテーブルの両方からのレコードのクエリ

4.最後に、quitまたは qと入力してmysqlシェルを終了し、Enterキーを押します。

MySQLを終了します
MySQLを終了します

mysqldumpコマンドを使用したデータベース全体のバックアップ

これでMySQLデータベースができました。次は、 mysqldump 動作中のコマンド!

mysqldump は、1つ以上のデータベースまたは特定のテーブルのみをバックアップできるため、用途の広いコマンドラインツールです。 また、このツールは、データベースまたはテーブルの再作成に使用できるSQLファイルを生成できます。

MySQLデータベース全体をバックアップする方法は2つあります。 特定のデータベースとすべてのデータベース。

重要! 以降のサブセクションで学習する各バックアップ方法は、既存のバックアップファイルを同じファイル名で上書きします。 本番環境で既存のバックアップを上書きしないように注意してください。

特定のデータベースのバックアップ

この方法では、一度に1つのデータベースのバックアップが作成されます。これは、各データベースを個別のバックアップファイルにダンプする場合に便利です。 このメソッドの基本的な構文を以下に示します。

mysqldump [OPTIONS] database_name > backup_file.sql

たとえば、以下のコマンドを実行して、 menagerie1menagerie2 個別にデータベース。

# OPTIONS
## * -u root = connect to the MySQL server as the root account.
## * -p = prompt for the account password.
mysqldump -u root -p menagerie1 > menagerie1_db_backup.sql
mysqldump -u root -p menagerie2 > menagerie2_db_backup.sql
単一データベースバックアップ用のmysqldumpコマンド
単一データベースバックアップ用のmysqldumpコマンド

明確な データベースのバックアップ

mysqldump コマンドを使用すると、バックアップする1つ以上のデータベースを指定できます。 以下の構文からわかるように、を指定する必要があります --databases また -B 引数の後に同じ行のデータベースのリストが続きます。

注:このメソッドは、指定されたすべてのデータベースを1つのバックアップファイルにバックアップします。

mysqldump [OPTIONS] --databases database1 [database2] > backup_file.sql
# OR
mysqldump [OPTIONS] -B database1 [database2] > backup_file.sql

たとえば、次のコマンドを実行して、 menagerie1menagerie2 データベース。

mysqldump -u root -p -B menagerie1 menagerie2 > menagerie1_menagerie2_db_backup.sql
複数のデータベースをバックアップするためのmysqldumpコマンド
複数のデータベースをバックアップするためのmysqldumpコマンド

すべてのデータベースバックアップ

各データベース名をリストせずにすべてのデータベースを一度にバックアップする必要がある場合は、 --all-databases また -A 以下に示すように、引数。

mysqldump [OPTIONS] --all-databases > backup_file.sql
# OR
mysqldump [OPTIONS] -A > backup_file.sql

すべてのデータベースを単一のバックアップファイルにバックアップするには、ターミナルで以下のコマンドを実行します。

mysqldump -u root -p --all-databases > all_db_backup.sql
すべてのデータベースバックアップ用のmysqldumpコマンド
すべてのデータベースバックアップ用のmysqldumpコマンド

注:このメソッドは、sys、mysql、information_schema、performance_schemaなどのデフォルトデータベースを含む、既存のすべてのMySQLデータベースをバックアップします。 このバックアップ方法を使用するときは注意してください。

データベースバックアップファイルの検査

すべての手順に従った場合、2つのバックアップファイルがあります。 *.sql 現在のディレクトリの拡張子。 確認するには、ターミナルで以下のコマンドを実行します。

その結果、リストに4つのバックアップファイルが表示されます。

すべてのMySQLデータベースバックアップファイルの一覧表示
すべてのMySQLデータベースバックアップファイルの一覧表示

次に、バックアップファイルの1つを好みのテキストエディタで開きます。 ナノ また Visual Studio Code。 最小サイズのファイルを選択します。この場合は、 menagerie1_menagerie2_db_backup.sql

下のスクリーンショットのフォーマットを認識できますか? はい、それらはSQLステートメントです。 ザ mysqldump コマンドは、データベース、テーブル、およびレコードを作成するSQLスクリプトを生成します。

データベースバックアップファイルの内容の表示
データベースバックアップファイルの内容の表示

mysqldumpコマンドを使用したテーブルのバックアップ

データベース全体のバックアップを取ることは別として、 mysqldump コマンドを使用すると、特定のテーブルをバックアップできます。 特定のテーブルのバックアップを取ると、管理が容易になり、使用するストレージスペースが少なくなります。

テーブルバックアップのその他の利点は、データ復元の移植性と粒度です。 バックアップファイルのサイズが小さいほど移植性が高く、テーブルのバックアップを新規または既存のデータベースに復元できます。

テーブルをバックアップするための構文は次のとおりです。 データベース名を指定した後、バックアップするテーブルのリストを追加する必要があります。 テーブル名を指定しない場合、 mysqldump コマンドは、データベース内のすべてのテーブルをダンプします。

mysqldump [OPTIONS] database [table1 table2...] > table_backup.sql

この構文がわかったので、次の手順に従ってデータベーステーブルをバックアップします。

1.以下のコマンドを実行して、menagerie1データベースのpetsテーブルのみをバックアップします。 このコマンドは、menagerie1_pets_tb_backup.sqlという名前のファイルを作成します。

mysqldump -u root -p menagerie1 pets > menagerie1_pets_tb_backup.sql
特定のテーブルのバックアップを作成する
特定のテーブルのバックアップを作成する

2. * .sqlファイルをリストして、バックアップファイルの作成が成功したことを確認します。

バックアップファイルの作成を確認する
バックアップファイルの作成を確認する

3.必要に応じて、バックアップファイルをテキストエディタで開くか、画面に内容を表示します。

# Open in the text editor
nano menagerie1_pets_tb_backup.sql
# OR display on the screen
cat nano menagerie1_pets_tb_backup.sql
データベーステーブルのバックアップファイルの表示
データベーステーブルのバックアップファイルの表示

バックアップからの復元

データベースまたはテーブルのバックアップがあると、安心できます。 データベースが破損したり、誰かが誤ってデータベースを削除したりした場合に、復元できるデータの時点があることを知っています。

この時点で、 mysqldump コマンドは、データベースとテーブルをバックアップするための役割をすでに果たしています。 これらのバックアップの復元は、 mysql コマンドシェル。

データベース全体の復元

このチュートリアルの前半で、バックアップを作成しました menagerie1menagerie2 データベースをという名前のファイルに menagerie1_menagerie2_db_backup.sql。 このセクションでは、複数のデータベース損失をシミュレートし、バックアップファイルからそれらを復元します。

1.まず、MySQLシェルに接続します。

2.次に、menagerie1およびmenagerie2データベースを削除して、複数のデータベースの喪失をシミュレートします。

# Delete the databases
DROP DATABASE menagerie1;
DROP DATABASE menagerie2;

# List remaining databases
SHOW DATABASES;

以下に示すように、データベースの削除は成功しました。 両方のデータベースはMySQLサーバーに存在しなくなりました。

データベースの削除
データベースの削除

3.ここで、menagerie1_menagerie2_db_backup.sqlファイルからデータベースを復元します。 これを行うには、ソースまたはを実行します。 コマンドの後にバックアップファイル名(フルパスまたは相対パス)を続けて、魔法が起こるのを見てください!

source menagerie1_menagerie2_db_backup.sql

以下のスクリーンショットと同様の出力が画面に表示されます。

バックアップからのデータベースの復元
バックアップからのデータベースの復元

4.最後に、データベースとそのデータが正常に復元されたことを確認します。

SELECT * FROM menagerie1.pets;
SELECT * FROM menagerie2.pets;

これで、データベースがバックアップから正常に復元されました。

復元されたデータベースからのデータのクエリ
復元されたデータベースからのデータのクエリ

データベーステーブルの復元

この例では、 pets テーブルへ menagerie1 データベース。 以前に、このテーブルのバックアップを次の名前のファイルに作成しました menagerie1_pets_tb_backup.sql

1.まず、テーブルの損失をシミュレートするために、以下のコマンドを実行して、menagerie1からpetsテーブルを削除します。

# Switch to the menagerie1 database
USE menagerie1;
# Delete the pets table from menagerie1
DROP TABLE pets;
# List the tables (if any) from menagerie1
SHOW TABLES;

以下の出力は、petsテーブルを削除した後、menagerie1データベースにテーブルが存在しないことを示しています。

テーブルの削除
テーブルの削除

2.ここで、ソースまたはを実行します。 コマンドの後にテーブルバックアップファイルが続きます。 この例では、バックアップファイルはmenagerie1_pets_tb_backup.sqlです。

. menagerie1_pets_tb_backup.sql

3.最後に、mysqlシェルで以下のコマンドを実行して、ペットテーブルの復元が成功したことを確認します。

SHOW TABLES;
SELECT * FROM pets;

以下に示すように、復元によってペットのテーブルとデータが再作成されました。

テーブルの一覧表示とデータのクエリ
テーブルの一覧表示とデータのクエリ

結論

MySQLデータベースのバックアップは、管理者が定期的に実行する必要がある重要なタスクです。 ザ mysqldump コマンドを使用すると、データベース全体または個々のテーブルのバックアップを簡単かつ簡単に作成できます。

このガイドでは、を使用するための基本的なオプションについてのみ説明しました。 mysqldump コマンド。 ニーズに合わせてさらにカスタマイズできます。 おそらく、スケジュールどおりにバックアップを実行するためにcronジョブを設定する必要があります。

実際の使用では、データベースは数千倍ではないにしても数百倍大きく、ディスクをSQLファイルでいっぱいにしたくありません。 その場合、あなたはしたいと思うでしょう ダンプファイルを圧縮します そしてそれをネットワークドライブに保存するか、さらに良いことに、AmazonS3のようなクラウドストレージに保存します。

The post Mysqldumpコマンドを使用してデータベースをバックアップおよび復元する方法 appeared first on Gamingsym Japan.