清理数据库

Session
使用以下命令清理 Seahub 数据库中过期的会话记录:
            
                
                
cd seafile-server-latest
./seahub.sh python-env python3 seahub/manage.py clearsessions
提示: 如果是docker部署,需要进入docker容器内的     /opt/seafile/seafile-server-latest 目录执行命令。
使用 clean_db_records 命令清理 seahub_db
使用以下命令可以同时清理 Activity、sysadmin_extra_userloginlog、FileAudit、FileUpdate、FileHistory、PermAudit、FileTrash 表中 90 天前的记录:
            
                
                
./seahub.sh python-env python3 seahub/manage.py clean_db_records
如果你愿意,也可以手动清理这些表,如下所示。
文件活动 (Activity)
使用以下命令清理活动记录:
            
                
                
use seahub_db;
DELETE FROM Activity WHERE to_days(now()) - to_days(timestamp) > 90;
DELETE FROM UserActivity WHERE to_days(now()) - to_days(timestamp) > 90;
登录
使用以下命令 清理登录记录
            
                
                
use seahub_db;
DELETE FROM sysadmin_extra_userloginlog WHERE to_days(now()) - to_days(login_date) > 90;
文件访问
使用以下命令 清理文件访问记录
            
                
                
use seahub_db;
DELETE FROM sysadmin_extra_userloginlog WHERE to_days(now()) - to_days(login_date) > 90;
文件访问
使用以下命令清理文件访问记录:
            
                
                
use seahub_db;
DELETE FROM FileAudit WHERE to_days(now()) - to_days(timestamp) > 90;
文件更新
使用以下命令 清除文件更新记录
            
                
                
use seahub_db;
DELETE FROM FileUpdate WHERE to_days(now()) - to_days(timestamp) > 90;
权限
使用以下命令清理权限更改审核记录:
            
                
                
use seahub_db;
DELETE FROM PermAudit WHERE to_days(now()) - to_days(timestamp) > 90;
文件历史
使用以下命令清理文件历史记录:
            
                
                
use seahub_db;
DELETE FROM FileHistory WHERE to_days(now()) - to_days(timestamp) > 90;
清理过期的资料库数据
自 6.2 版本起,我们提供了清理 Seafile 数据库中过期资料库记录的命令,例如在资料库被删除后未立即删除的记录。这是因为用户可能会恢复已删除的资料库,所以在删除资料库时不能立即清除这些记录。
            
                
                
./seahub.sh python-env python3 seahub/manage.py clear_invalid_repo_data
该命令在 10.0 版本中得到了改进,包括:
  1. 它会以小批量方式清理无效数据,避免在短时间内占用过多数据库资源。
  2. Dry-run 模式: 如果你只想查看有多少无效数据可以被删除,而不实际删除任何数据,可以使用 dry-run 选项,例如:
            
                
                
./seahub.sh python-env python3 seahub/manage.py clear_invalid_repo_data --dry-run=true
清理资料库同步 Token
在 Seafile 数据库中有两个与资料库同步令牌相关的表:
  • RepoUserToken 包含用于资料库同步的认证令牌。注意,每个客户端(包括同步客户端和 SeaDrive)都会生成一个单独的令牌。
  • RepoTokenPeerInfo 包含关于每个客户端令牌的更多信息,例如客户端名称、IP 地址、最后同步时间等。
当你有许多同步客户端连接到服务器时,这两个表可能会包含大量记录。其中许多记录可能已不再使用。你可以通过以下 SQL 清理在最近一段时间未使用的令牌:
            
                
                
delete t,i from RepoUserToken t, RepoTokenPeerInfo i where t.token=i.token and sync_time < xxxx;
xxxx 是 UNIX 时间戳,表示要删除该时间之前的令牌。
为了安全起见,你可以先检查将要删除多少令牌:
            
                
                
select * from RepoUserToken t, RepoTokenPeerInfo i where t.token=i.token and sync_time < xxxx;