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

MySQLデータベースのバックアップと復元(エクスポートとインポート)の方法チュートリアル

    phpMyAdminを使用すると、MySQLまたはMariaDBデータベースを簡単にエクスポートまたはバックアップできます。ただし、データベースのサイズが非常に大きい場合は、おそらくお勧めできません。 phpMyAdminを使用すると、ユーザーはデータベースダンプをファイルとして保存したり、画面に表示したりできます。これには、サーバーからSQLステートメントをエクスポートし、低速のネットワーク接続またはインターネットを介してユーザーのコンピューターにデータを送信することが含まれます。このプロセスにより、エクスポートプロセスが遅くなり、データベースのロック時間が長くなり、MySQLまたはMariaDBが使用できなくなり、サーバーが遅くなり、システムのリソースを占有する着信Web接続が多すぎると、ApacheHTTPDサーバーがクラッシュする可能性があります。

    MySQLまたはMariaDBデータベースをバックアップおよびエクスポートするためのより良い方法は、サーバー上でローカルにタスクを実行することです。これにより、テーブルのデータを遅滞なくローカルディスクに即座にダンプできます。したがって、エクスポート速度が速くなり、MySQLまたはMariaDBデータベースまたはテーブルがアクセスのためにロックされる時間が短縮されます。このチュートリアルは、 mysqldump を使用して、データベースサーバー自体でMySQLまたはMariaDBデータベースをバックアップ(エクスポート)および復元(インポート)する方法に関するガイドです。 およびmysql ユーティリティ。 MySQLまたはMariaDBをバックアップするには、基本的に2つの方法があります。1つはすべてのテーブルファイル(* .frm、*。MYD、および* .MYIファイル)をコピーする方法、または mysqlhotcopyを使用する方法です。 ユーティリティですが、MyISAMテーブルでのみ機能します。以下のチュートリアルでは、MyISAMテーブルとInnoDBテーブルの両方で機能するmysqldumpに焦点を当てます。

    MySQLまたはMariaDBデータベースをエクスポートまたはバックアップまたはダンプする方法

    MySQLまたはMariaDBデータベースをダンプファイルにエクスポートするには、シェルで次のコマンド構文を入力するだけです。物理ボックスにアクセスできない場合は、TelnetまたはSSHを使用してマシンにリモートログインできます。

    mysqldump -u username -ppassword database_name > dump.sql

    ユーザー名を置き換えます 有効なMySQLまたはMariaDBユーザーID、パスワード ユーザーの有効なパスワード(重要:-pとパスワードの後に​​スペースを入れないでください。そうしないと、mysqldumpはパスワードの入力を求めますが、パスワードはデータベース名として扱われるため、バックアップは失敗します)および database_name エクスポートするデータベースの実際の名前を使用します。最後に、出力SQLダンプファイルに任意の名前を付けることができます。ここでは dump.sql

    database_name のデータ、テーブル、構造、データベース全体 dump.sqlという名前のSQLテキストファイルにバックアップされます 上記のコマンドで。

    MySQLまたはMariaDBデータベース構造のみをエクスポートする方法

    データベースのテーブル内のデータが不要になった場合(可能性は低いですが)、 –no-dataを追加するだけです。 テーブルの構造のみをエクスポートするように切り替えます。たとえば、構文は次のとおりです。

    mysqldump -u username -ppassword --no-data database_name > dump.sql

    MySQLまたはMariaDBデータベースのデータのみをバックアップする方法

    データのみをバックアップする場合は、 –no-create-infoを使用します オプション。この設定では、ダンプはインポート時にデータベース、テーブル、フィールド、およびその他の構造を再作成しません。これは、データを更新するだけでよい、同じ構造の重複データベースがあることが確実な場合にのみ使用してください。

    mysqldump -u username -ppassword --no-create-info database_name > dump.sql

    複数のMySQLまたはMariaDBデータベースをテキストファイルにダンプする方法

    –データベース オプションを使用すると、複数のデータベースを指定できます。構文例:

    mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

    MySQLまたはMariaDBサーバーですべてのデータベースをダンプする方法

    すべてのデータベースをダンプするには、 –all-databasesを使用します オプションであり、データベースの名前を指定する必要はありません。

    mysqldump -u username -ppassword --all-databases > dump.sql

    InnoDBテーブルをオンラインでバックアップする方法

    データベースをバックアップすると、MySQLまたはMariaDBサーバーがアプリケーションで使用できなくなります。これは、エクスポート時に、ダンプの開始時から終了まで、すべてのテーブルがFLUSH TABLES WITHREADLOCKを使用してグローバル読み取りロックを取得したためです。したがって、READステートメントは続行できますが、MySQLまたはMariaDBがダウンまたはストールしたかのように、テーブルがロックされているため、すべてのINSERT、UPDATE、およびDELETEステートメントをキューに入れる必要があります。 InnoDBを使用している場合は、 –単一トランザクション これは、オンラインバックアップを実行する場合と同様に、このロック時間を最小限に抑えてほとんど存在しないようにする方法です。これは、ロックが取得されるとすぐにバイナリログ座標を読み取ることで機能し、ロックはすぐに解放されます。

    構文:

    mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

    MySQLまたはMariaDBデータベースを復元およびインポートする方法

    [インポート]タブを使用して、phpMyAdminから復元できます。より高速な方法として、ダンプファイルをMySQLまたはMariaDBサーバーにアップロードし、次のコマンドを使用してデータベースをMySQLまたはMariaDBサーバーにインポートし直します。

    mysql -u username -ppassword database_name < dump.sql
    別のサーバー上のMySQLまたはMariaDBサーバーにリモートで接続する場合は、-h server-name-or-IP-addressを追加します。 コマンドに。

    MySQLまたはMariaDBデータベースのインポートとエクスポートは、災害が発生したときにデータを回復するために重要であるだけでなく、Webホスティングプロバイダーを切り替えるときなど、別のサーバーに移行または移動する簡単な方法も提供します。ただし、一般的な問題の1つである文字セットエンコーディングに注意してください。 mysqldumpの新しいリリースでは、何も指定されていない場合、デフォルトの文字セットとしてUTF8が使用されますが、古いバージョン(通常、4.1より古いバージョン)では、デフォルトの文字セットとしてLatin1が使用されます。データベースの文字セットがLatin1であり、UTF8照合でダンプする場合、データは単にごみ、文字化け、または読み取り不能になる可能性があります(WordPressブログで頻繁に発生します)。この場合、 –default-character-set =charset_nameを使用します 文字セットを指定するか、データベースをUTF8に変換するオプション。


    1. SQL Serverでselectクエリを使用してテーブルを作成するにはどうすればよいですか?

    2. ストアドプロシージャで返すデータセットのテーブルにどのように名前を付けることができますか?

    3. オブジェクトタイプのネストされたテーブルを使用してOracleテーブルを作成するにはどうすればよいですか?

    4. SQLServerへのデータファイルの一括挿入