我使用 ubuntu 服务器docker compose 部署的企业版最新版本,目前是10.0.10版本。在弄数据备份时遇到了很多的坑,走了很多弯路,跟大家分享下经验。
分享下我尝试过的所有办法,我所有的文件目录结构都和官方文档里的结构一致
- 备份/opt/seafile-data ,seafile-mysql文件夹,切记不能备份 es 的文件夹,不然启动新的 docker compose 会导致 es 报错,无法成功启动,这种备份方式是可行的,缺点就是备份出来的文件太大
- 按照官方文档的方式进行备份,但是官方文档埋了大坑。备份分为数据库数据备份和 seafile 数据备份。其中数据库备份按照文档所写导出表 sql 就行,关键在于备份 seafile-data目录里的内容官方文档写错了。
只需要备份seafile-data 和 seahub-data就行,conf 目录不用备份,因为 mysql 下 seafile 用户的密码是随机生成的,如果新启动容器还用这个 conf 里的密码会导致 mysql 报权限错误,导致容器启动不起来。如果你对以前容器对 conf文件夹里的配置文件进行了一些修改,必须要备份 conf 目录,那你应该需要启动新的docker容器后,将新 conf 里的密码替换到备份 conf 里的配置文件里,同时 conf 文件夹里有多个文件里都配置了 mysql 的密码,例如 ccnet.conf seafile.conf等,所以你得需要全部替换。
如果你按照官方文档里进行数据的恢复,你还会遇到第二个问题
新容器启动后,能访问,但是访问旧的存储库出错
这个问题的在于还是官方文档写错了
见下图,上方是新容器的目录结构,下方是执行官方文档 cp 命令恢复 seafile 数据的目录结构,所以导致了存储库权限的问题。所以应该使用上图我图片备注的命令拷贝深一层的文件才是正确的。
以下是关于备份的一些讨论
企业版是支持配置对象存储的,所以我的备份方案是 seafile 配置对象存储和 云 mysql 数据库来实现无需手动备份。将对象存储和服务器选同一区域,服务器到 oss 走内网,不计算流量费用。因为我就两个人使用,数据量也不大,按腾讯云一个月 1G 差不多 1 毛钱计算,费用也是挺低的。云 mysql 和腾讯云 cos 对象存储方案我已成功部署。
(上述所缺图片是论坛限制新用户只能发一个图片)