大型商店启用 WooCommerce HPOS 的指南
您是否运行一个高流量的 WooCommerce 商店?您是否即将开始在您的商店上启用高性能订单存储 (HPOS)? 随着越来越多的高流量商店迁移到 HPOS,我们决定记录一些指南,以帮助那些可能面临这项任务的用户。
开始之前
第一阶段:在本地开发系统中测试 HPOS
如果您为您的网站设置了本地开发环境,您可以在您的开发环境中尝试 HPOS。 确保您已在测试站点上启用所有插件以及任何自定义代码,并且正在运行其最新版本。 测试环境应尽可能地模拟您的生产环境。
至少,我们建议您关注以下测试:
- 测试每种支付方式的结账功能。
- 测试这些结账的退款流程。
- 如果您正在使用 WooCommerce 订阅,请检查订阅是否可以购买以及续订是否可以正常进行。
- 您为您的网站定义的任何关键流程。
您可以重复这些测试,分别在启用和禁用同步的情况下进行。
请记住,您可以 切换同步,方法是转到 WooCommerce > 设置 > 高级 > 功能,并切换 "启用兼容性模式" 复选框。

审查:第一阶段检查清单
- 确保您的测试站点的代码是最新的,通过安装所有 WooCommerce 相关插件的最新版本。
- 测试每种支付方式的结账功能。
- 验证测试结账的退款流程。
- 如果安装了 WooCommerce 订阅,请测试订阅的购买和续订。
- 在启用和禁用同步的情况下,测试关键的网站流程。
第二阶段:在测试环境中进行迁移和测试
当您对本地环境中的运行情况感到满意时,是时候将生产数据库复制到测试环境,并测试 HPOS 迁移。对于大型网站,我们建议启用同步,但不要依赖计划任务来执行迁移,您可以使用命令行界面 (CLI) 来加快速度:具体来说,是 wp wc hpos sync 命令。
为了了解最终迁移(在生产环境)所需的时间,请务必记录此命令的运行时间。例如,对于我们的测试商店,该商店有 900 万个订单,完成迁移大约需要一周的时间。
为了获得额外的安心,您可以运行 wp wc hpos verify_cot_data --verbose 命令来检查数据是否已成功迁移。
在测试环境中完成迁移后,并且仍然启用同步,请重新运行第一阶段中定义的测试。禁用同步,并再次进行所有测试。
测试第三方和外部系统
您可能有一些非 PHP 系统直接连接到数据库,这些系统可能不会被常规代码审计所发现。请验证您是否有诸如数据仓库、配送跟踪系统、会计系统等系统,确保它们没有直接读取文章表。如果它们正在读取,则需要在继续执行下一步之前对其进行更新。
审查:第二阶段检查清单
- 确保您的测试环境中的代码是最新的,通过安装所有正在使用的 WooCommerce 相关插件的最新版本。
- 使用 CLI 将生产数据库迁移到测试环境。
- 监控迁移时间,以了解生产环境迁移的持续时间。
- 在启用同步的情况下,在测试环境中测试第一阶段的流程。
- 可选:使用
wp wc hpos verify_cot_data --verbose命令验证数据迁移的完整性。 - 在禁用同步的情况下,在测试环境中测试第一阶段的流程。
- 审计第三方系统,以确保它们没有直接访问文章表。
第三阶段:在生产环境中启用 HPOS
如果您对在本地环境和测试环境中的测试结果感到满意,现在是时候开始在生产环境中启用 HPOS 了。
启用同步,保持 WordPress 文章作为订单存储
就像在之前的阶段一样,您应该在启用同步的同时,继续使用 WordPress 文章作为订单存储。通常,您可以通过转到 WooCommerce > 设置 > 高级 > 功能,并确保选择 使用 WordPress 文章表作为订单数据存储 来执行此操作。
这将确保订单开始出现在 HPOS 表格中,并且现有的订单将保持最新状态。
迁移和验证数据
现在,开始迁移过程,通过启用“启用兼容模式”复选框来启动同步。
在启用同步后,您可以使用 wp wc hpos sync 命令,通过命令行界面 (CLI) 将过去的订单从文章表迁移到新的 HPOS 表。
如果出现任何错误,停止同步或中断 CLI 任务是安全的。 您可以在解决错误后(或如果错误与同步过程无关时)重新开始。
可选地,您还可以运行验证命令 (wp wc hpos verify_cot_data --verbose) 以检查迁移的数据是否符合预期。
重要:即使 CLI 任务已完成,也不要立即关闭同步。 对于生产环境,我们建议逐步禁用同步:首先禁用读取时的同步,然后完全禁用同步。
此外,在我们最近的大批量商店迁移过程中,即使保持同步启用状态(并且文章具有权威性),我们也未观察到明显的负面性能影响。
切换到 HPOS 作为权威数据源
现在是切换到 HPOS 的时候了。 转到 WooCommerce > 设置 > 高级 > 功能,并将 HPOS 设置为权威数据源(选择“使用 WooCommerce 订单表”)。
如上所述,请勿立即关闭同步。 如果出现任何问题,系统可以立即恢复到文章表,从而不会造成停机。
重新检查您在先前阶段中的所有关键流程,并进行一些测试。 确保测试使用各种付款方式的结账流程以及您的关键流程。 在高流量的商店,您应该会自然地收到一些订单,请打开其中的一些订单并验证所有订单数据是否已按预期填充。 此外,请关注您的支持或联系渠道。
提示: 如果您的商店有自然低流量时期,我们建议您在此期间进行切换,但您应该计划在切换后保持在线一段时间。 切换到 HPOS 或在需要时恢复到文章表都是热迁移,不需要任何计划的停机时间。
禁用读取时的同步
在前面的步骤中,您已启用具有同步功能的 HPOS,现在是时候逐步禁用同步,以便开始享受 HPOS 的大部分优势。 此过程的第一步是禁用读取时的同步,您可以通过以下代码片段来完成:
add_filter( 'woocommerce_hpos_enable_sync_on_read', '__return_false' );
我们首先禁用读取时的同步,因为它需要更多的资源。 如果您的网站运行状况良好,并且您看到一些订单正在进来,您可以禁用读取时的同步。 在我们的大批量商店迁移中,我们仅在设置 HPOS 为权威数据源后 6 小时就禁用了读取时的同步。
关闭写入时的同步
如果一切运行如预期,您可以禁用写入时的同步。 既然读取时的同步已经禁用,您可以从 设置 中完全禁用同步。 像往常一样,转到 WooCommerce > 设置 > 高级 > 功能,取消选中 "启用兼容模式"。
在我们的高流量网站上,我们在一周后完全禁用了同步。 我们仍然定期手动同步(通过 wp wc hpos sync 命令),以便在出现任何问题时,我们可以立即回退到文章数据存储。
请记住,禁用同步不会移除回退到文章数据存储的能力,但您需要等待迁移作业将文章表中的任何缺失数据填充到 HPOS 表中。 始终可以使用 wp wc hpos sync 命令来实现此目的。
现在,在完全禁用同步后,请测试各种关键流程,检查订单是否以预期的自然方式流入,并密切关注您的支持和联系渠道。
审查:第三阶段检查清单
- 计划在线并监控您的实时网站一段时间。
- 启用与文章设置为权威的数据同步:在 WooCommerce > 设置 > 高级 > 功能 中,选择 "使用 WordPress 文章表"。
- 使用
wp wc hpos sync命令启动迁移。 - 监控迁移过程中的错误;根据需要停止或恢复。
- 使用验证命令
wp wc hpos verify_cot_data验证迁移数据的完整性。 - 启用与 HPOS 设置为权威的数据同步:在 WooCommerce > 设置 > 高级 > 功能 中,选择 "使用 WooCommerce 订单表"。
- 测试所有关键流程,使用多种 付款方式 进行 结账,并验证订单数据的准确性。
- 监控 支持 渠道,查看是否有任何问题。
- 使用提供的代码片段禁用读取时的同步:
add_filter( 'woocommerce_hpos_enable_sync_on_read', '__return_false' ); - 监控网站性能。
- 在稳定运行一周后,完全禁用同步。
- 持续监控网站性能、订单处理和 支持 渠道。
一般指南
- 尽可能使测试环境与生产环境相似。
- 记录在测试和迁移过程中遇到的任何问题。
- 定期与利益相关者沟通测试进度和结果。
- 计划潜在的回退场景,确保在出现问题时能够回退到文章。