概述
有两部分数据需要备份
-
SeaTable 数据目录
-
数据库
如果你根据我们的手册设置 SeaTable 服务器,你应该有这样一个目录布局:
/opt/seatable/seatable-data/seatable/
├── ccnet
├── conf
├── db-data
├── logs
├── pids
├── scripts
├── seafile-data
└── seahub-data
└── storage-data
其中
-
storage-data: 存储表格的数据和大数据存储中的数据的备份
-
db-data: 大数据存储中的数据 (企业版才有),其中的数据会定期导出到 storage-data 下。
-
seafile-data: 表格中的附件,包括文件和图片
-
seahub-data: 头像等
SeaTable 还在一些数据库中存储一些重要的元数据.
MySQL 数据库:
-
ccnet_db: 包含用户和组信息
-
seafile_db: 包含资料库元数据信息
-
dtable_db: 包含web前端使用的表
备份
步骤
-
备份 MySQL 数据库;
-
立即导出大数据存储中的数据 (可选), 也就是把 dtable-db 目录下的数据从内部的一种特殊格式导出到 storage-data 下。
-
备份 SeaTable 数据目录;
备份顺序: 先备份数据库,然后调度大数据存储中的数据的备份,再备份数据目录。
备份数据库
# It's recommended to backup the database to a separate file each time. Don't overwrite older database backups for at least a week.
cd /opt/seatable-backup/databases
docker exec -it seatable-mysql mysqldump -uroot -pMYSQL_ROOT_PASSWORD --opt ccnet_db > ccnet_db.sql
docker exec -it seatable-mysql mysqldump -uroot -pMYSQL_ROOT_PASSWORD --opt seafile_db > seafile_db.sql
docker exec -it seatable-mysql mysqldump -uroot -pMYSQL_ROOT_PASSWORD --opt dtable_db > dtable_db.sql
立即导出大数据存储中的数据 (可选)
大数据存储中的数据 (dtable-db 中存储的数据) 每日会自动进行一次导出,如果你需要迁移服务器,那么你可以在对外停用服务后立即对数据进行一次导出,这样来保证迁移后的数据是最新的。
docker exec -it seatable /opt/seatable/scripts/seatable.sh backup-all
该命令结束后,storage-data 就会有一份 dtable-db 中数据的最新导出。
备份数据目录
你可以直接复制整个数据目录或者用 rsync 增量备份。
-
直接复制整个目录
cp -R /opt/seatable/seatable-data/seatable /opt/seatable-backup/data/
cd /opt/seatable-backup/data && rm -rf ccnet logs
-
使用 rsync 增量备份
/usr/bin/rsync -az --exclude 'ccnet' --exclude 'logs' --exclude 'pids' --exclude 'db-data' /opt/seatable/seatable-data/seatable /opt/seatable-backup/data/
恢复
恢复数据库
docker exec -i seatable-mysql /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD ccnet_db < /opt/seatable-backup/databases/ccnet_db.sql
docker exec -i seatable-mysql /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD seafile_db < /opt/seatable-backup/databases/seafile_db.sql
docker exec -i seatable-mysql /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD dtable_db < /opt/seatable-backup/databases/dtable_db.sql
恢复 SeaTable 数据
cp -R /opt/seatable-backup/data/* /opt/seatable/seatable-data/
恢复大数据存储中的数据
docker exec -it seatable /opt/seatable/scripts/seatable.sh restore-all