ファイル・システム、メディア、データベースのバックアップとロールバック
このコマンドを使用すると、次の項目をバックアップできます。
- ファイルシステム(
var
ディレクトリとpub/static
ディレクトリを除く) pub/media
ディレクトリ- データベース
バックアップは var/backups
ディレクトリに保存され、magento setup:rollback
コマンドを使用していつでも復元できます。
バックアップ後、後で ロールバックできます。
バックアップを有効にする
バックアップ機能はデフォルトで無効になっています。 有効にするには、次の CLI コマンドを入力します。
bin/magento config:set system/backup/functionality_enabled 1
バックアップ機能は、2.1.16、2.2.7、2.3.0 で非推奨(廃止予定)となりました。追加のバックアップテクノロジーとバイナリバックアップツール(Percona XtraBackup など)を調査することをお勧めします。
開いているファイルの上限を設定
以前のバックアップへのロールバックはサイレントに失敗する場合があり、magento setup:rollback
コマンドを使用して不完全なデータがファイルシステムまたはデータベースに書き込まれる結果となります。
クエリ文字列が長いと、再帰呼び出しが多すぎることが原因で、ユーザーに割り当てられたメモリ領域がメモリ不足になることがあります。
開いているファイルの ulimit
定方法
ファイルシステムユーザーに対して開いているファイル ulimit
を 65536
以上の値に設定することをお勧めします。
これをコマンドラインで実行するか、シェルスクリプトを編集してユーザーに恒久的な設定を与えることができます。
続行する前に、まだ実行していない場合は、 ファイルシステムの所有者に切り替えます。
コマンド:
ulimit -s 65536
必要に応じて、これを大きい値に変更できます。
ulimit
の構文は、使用する UNIX シェルによって異なります。 上記の設定は、Bash シェルを使用している CentOS および Ubuntu で動作する必要があります。 ただし、macOSの場合、正しい設定は ulimit -S 65532
です。 詳細については、マニュアルページまたは OS のリファレンスを参照してください。ユーザーの Bash シェルにオプションで値を設定するには:
-
まだ切り替えていない場合は、 ファイルシステムの所有者に切り替えます。
-
/home/<username>/.bashrc
をテキストエディターで開きます。 -
次の行を追加します。
code language-bash ulimit -s 65536
-
.bashrc
への変更を保存し、テキストエディターを終了します。
php.ini
ファイルで pcre.recursion_limit
の値を設定することは避けることをお勧めします。設定すると、エラー通知のない不完全なロールバックが生じる可能性があるからです。バックアップ中
コマンドの使用法:
bin/magento setup:backup [--code] [--media] [--db]
コマンドは、次のタスクを実行します。
-
ストアをメンテナンスモードにします。
-
次のいずれかのコマンド オプションを実行します。
table 0-row-3 1-row-3 2-row-3 3-row-3 オプション 意味 バックアップ ファイルの名前と場所 --code
ファイルシステムをバックアップします(var ディレクトリと pub/static ディレクトリを除く)。 var/backups/<timestamp>/_filesystem.tgz
--media
pub/media ディレクトリをバックアップします。 var/backups/<timestamp>/_filesystem_media.tgz
--db
データベースをバックアップします。 var/backups/<timestamp>/_db.sql
-
ストアをメンテナンスモードから削除します。
例えば、ファイルシステムとデータベースをバックアップするには、次のように指定します。
bin/magento setup:backup --code --db
次のようなメッセージが表示されます。
Enabling maintenance mode
Code backup is starting...
Code backup filename: 1434133011_filesystem.tgz (The archive can be uncompressed with 7-Zip on Windows systems)
Code backup path: /var/www/html/magento2/var/backups/1434133011_filesystem.tgz
[SUCCESS]: Code backup completed successfully.
DB backup is starting...
DB backup filename: 1434133011_db.sql
DB backup path: /var/www/html/magento2/var/backups/1434133011_db.sql
[SUCCESS]: DB backup completed successfully.
Disabling maintenance mode
Rollback
このセクションでは、以前に作成したバックアップにロールバックする方法について説明します。 復元するバックアップファイルのファイル名を知っている必要があります。
バックアップの名前を検索するには、次のように入力します。
bin/magento info:backups:list
バックアップ ファイル名の最初の文字列はタイムスタンプです。
以前のバックアップにロールバックするには、次のように入力します。
bin/magento setup:rollback [-c|--code-file="<name>"] [-m|--media-file="<name>"] [-d|--db-file="<name>"]
たとえば、1440611839_filesystem_media.tgz
という名前のメディア バックアップを復元するには、次のように入力します
bin/magento setup:rollback -m 1440611839_filesystem_media.tgz
次のようなメッセージが表示されます。
[SUCCESS]: Media rollback completed successfully.
Please set file permission of bin/magento to executable
Disabling maintenance mode