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
に追加できます データベースのバックアップを定期的にスケジュールします。
-
バックアップを実行するMySQLrootユーザーのログイン資格情報を保持するファイルを作成します。このファイルが保存されているホームディレクトリのシステムユーザーは、MySQLユーザーとは無関係である可能性があることに注意してください。
- ファイル:/ home / example_user / .mylogin.cnf
-
クレデンシャルファイルの権限を制限します:
chmod 600 /home/example_user/.mylogin.cnf
-
cronジョブファイルを作成します。以下は、データベース管理システム全体を毎日午前1時にバックアップするcronジョブの例です。
- ファイル:/ etc / cron.daily / mysqldump
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リファレンスマニュアル