撇号 CMS 数据库迁移



将 db 从 dev 部署到 prod 的正确方法是什么,并在 prod 中进行一些更改后将其拉回?现在我只是将 mongo 转储保留在存储库中,但我认为应该有一个更正确的方法。

复制数据库不是官方的内置功能,但我理解您所说的工作流程。在将网站移交给客户或向公众开放时,您通常需要将现有数据库推送到生产服务器。稍后,您经常希望将其复制到开发计算机上。

这里有sync-upsync-down脚本:

https://github.com/apostrophecms/apostrophe-boilerplate/tree/master/scripts

这些脚本假设您正在使用我们的 Stagecoach 部署系统,并且 mongodb 直接在生产服务器上运行,并且无需密码即可接受来自自身(来自本地主机(的连接。这些假设可能不适合您,因此您可能需要根据需要调整这些脚本。

正如您将在这些简短脚本中看到的那样,基本答案是(对于这个故事,我使用的是"从生产到开发同步"用例(:

  • 使用mongodump在远程生产服务器上创建数据库的可移植副本。 将其同步并使用mongorestore还原它。

    ssh $remoteSSH mongodump -d $dbName -o /tmp/mongodump.$dbName &&

    rsync -av $rsyncDestination:/tmp/mongodump.$dbName/ /tmp/mongodump.$dbName &&

    ssh $remoteSSH rm -rf /tmp/mongodump.$dbName &&

    mongorestore --noIndexRestore --drop -d $dbName /tmp/mongodump.$dbName/$dbName

    • 使用rsync也可以向下复制public/uploads

    rsync -av --delete $rsyncDestination:/opt/stagecoach/apps/$projectName/uploads/ ./public/uploads

请参阅脚本,了解如何初始化变量。

如果您在 S3 中托管生产内容,则可以使用 AWS CLI,尤其是aws s3 sync命令。

希望这是有帮助的!

最新更新