dtable数据库
清理过期数据(批量)
clean_db_records 命令用于清除 dtable 数据库中超过 30天的记录,其中 operation_log 只保留 14 天。
下面的表将被清理:
-
activities
-
operation_log
-
delete_operation_log
-
notifications_usernotification
-
dtable_notifications
-
session_log
docker exec -it seatable /bin/bash
seatable.sh python-env /opt/seatable/seatable-server-latest/dtable-web/manage.py clean_db_records
运行之后, 您会看到类似的输出
清理过期访问会话
clearsessions 命令用于清除dtable数据库中过期的用户(包括匿名用户)的访问会话信息,主要涉及django_session表
docker exec -it seatable /bin/bash
seatable.sh python-env /opt/seatable/seatable-server-latest/dtable-web/manage.py clearsessions
清理过期数据(自定义)
clean_db_records 会批量将将 一些表中的超过一定时限的数据进行清理, 如果需要清理指定的数据表,或者自定义清理的过期时间, 可以登陆Mysql/MariaDB,运行以下命令。
注意: 由于是依据每个数据表的时间字段进行清理, 而以下语句根据时间字段的数据结构不同(时间戳或者是日期)而稍有差异
activities表
这里记录的信息用于首页的修改记录和行的操作日志
use dtable_db # 数据库名称
# 清理 30 天之前的数据
DELETE FROM `activities` WHERE `op_time` < DATE_SUB(NOW(), INTERVAL 30 DAY)
operation_log表
这里记录的信息用于了 base 的操作日志
use dtable_db # 数据库名称
# 清理 14 天之前的数据
DELETE FROM `operation_log` WHERE `op_time` < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 14 DAY))*1000
delete_operation_log表
这里记录的信息用于 base 的回收站
use dtable_db # 数据库名称
# 清理 30 天之前的数据
DELETE FROM `delete_operation_log` WHERE `op_time`< UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))*1000
notifications_usernotification
这里记录的信息用于工作区workspace中用户的通知: 包括表单提交, 加入群组,共享表格等
use dtable_db # 数据库名称
# 清理 30 天之前的数据
DELETE FROM `notifications_usernotification` WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL 30 DAY)
dtable_notifications
这里记录的信息用于表格内用户的通知: 包括规则触发, 添加协作人,收到行评论等
use dtable_db # 数据库名称
# 清理 30 天之前的数据
DELETE FROM `dtable_notifications` WHERE `created_at` < DATE_SUB(NOW(), INTERVAL 30 DAY)
session_log
记录了用户登陆的设备的一些信息, 包括user_agent, remote_ip等
use dtable_db # 数据库名称
# 清理 30 天之前的数据
DELETE FROM `session_log` WHERE `op_time` < DATE_SUB(NOW(), INTERVAL 30 DAY)
备份数据 (可选)
运行 clean_db_records 之前,可以使用如下 shell 脚本备份数据库,备份的时候可以把一些数据大的表排除掉,这些数据大的表包括:
-
operation_log
-
delete_operation_log
-
session_log
-
activities
database_backup.sh 脚本示例:
#!/bin/bash
set -e
db_host='数据库IP地址'
db_user='root'
db_name='dtable_db'
backup_dir='/opt/seatable/db-backups'
echo 'Start backing up the database'
mysqldump -h$db_host -u$db_user -p --opt $db_name --ignore-table=$db_name.operation_log --ignore-table=$db_name.activities --ignore-table=$db_name.delete_operation_log --ignore-table=$db_name.session_log > $backup_dir/seatable.sql.`date +"%Y-%m-%d"`
echo 'Database backup succeeded'
运行脚本
./database_backup.sh
Start backing up the database
Enter password: 输入数据库密码
Database backup succeeded
清理已标记为删除的 Workspace
使用以下命令清理被删除超过60天的 workspace
docker exec -it seatable /bin/bash
seatable.sh python-env /opt/seatable/seatable-server-latest/dtable-web/manage.py clean_deleted_workspaces
运行之后您会看到如下输出: