数据与备份
有时我们需要在数据库中更改数据模式以便随着 Overleaf 的发展,迁移脚本用于自动执行此过程。它们将已经在 overleaf.com 上运行,后者是世界上最大的 Overleaf 实例,因此大多数情况应该已被遇到过,但我们不对您的数据做任何保证。请确保您创建一个 一致的 数据备份 然后 以升级您的实例。
当升级到新的 Docker 镜像时,任何尚未 不要 运行的迁移将被自动执行,这可能会根据数据集的大小花费一些时间,跟随日志可以告诉您进度。更多信息,请参阅我们的 日志记录 文档。
数据存储
Overleaf 社区版和 Server Pro 将它们的数据存储在三个不同的地方:
MongoDB 数据库: 这是用户和项目数据所在的位置。
Redis: 作为高性能的在途数据缓存,主要存储与项目编辑和协作相关的信息。
Overleaf 文件系统: 存储不可编辑的项目文件(包括图像),并且在项目编译期间也充当临时磁盘缓存。
这可能是 ~/sharelatex_data 或 ~/overleaf_data,取决于您的实例何时设置。
对于项目文件和完整项目历史数据,我们也支持兼容 S3 的存储后端。
有关磁盘上文件夹布局的更多信息,请参阅文件夹详细信息。
执行一致性备份
进行一致性备份时需要包含三个存储:
MongoDB
Redis
Overleaf 文件系统数据
为了生成一致性的备份, 强制性的 在备份过程运行期间阻止用户产生新数据是必要的。因此我们建议安排维护窗口,在此期间用户不应能够访问实例或编辑他们的项目。
在您开始备份过程之前,您需要将实例下线。从 Server Pro 开始, 3.5.0 关闭过程会自动化站点的关闭和用户的断开连接。
要关闭您的实例,您需要运行 bin/docker-compose stop sharelatex 如果您运行的是 Toolkit 部署,或 docker compose stop sharelatex 如果您运行的是 Docker Compose。
一旦 sharelatex 容器已停止,您就可以开始备份过程。
一旦备份过程已 成功 完成,您需要启动 sharelatex 容器。为此运行 bin/docker-compose start sharelatex 如果您运行的是 Toolkit 部署,或 docker compose start sharelatex 如果您运行的是 Docker Compose。
备份应存储在与运行 Overleaf 实例的服务器不同的服务器上,理想情况下应位于完全不同的位置。
将数据库复制到多个 MongoDB 实例可能提供一些冗余,但这并不能防止数据损坏。
测试您的备份是确保其完整且可用的最佳方式。
MongoDB
MongoDB 附带一个命令行工具,名为 mongodump 可用于创建存储在数据库中的用户和项目数据的备份。
Overleaf 文件系统数据
对于 Toolkit 部署,存放不可编辑文件的路径在 config/overleaf.rc 使用 OVERLEAF_DATA_PATH 环境变量中指定,但取决于您的实例创建时间,这可能是 data/sharelatex.
使用诸如 rsync 之类的工具递归复制该目录是确保创建完整备份所必需的。
Redis
Redis 存储用户会话和在刷新到 MongoDB 之前的待处理文档更新。
追加仅文件(AOF)持久化是 Redis 持久化的推荐配置。
Toolkit 用户默认为 新的 安装启用了 AOF 持久化,现有用户可以找到有关启用 AOF 的更多信息 这里.
如果您决定继续同时使用 RDB 快照和 AOF 持久化,您可以将 RDB 文件复制到安全位置作为备份。
在服务器之间迁移数据
最好新实例中尚无任何有价值的数据。我们没有合并实例数据的流程。
假设新实例尚无数据,您可以按照以下步骤操作。高层次上,我们制作一个 mongo, redis 和 overleaf 卷的 tar 包,将其复制到新服务器,然后在那里解压。
Toolkit
Docker Compose
根据您的 docker-compose.yml 文件,您可能需要调整 mongo, redis, overleaf 卷的路径。
以 root 用户(或使用 sudo)运行时,tar 会保留文件的所有者/组和权限,这在恢复备份时至关重要。
文件夹详细信息
以下文件夹有额外提示:
(b)包括在备份中,最好在实例停止时以确保一致性
(d)可以删除
(e)临时文件,实例停止时可以删除
~/mongo_data(b)mongodb 数据目录
~/redis_data(b)redis 数据目录
~/overleaf_databin
synctex(d)
在最新版本中未使用,先前使用了自定义 synctex 二进制(synctex 用于 .tex 文件与 pdf 之间的源映射)
data
cache(e)
编译的二进制文件缓存
compiles(e)
LaTeX 在此处进行编译
db.sqlite(d)
在最新版本中未使用,先前存储 clsi 缓存细节(要么已移到简单的内存映射,要么我们扫描磁盘)
db.sqlite-wal(d)
在最新版本中未使用,参见 db.sqlite
output(e)
用于向客户端提供的 LaTeX 编译输出存储
template_files(b)
模板系统的图像预览(仅 Server Pro)
user_files(b)
项目的二进制文件
history(b)
完整项目历史文件
tmp
dumpFolder(e)
处理 zip 文件时的临时文件
uploads(e)
文件上传的缓冲(二进制文件/来自 zip 的新项目上传)
projectHistories(e)
完整项目历史迁移的临时文件
最后更新于