备份和回滚文件系统、介质和数据库

使用此命令可以备份:

  • 文件系统(不包括varpub/static目录)
  • pub/media目录
  • 数据库

备份存储在var/backups目录中,可以使用magento setup:rollback命令随时还原。

备份后,您可以回滚

TIP
有关云基础架构项目上的Adobe Commerce,请参阅​_云指南_​中的快照和备份管理

启用备份

默认情况下,备份功能处于禁用状态。 要启用,请输入以下CLI命令:

bin/magento config:set system/backup/functionality_enabled 1
WARNING
弃用通知:
备份功能自2.1.16、2.2.7和2.3.0起已弃用。我们建议研究其他备份技术和二进制备份工具(如Percona XtraBackup)。

设置打开文件限制

回滚到以前的备份可能会以静默方式失败,导致使用magento setup:rollback命令向文件系统或数据库写入的数据不完整。

有时,较长的查询字符串会导致用户分配的内存空间因太多递归调用而耗尽内存。

如何设置打开的文件ulimit

我们建议将文件系统用户的打开文件ulimit的值设置为65536或更多。

您可以在命令行上执行此操作,也可以通过编辑用户的shell脚本将其设置为用户的永久设置。

在继续之前,如果您尚未这样做,请切换到文件系统所有者

命令:

ulimit -s 65536

如果需要,可将其更改为更大的值。

NOTE
打开的文件ulimit的语法取决于您使用的UNIX shell。 前面的设置应适用于CentOS和Ubuntu以及Bash shell。 但是,对于macOS,正确的设置是ulimit -S 65532。 有关更多信息,请参阅手册页或操作系统参考。

要在用户的Bash shell中可选地设置值,请执行以下操作:

  1. 如果您尚未这样做,请切换到文件系统所有者

  2. 在文本编辑器中打开/home/<username>/.bashrc

  3. 添加以下行:

    code language-bash
    ulimit -s 65536
    
  4. 将更改保存到.bashrc并退出文本编辑器。

WARNING
我们建议您避免在php.ini文件中设置pcre.recursion_limit的值,因为它可能会导致不完整的回滚,并且不会出现失败通知。

备份

命令用法:

bin/magento setup:backup [--code] [--media] [--db]

该命令执行以下任务:

  1. 将商店置于维护模式。

  2. 执行以下命令选项之一。

    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
  3. 使存储退出维护模式。

例如,要备份文件系统和数据库,

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

回滚

本节将讨论如何回滚到您之前创建的备份。 您必须知道要还原的备份文件的文件名。

要查找备份的名称,请输入:

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
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995