sql >> データベース >  >> RDS >> Mysql

MySQLデータベースをバックアップします

    MySQLはオープンソースのリレーショナルデータベース管理システム(DBMS)であり、さまざまなコンテキストで頻繁に展開されます。ほとんどの場合、LAMPスタックの一部としてデプロイされます。データベースシステムはまた、使いやすく、移植性が高く、多くのアプリケーションのコンテキストでは、非常に効率的です。 MySQLは多くの場合、大量のミッションクリティカルなデータの集中データストアであるため、MySQLデータベースの定期的なバックアップを作成することは、システム管理者が実行できる最も重要なディザスタリカバリタスクの1つです。このガイドでは、データベースのバックアップを作成したり、バックアップからデータベースを復元したりするためのさまざまな方法について説明します。

    インストールプロセスを開始する前に、コンピューティングインスタンスのセットアップとセキュリティ保護で概説されている手順に従っていることを前提としています。さらに、MySQLデータベースをインストールする必要があります。すべての構成はターミナルセッションで実行されます。 SSH経由でrootとしてLinodeにログインしていることを確認してください。 Linuxサーバーの管理に慣れていない場合は、Linuxの概念ガイド、初心者向けガイド、および管理の基本ガイドの概要に興味があるかもしれません。

    バックアップ方法

    このガイドのMySQLデータベースのほとんどのバックアップは、mysqldumpを使用して実行されます。 デフォルトのMySQLサーバーインストールで配布されるツール。 mysqldumpを使用することをお勧めします データベースのバックアップを取る最も簡単で効率的な方法であることが多いため、可能な限りいつでも。このガイドで詳しく説明されている他の方法は、mysqldumpにアクセスできない状況のために提供されています。 ツール、Finnixのようなリカバリ環境、またはMySQLサーバーのローカルインスタンスが起動しない状況など。

    それにもかかわらず、このガイドはmysqldumpの単なる概要を提供します mysqldumpには多くのオプションと使用法があるため、ツール これは、このドキュメントの範囲を超えています。このドキュメントで説明されているすべての手順に精通し、mysqldumpの調査を継続することをお勧めします。 ここで説明するケースを超えて。次の点に注意してください:

    • *.sql mysqldumpで作成されたファイル いつでも復元できます。データベースの.sqlを編集することもできます お気に入りのテキストエディタを使用して手動で(細心の注意を払って!)ファイルを作成します。
    • データベースがMyISAMストレージエンジンのみを使用している場合は、mysqldumpに置き換えることができます。 より高速なmysqlhotcopyを使用したコマンド 。

    データベース管理システム全体(DBMS)のバックアップの作成

    多くの場合、ユーザー、権限、およびパスワードを保持するシステムデータベースを含む、すべてのデータベースとテーブルとともに、データベース管理システム全体のバックアップ(または「ダンプ」)を行う必要があります。

    オプション1:mysqldumpユーティリティを使用してデータベース管理システム全体のバックアップを作成する

    >

    MySQLデータベース管理システム全体の単一のコヒーレントバックアップを作成するための最も簡単な方法は、mysqldumpを使用します。 コマンドラインからのユーティリティ。現在のタイムスタンプでデータベースダンプを作成するための構文は次のとおりです。

    mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p
    

    このコマンドは、現在のディレクトリでデータベースのバックアップを開始する前に、パスワードの入力を求めるプロンプトを表示します。このプロセスには、データベースのサイズに応じて、数秒から数時間かかる場合があります。

    crontabに行を追加して、このプロセスを自動化します :

    0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD
    

    上記の例では、which mysqldumpを使用します コマンドへの正しいパスを確認し、rootを置き換えます バックアップを実行するmysqlユーザー、およびPASSWORD そのユーザーの正しいパスワードを使用します。

    注 crontabの例では、-Pフラグとパスワードエントリの間にスペースがないことを確認してください。

    オプション2:MySQLデータディレクトリのコピーを使用してDBMS全体のバックアップを作成する

    mysqldump ツールが推奨されるバックアップ方法です。別のアプローチが必要な場合がいくつかあります。 mysqldump データベースサーバーにアクセスして実行している場合にのみ機能します。データベースを起動できない場合、またはホストシステムにアクセスできない場合は、MySQLのデータベースを直接コピーできます。この方法は、システムのディスクがそのファイルシステムにマウントされているFinnixなどのリカバリ環境にしかアクセスできない状況で必要になることがよくあります。システム自体でこの方法を試す場合は、データベースがないことを確認してください。 ランニング。次のようなコマンドを発行します。

    /etc/init.d/mysqld stop
    

    ほとんどのディストリビューションのバージョンのMySQLでは、データディレクトリは/var/lib/mysql/にあります。 ディレクトリ。このディレクトリが存在しない場合は、/etc/mysql/my.cnfを調べてください。 データディレクトリへのパスのファイル。または、次のコマンドを発行して、ファイルシステムでデータディレクトリを検索することもできます。

    find / -name mysql
    

    MySQLデータディレクトリを見つけたら、それをバックアップ場所にコピーできます。次の例では、MySQLデータディレクトリが/var/lib/mysql/にあると想定しています。 :

    cp -R /var/lib/mysql/* /opt/database/backup-1266871069/
    

    この場合、データディレクトリの内容を再帰的にコピーしました(例:/var/lib/mysql//opt/内のディレクトリに 階層(例:/opt/database/backup-1266871069/ )。このディレクトリは、コピー操作を開始する前に存在している必要があります。次の一連の操作を検討してください。

    /etc/init.d/mysql stop
    mkdir -p /opt/database/backup-1266872202/
    cp -R /var/lib/mysql/* /opt/database/backup-1266872202/
    

    これらのコマンドは、MySQLサーバーデーモンを停止してから、/opt/database/backup-1266872202/という名前のディレクトリを作成することから始まります。 、およびデータディレクトリの再帰コピーを実行します。 backup-[time_t]を使用することを選択したことに注意してください 例の命名規則。上記のパスを、希望する組織と命名スキームに置き換えてください。 cp コマンドは出力を生成せず、データベースのサイズによっては完了するまでに時間がかかる場合があります。完了するまでに時間がかかっても心配しないでください。コピー操作が終了したら、データディレクトリを「tar」アーカイブにアーカイブして、マシン間の管理と移動を容易にすることができます。次のコマンドを発行して、アーカイブを作成します。

    cd /opt/database/backup-1266872202
    tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz
    

    tarballが作成されると、最も便利な方法でファイルを簡単に転送できます。必要に応じて、MySQLサーバーデーモンを再起動することを忘れないでください:

    /etc/init.d/mysql start
    

    単一データベースのバックアップの作成

    多くの場合、データベースサーバー全体のバックアップを作成する必要はありません。 Webアプリケーションのアップグレードなどの場合、アップグレードがデータベースに悪影響を与える場合に備えて、インストーラーはデータベースのバックアップを作成することを推奨する場合があります。同様に、特定のデータベースの「ダンプ」を作成してそのデータベースを別のサーバーに移動する場合は、次の方法を検討してください。

    可能であれば、mysqldumpを使用してください 単一のデータベースの「ダンプ」をエクスポートするためのツール。このコマンドは次のようになります。

    mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql
    

    上記の例は、--all-databasesを使用するのではなく、前のセクションの例と似ています。 オプションの場合、この例では特定のデータベース名を指定します。この場合、danceLeadersのバックアップを作成します データベース。このコマンドの形式は、よりわかりやすい表記で次のとおりです。

    mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql
    

    追加の例として、customerという名前のデータベースをバックアップします。 次のコマンドを発行して、ルートデータベースアカウントを使用します。

    mysqldump -u root -p -h localhost customer > customerBackup.sql
    

    mysqldumpの前にパスワードの入力を求められます バックアッププロセスを開始します。いつものように、バックアップファイル、この場合はcustomerBackup.sql は、このコマンドを発行したディレクトリに作成されます。 mysqldump コマンドは、データベースのサイズとバックアップ実行時のホストの負荷に応じて、数秒または数時間で完了します。

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

    オプション1:mysqldumpユーティリティを使用して単一テーブルのバックアップを作成する

    この操作は、以前のmysqldumpの使用と同様です。 このドキュメントのユーティリティを使用すると、単一のデータベーステーブルのバックアップを作成できます。前の例を続けると、次の例でテーブルusernameRecordsをバックアップできます。 danceLeadersで データベース。

     mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql
    

    上記の例は前のセクションの例と似ていますが、バックアップするテーブルの名前を指定するためのテーブル名の指定をコマンドに追加した点が異なります。よりわかりやすい表記でのこのコマンドの形式は次のとおりです。

    mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql
    

    追加の例として、customerという名前のデータベースから「order」という名前のテーブルをバックアップします。 次のコマンドを発行して、ルートデータベースアカウントを使用します。

    mysqldump -u root -p -h localhost customer order > customerBackup-order.sql
    

    mysqldumpの前にパスワードの入力を求められます バックアッププロセスを開始します。いつものように、バックアップファイル(この場合はcustomerBackup.sql )は、このコマンドを発行したディレクトリに作成されます。 mysqldump コマンドは、データベースのサイズとバックアップ実行時のホストの負荷に応じて、数秒または数時間で完了します。

    オプション2:MySQLクライアントを使用して単一テーブルのバックアップを作成し、 OUTFILEステートメント

    MySQLクライアント自体にはいくつかのバックアップ機能があります。すでにログインしていて、現在のセッションを終了したくない場合に便利です。ライブシステムを使用していて、ダウンタイムを許容できない場合は、バックアップしているテーブルを一時的にロックすることを検討する必要があります。

    MySQLクライアントを使用して単一のテーブルをバックアップする場合、そのテーブルの構造はバックアップで維持されないことに注意してください。この方法を使用すると、データ自体のみが保存されます。

    1. 始める前に、LOCK TABLESを実行することをお勧めします バックアップするテーブルで、FLUSH TABLESが続きます バックアップ操作中にデータベースが一貫したスペースにあることを確認します。必要なのは読み取りロックだけです。これにより、MySQLデータディレクトリ内のファイルのコピーを作成している間、他のクライアントがテーブルのクエリを続行できます。 「読み取り」ロックの場合、LOCK TABLESの構文 次のようになります:

      1
      
      LOCK TABLES tableName READ;

      LOCK TABLESを実行するには order customerのテーブル データベースで、次のコマンドを発行します:

      mysql -u root -p -h localhost
      

      次に、rootパスワードの入力を求められます。データベースのクレデンシャルを入力すると、mysqlクライアントプロンプトが表示されます。次のコマンドを発行して、orderをロックします customerのテーブル データベース(末尾の; MySQLコマンドには必要です):

      1
      2
      3
      
      USE customer;
      LOCK TABLES order READ;
      FLUSH TABLES;
    2. これで、バックアップ操作を開始できます。 MySQLクライアントを使用して単一のテーブルのバックアップを作成するには、MySQLDBMSにログインする必要があります。現在ログインしていない場合は、次のコマンドでログインできます。

      mysql -u root -p -h localhost
      

      パスワードの入力を求められます。正しいパスワードを入力してMySQLクライアントプロンプトが表示されたら、SELECT * INTO OUTFILEを使用できます。 声明。このステートメントの構文は次のようになります。

      1
      
      SELECT * INTO OUTFILE 'file_name' FROM tbl_name;

      この例では、orderからのデータのバックアップを作成します customerのテーブル データベース。次のコマンドを発行して、バックアップ手順を開始します(末尾の; MySQLコマンドには必要です):

      1
      2
      3
      4
      5
      
      USE customer;
      LOCK TABLES order READ;
      FLUSH TABLES;
      SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order;
      UNLOCK TABLES;

      customerOrderBackup.sql ファイルは、MySQLデータディレクトリ内の適切なデータサブディレクトリに作成されます。 MySQLデータディレクトリは通常/var/lib/mysql/です。 。この例では、OUTFILE /var/lib/mysql/customer/customerOrderBackup.sqlになります 。ただし、このディレクトリとファイルの場所は、Linuxディストリビューションによって異なる場合があります。バックアップファイルが見つからない場合は、次のコマンドで検索できます。

      find / -name customerOrderBackup.sql
      
    3. バックアップ操作が完了したら、MySQLクライアントで次のコマンドを使用してテーブルのロックを解除する必要があります。これにより、データベースが通常の操作に戻ります。現在ログインしていない場合は、最初のコマンドでMySQLクライアントにログインしてから、2番目のコマンドを発行します。

      mysql -uroot -p -h localhost
      
      1
      
      UNLOCK TABLES;

    この時点から、通常どおりデータベースを使用できます。

    効果的なバックアップ戦略に関する考慮事項

    MySQLデータベースのバックアップの作成は、定期的かつスケジュールされたタスクである必要があります。 cronを使用して定期的なバックアップをスケジュールすることを検討してください。 、mysqldump および/またはmail 。 cronに関する詳細については、ドキュメントを参照してください。自動バックアップソリューションを実装すると、災害復旧状況でのダウンタイムを最小限に抑えることができます。

    データベースをバックアップするときにrootとしてログインする必要はありません。読み取りを行うMySQLユーザー(例:SELECT )権限は両方のmysqldumpを使用できます およびmysql 以下に説明するように、バックアップを取るためのツール(例:MySQLクライアント)。一般的な慣例として、MySQL rootを使用しないことをお勧めします セキュリティリスクを最小限に抑えるために、可能な限りユーザー。

    長期データベースバックアップ計画の一部として、増分バックアップを検討することをお勧めします。このプロセスについてはここでは説明しませんが、詳細については、MySQLデータベースバックアップメソッドのリソースを検討することをお勧めします。

    バックアップからDBMS全体を復元する

    復元できないバックアップの価値は最小限です。バックアップからの復元が必要になった場合にバックアップを復元できることを確認するために、バックアップを定期的にテストすることをお勧めします。 MySQLデータベースのバックアップの復元を使用する場合、使用する方法は、問題のバックアップの作成に使用した方法によって異なります。

    オプション1:MySQLクライアントとmysqldumpによって作成されたバックアップを使用したDBMS全体の復元

    復元プロセスを開始する前に、このセクションでは、システムが既存のデータベースやテーブルなしで新しくインストールされたバージョンのMySQLを実行していることを前提としています。 MySQL DBMSにデータベースとテーブルがすでにある場合は、このプロセスが現在のMySQLデータを上書きするため、先に進む前にバックアップを作成してください。

    mysqlを使用すると、DBMS全体を簡単に復元できます。 指図。この構文は次のようになります。

    mysql -u [username] -p [password] < backupFile.sql
    

    この場合、DBMS全体を復元するだけです。コマンドは次のようになります。

    mysql -u root -p < 1266861650-backup-all.sql
    

    ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報が提供されると、復元プロセスが開始されます。このプロセスではDBMS全体が復元されるため、数秒から数時間かかる場合があります。

    オプション2:から直接コピーされたMySQLデータファイルを使用してDBMS全体を復元するMySQLのデータディレクトリ

    復元プロセスを開始する前に、このセクションでは、システムが既存のデータベースやテーブルなしで新しくインストールされたバージョンのMySQLを実行していることを前提としています。 MySQL DBMSにデータベースとテーブルがすでにある場合は、このプロセスが現在のMySQLデータを上書きするため、先に進む前にバックアップを作成してください。

    1. MySQLデータディレクトリ(通常は/var/lib/mysql)の完全バックアップがある場合 )、コマンドラインから復元できます。復元を成功させるには、最初にMySQLサーバーデーモンを停止し、MySQLデータディレクトリ内の現在のデータを削除する必要があります。

      /etc/init.d/mysql stop
      rm -R /var/lib/mysql/*
      
    2. 次の例では、MySQLデータディレクトリのバックアップは/opt/database/backup-1266872202にあります。 ディレクトリ。 DBMSデータディレクトリのバックアップ時にデータディレクトリのtarballを作成した場合は、次のコマンドを使用してコピーする前に、tarballからファイルを抽出する必要があります。

       cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/
       cd /var/lib/mysql
       tar xzvf mysqlBackup-1266872202.tar.gz
      
    3. MySQLデータベースプロセスを再起動する前に、/var/lib/mysql/で権限が正しく設定されていることを確認する必要があります ディレクトリ。この例では、MySQLサーバーデーモンがユーザーmysqlとして実行されていると想定しています。 グループmysqlで 。データディレクトリの権限を変更するには、次のコマンドを発行します。

      chown -R mysql:mysql /var/lib/mysql
      
    4. mysql:mysqlを変更します MySQLインスタンスが異なるユーザーおよびグループの権限で実行されている場合は、このコマンドの一部。この引数の形式は[user]:[group]です。 。最後に、次のコマンドでMySQLサーバーデーモンを起動できます。

      /etc/init.d/mysql start
      

      次のようなエラーが発生した場合:

      /usr/bin/mysqladmin: connect to server at 'localhost' failed
          error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
      

      古いdebian-sys-maintを見つける必要があります /etc/mysql/debian.cnfにあるユーザーのパスワード 次に、新しいdebian-sys-maintを変更します それに対するユーザーのパスワード。 catを使用して古いパスワードを表示できます :

      cat /etc/mysql/debian.cnf | grep password
      

      パスワードをコピー(または覚えて)します。次に、新しいdebian-sys-maintを変更する必要があります ユーザーのパスワード。これを行うには、MySQL rootユーザーとしてログインし、次のコマンドを発行します(ここで、は古いdebian-sys-maintのパスワードです。 ユーザー):

      1
      
      GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
    5. 次に、次のコマンドを使用してMySQLを再起動する必要があります。

      /etc/init.d/mysql restart
      

    MySQLサーバーが正常に起動したら、MySQL DBMSをテストし、すべてのデータベースとテーブルが正しく復元されていることを確認する必要があります。また、潜在的なエラーについてログを監査することをお勧めします。場合によっては、データベースエラーがあってもMySQLが正常に起動することがあります。

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

    1つのデータベースのバックアップのみを作成した場合、または1つのデータベースのみを復元する必要がある場合は、復元プロセスが多少異なります。

    復元プロセスを開始する前に、このセクションでは、システムが既存のデータベースやテーブルなしで新しくインストールされたバージョンのMySQLを実行していることを前提としています。 MySQL DBMSにデータベースとテーブルがすでにある場合は、このプロセスが現在のMySQLデータを上書きするため、先に進む前にバックアップを作成してください。

    1. mysqlを使用して単一のデータベースを復元するには コマンド、最初に宛先データベースを準備します。 MySQLクライアントを使用して(新しい)MySQLデータベースサーバーにログインします:

      mysql -u root -p -h localhost
      
    2. ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報を提供したら、宛先データベースを作成する必要があります。この場合、customer データベースが復元されます:

      1
      
      CREATE DATABASE customer;
    3. すべてのMySQLステートメントと同様に、最後のセミコロンを省略しないでください(例:; )各コマンドの終了時。デプロイメントによっては、新しいMySQLユーザーを作成するか、新しく作成されたデータベースにアクセスできる以前のユーザーを再作成する必要がある場合があります。新しいMySQLユーザーを作成するためのコマンドは、次の形式を取ります。

      1
      
      CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
    4. 次の例では、customeradminという名前のユーザーを作成します :

      1
      
      CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
    5. 次に、customeradminを指定します customerにアクセスするための特権 データベース。特定のユーザーのデータベースに特権を付与するためのコマンドは、次の形式を取ります。

      1
      
      GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
    6. 次の例では、customeradminを指定します。 customerへのフルアクセス データベース。 MySQLクライアントで次のコマンドを発行します。

      1
      
      GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
    7. 展開の要求に応じて、異なるアクセス許可を指定する必要がある場合があります。 MySQLのGRANTステートメントについては、公式ドキュメントを参照してください。宛先データベースとMySQLユーザーが作成されたら、次のコマンドを使用してMySQLクライアントを閉じることができます。

      quit
      
    8. これで、mysqlを使用できます SQLファイルを復元するコマンド。このコマンドの形式は次のようになります。

      mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
      

    次の例では、customerを復元します customerBackup.sqlという名前のSQLバックアップファイルからのデータベース (<に特に注意してください このコマンドの記号):

    mysql -u root -p -h localhost customer < customerBackup.sql
    

    ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報が提供されると、復元プロセスが開始されます。この操作の期間は、システムの負荷と復元するデータベースのサイズによって異なります。数秒で完了する場合もあれば、数時間かかる場合もあります。

    バックアップからの単一テーブルの復元

    オプション1:MySQLとmysqldumpによって作成されたバックアップを使用した単一テーブルの復元

    >
    1. 復元プロセスを開始する前に、MySQLインスタンスには、復元するテーブルを受け取ることができる既存のデータベースがすでに存在していると想定しています。 MySQLインスタンスに必要なデータベースがない場合は、続行する前にデータベースを作成する必要があります。まず、次のコマンドを使用してMySQLインスタンスにログインします。

      mysql -u root -p -h localhost
      
    2. ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報を提供したら、宛先データベースを作成する必要があります。この例では、customerを作成します。 データベース。

      1
      
      CREATE DATABASE customer;

      次に、mysqlを終了します プロンプト:

      quit
      

      必要なデータベースがすでにある場合は、上記の手順を安全にスキップできます。テーブルの復元を続行するには、次の形式でコマンドを発行します。

      mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
      
    3. 次の例では、orderを復元します 既存のcustomerへのテーブル customerOrderBackup.sqlという名前のSQLバックアップファイルからのデータベース 。 <の使用には十分注意してください 次のコマンドの演算子:

      mysql -u root -p -h localhost customer < customerOrderBackup.sql
      

    ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報が提供されると、復元プロセスが開始されます。この操作の期間は、システムの負荷と復元するテーブルのサイズによって異なります。数秒で完了する場合もあれば、数時間かかる場合もあります。

    オプション2:を使用した単一テーブルの復元MySQLクライアントとOUTFILEで作成されたバックアップのINFILEステートメント

    1. 復元プロセスを開始する前に、MySQLインスタンスには、復元するテーブルを受け取ることができる既存のデータベースがすでに存在していると想定しています。 MySQLインスタンスに必要なデータベースがない場合は、続行する前にデータベースを作成する必要があります。まず、次のコマンドを使用してMySQLインスタンスにログインします。

      mysql -u root -p -h localhost
      
    2. ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報を提供したら、宛先データベースを作成する必要があります。この例では、customerを作成します。 データベース。

      1
      
      CREATE DATABASE customer;

      次に、mysqlを終了します プロンプト:

      quit
      
    3. この場合に使用されるデータバックアップは、SELECT * INTO OUTFILE 'backupFile.sql' FROM tableNameを使用して作成されました。 指図。このタイプのバックアップはデータ自体のみを保持するため、テーブル構造を再作成する必要があります。 MySQLクライアント内から単一のテーブルを復元するには、最初に宛先データベースとテーブルを準備する必要があります。 MySQLクライアントを使用して(新しい)MySQLインスタンスにログインします:

      mysql -u root -p -h localhost
      
    4. ルートMySQLユーザーのパスワードの入力を求められます。正しい資格情報が提供されたら、宛先データベースを作成する必要があります。この場合、customerを作成します データベース。次のステートメントを発行します:

      1
      
      CREATE DATABASE customer;
    5. セミコロン(例:;)を覚えておいてください )各ステートメントの後には必須です。次に、正しい構造で宛先テーブルを作成する必要があります。テーブルのフィールドのデータ型は、バックアップが作成されたテーブルのデータ型を反映している必要があります。この例では、orderを復元します customerのテーブル データベース。 orderには2つのフィールドがあります テーブル、custNum データ型INT およびorderName データ型VARCHAR(20);テーブルの構造は異なります:

      1
      2
      
      USE customer;
      CREATE TABLE order (custNum INT, orderName VARCHAR(20));
    6. デプロイメントによっては、新しいMySQLユーザーを作成するか、新しく作成されたデータベースにアクセスできる以前のユーザーを再作成する必要がある場合があります。新しいMySQLユーザーを作成するためのコマンドは、次の形式を取ります。

      1
      
      CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
    7. 次の例では、customeradminという名前のユーザーを作成します :

      1
      
      CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
    8. 次に、customeradminを指定します customerにアクセスするための特権 データベース。特定のユーザーのデータベースに特権を付与するためのコマンドは、次の形式を取ります。

      1
      
      GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'

      次の例では、customeradminを指定します。 customerへのフルアクセス データベース。 MySQLクライアントで次のコマンドを発行します。

      1
      
      GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
    9. 展開の要求に応じて、異なるアクセス許可を指定する必要がある場合があります。 MySQLのGRANTステートメントについては、公式ドキュメントを参照してください。テーブルとユーザーが作成されたら、LOAD DATAを使用してバックアップファイルからバックアップデータをインポートできます。 指図。構文は次のようになります。

      1
      
      LOAD DATA INFILE '[filename]' INTO TABLE [tableName];

      次の例では、customerOrderBackup.sqlという名前のファイルからテーブルからデータを復元します。 。 MySQLクライアントにINFILEの後にパスとファイル名が指定されている場合 、MySQLデータディレクトリでそのファイルを探します。ファイル名がcustomerOrderBackup.sqlの場合 指定された場合、パスは/var/lib/mysql/customerOrderBackup.sqlになります。 。特にMySQLがFile not foundを生成する場合は、復元しようとしているファイルが存在することを確認してください。 エラー。

    10. customerOrderBackup.sqlからデータをインポートするには /var/lib/mysql/にあるファイル , issue the following command:

      1
      
      LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;

      This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:

      quit
      

    詳細情報

    このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。

    • The Official MySQL Web Site
    • MySQL Database Backup Methods page
    • mysqldump Manual Page
    • Schedule Tasks With Cron
    • MySQL’s Grant Statement, Official Documentation

    1. Oracleストアドプロシージャ内でのテキストの検索

    2. SQLiteUNIQUE制約

    3. MySQLでのPOSITION()関数のしくみ

    4. MySQLに行が存在するかどうかを確認するにはどうすればよいですか? (つまり、メールがMySQLに存在するかどうかを確認します)