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

mysqldumpを使用してMySQLまたはMariaDBをバックアップします

    MySQLとMariaDBには、データベースまたはデータベースのシステムのバックアップを作成するプロセスを簡素化するmysqldumpユーティリティが含まれています。 mysqldumpの使用 論理バックアップを作成します 。 このツールは、データベースプロセスにアクセスして実行している場合にのみ使用できます。

    何らかの理由でデータベースにアクセスできない場合は、代わりに物理バックアップを作成できます。 、これはデータを含むファイルシステム構造のコピーです。

    このガイドの手順は、MySQLとMariaDBの両方に適用されます。簡単にするために、MySQLという名前を使用してどちらにも適用します。

    始める前に

    • バックアップを実行するには、MySQLまたはMariaDBのインストールが機能し、データベースユーザーが必要です。インストールのヘルプについては、LinodeMySQLのドキュメントを参照してください。

    • システムへのルートアクセス、または sudoのユーザーアカウントが必要になります 特権。

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

    mysqldump コマンドの一般的な構文は次のとおりです。

    mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
    
    • mysqldump バックアッププロセスを開始する前に、パスワードの入力を求められます。
    • データベースのサイズによっては、完了するまでに時間がかかる場合があります。
    • データベースのバックアップは、コマンドが実行されるディレクトリに作成されます。
    • -$(date +%F) ファイル名にタイムスタンプを追加します。

    ユースケースの例は次のとおりです。

    • データベース管理システム(DBMS)全体のバックアップを作成します。

        mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
      
    • 特定のデータベースをバックアップします。 db1を置き換えます バックアップするデータベースの名前:

        mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
      
    • 任意のデータベースから単一のテーブルをバックアップします。以下の例では、 table1 データベースからエクスポートされますdb1

        mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
      

    mysqldumpの内訳は次のとおりです 上記で使用したコマンドオプション:

    • -単一トランザクション :サーバーからデータをダンプする前に、BEGINSQLステートメントを発行します。
    • -クイック :行ごとにテーブルのダンプを強制します。これにより、RAMが少ないシステムや、テーブルをメモリに保存する際に問題が発生する可能性のある大規模なデータベースの安全性が向上します。
    • -lock-tables =false :バックアップセッションのためにテーブルをロックしないでください。

    cronでバックアップを自動化

    エントリは/etc / crontabに追加できます データベースのバックアップを定期的にスケジュールします。

    1. バックアップを実行するMySQLrootユーザーのログイン資格情報を保持するファイルを作成します。このファイルが保存されているホームディレクトリのシステムユーザーは、MySQLユーザーとは無関係である可能性があることに注意してください。

      ファイル:/ home / example_user / .mylogin.cnf
      1
      2
      3
      
      [client]
      user = root
      password = MySQL root user's password
    2. クレデンシャルファイルの権限を制限します:

      chmod 600 /home/example_user/.mylogin.cnf
      
    3. cronジョブファイルを作成します。以下は、データベース管理システム全体を毎日午前1時にバックアップするcronジョブの例です。

      ファイル:/ etc / cron.daily / mysqldump
      1
      
      0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql

      cronの詳細については、cron(8)およびcron(5)のマニュアルページを参照してください。

    バックアップを復元する

    復元コマンドの一般的な構文は次のとおりです。

    mysql -u [username] -p [databaseName] < [filename].sql
    
    • DBMSバックアップ全体を復元します。 MySQLrootユーザーのパスワードの入力を求められます。
      これにより、MySQLデータベースシステム内の現在のすべてのデータが上書きされます

        mysql -u root -p < full-backup.sql
      
    • 単一のデータベースダンプを復元します。データをインポートするには、空または古い宛先データベースがすでに存在している必要があります。また、コマンドを実行しているMySQLユーザーは、そのデータベースへの書き込みアクセス権を持っている必要があります。

        mysql -u [username] -p db1 < db1-backup.sql
      
    • 単一のテーブルを復元します。データを受信する準備ができている宛先データベースが必要です。

        mysql -u dbadmin -p db1 < db1-table1.sql
      

    詳細情報

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

    • MySQLデータベースのバックアップ方法ページ
    • mysqldump-データベースバックアッププログラム、MySQLリファレンスマニュアル

    1. java.sql.SQLException:I / Oエラー:Linuxサーバーで接続がリセットされました

    2. 複数の列の間にセットのような一意性を適用するにはどうすればよいですか?

    3. RStudioをSQLServerに接続する

    4. SQLで大量のデータを効率的に挿入