Набор утилит и команд для очистки базы данных Seafile.
Сессии
Используйте следующую команду для очистки устаревших записей сессий в базе данных Seahub:
cd seafile-server-latest
./seahub.sh python-env python3 seahub/manage.py clearsessionsПодсказка: войдите в 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 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, включая:
- Очистка недействительных данных небольшими пакетами, чтобы избежать чрезмерного потребления ресурсов базы данных за короткое время.
- Режим пробного запуска: если вы хотите только посмотреть, сколько недействительных данных можно удалить, не удаляя их фактически, используйте опцию --dry-run=true, например:
./seahub.sh python-env python3 seahub/manage.py clear_invalid_repo_data --dry-run=trueОчистка токенов синхронизации библиотек
В базе данных 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;Ссылки
https://manual.seafile.com/latest/administration/clean_database/
