データベースを定期的にバックアップすることは、プロジェクトを稼働させた後の重要なステップの1つです。バックアップの頻度は、1日または1週間に1回です。データベースの変更が頻繁に行われるアプリケーションでは、毎日のバックアップが推奨されます。高可用性データベースの場合、垂直スケーリングではなく、適切なクラスター設定を検討する必要があります。このチュートリアルでは、
メモ :このチュートリアルでは、
ローカルバックアップ
バックアップ -このセクションでは、単一または複数のデータベースをエクスポートして、ファイルにローカルバックアップを作成する方法について説明します。
許可 -
- SELECT-テーブルをダンプする
- SHOWVIEW-ビューをダンプする
- TRIGGER-トリガーをダンプする
- LOCKTABLES---single-transactionオプションが使用されていない場合
コマンド -以下は、
# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>
通常のコマンドを使用する例は次のとおりです。これらのサンプルコマンドは、ユーザーエンタープライズを使用しています データベースのバックアップを取るエンタープライズ 。ユーザーアカウントがauth_socketを使用している場合は、ユーザーとパスワードを指定する必要はありません。 MySQLサーバーにログインするためのアルゴリズム。システムユーザーはデータベースに直接アクセスできます。パスワードアルゴリズムの詳細については、MySQL5.7でネイティブパスワードを使用する方法とUbuntuにMySQL8をインストールする方法を参照してください。
メモ :ユーザーにパスワードが割り当てられていない場合は、オプション-pを使用する必要はありません。
以下に、ユーザー名、ホスト、およびポートを使用して単一のデータベースをバックアップする例を示します。パスワードは提供しないでください セキュリティの目的でこれらのコマンドを使用します。
# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql
# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql
# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql
# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql
# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql
# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql
以下に、ユーザー名、ホスト、およびポートを使用して複数のデータベースをバックアップする例を示します。
# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql
# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql
以下は、ユーザー名、ホスト、およびポートを使用してすべてのデータベースをバックアップする例です。
# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql
# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql
WindowsのPowerShellユーザーは、以下に説明するように別のコマンドが必要になります。
# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>
# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql
上記のコマンドは、選択したデータベースとテーブルをコマンドで指定されたファイルの場所にエクスポートします。
データベースのバックアップ
このセクションでは、シェルパイプを使用してバックアップ目的で使用される別のデータベースにデータベースバックアップを作成する方法について説明します。データベースをローカルファイルにエクスポートしてから、このファイルを使用して別のデータベースにインポートするか、シェルパイプを使用して別のデータベースに直接エクスポートすることができます。
以下のコマンドを使用して、データベースを別のデータベースに直接エクスポートできます。また、コマンドを実行する前に、両方のサーバーにアクセスできることを確認してください。
# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup
# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise
これが、データベースをエクスポートまたはバックアップする方法です。