跳转至

部署和维护 / 管理员工具

本文主要介绍如何使用管理员工具维护 DataFlux Func。

1. 管理员工具 admin-tool.py

DataFlux Func 提供了管理员工具,方便进行一些应急维护工作。

管理员工具附带在容器中,需要使用 Docker exec 方式运行,可以使用 --help 查看具体使用方式:

Bash
1
docker exec -it {DataFlux Func 容器 ID} sh -c 'exec python admin-tool.py --help'
Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
usage: admin-tool.py [-h] [-f] [--admin-username ADMIN_USERNAME] [--admin-password ADMIN_PASSWORD] <Command>

+--------------------------+
| DataFlux Func Admin Tool |
+--------------------------+
This tool should run in the Docker container:
    $ docker exec {DataFlux Func Container ID} sh -c 'exec python admin-tool.py --help'
    $ docker exec -it {DataFlux Func Container ID} sh -c 'exec python admin-tool.py reset_admin [-f] [--admin-username=<Admin Username>] [--admin-password=<Password>]'
    $ docker exec -it {DataFlux Func Container ID} sh -c 'exec python admin-tool.py reset_upgrade_db_seq [-f]'
    $ docker exec -it {DataFlux Func Container ID} sh -c 'exec python admin-tool.py disable_ip_address_filter [-f]'
    $ docker exec -it {DataFlux Func Container ID} sh -c 'exec python admin-tool.py clear_redis [-f]'

positional arguments:
  <Command>             reset_admin, reset_upgrade_db_seq, disable_ip_address_filter, clear_redis, run_sql, call_api

options:
  -h, --help            show this help message and exit
  -f, --force           Force run, no confirm
  --admin-username ADMIN_USERNAME
                        Admin Username
  --admin-password ADMIN_PASSWORD
                        Admin Password

1.1 重置管理员密码

普通用户的密码可以由系统管理员直接重新设置, 但系统管理员本身的密码如果忘记,需要使用 DataFlux Func 附带的管理员工具进行重置。

详细请参考 部署和维护 / 管理员工具

1.2 重置数据库更新序号

DataFlux Func 在安装 / 升级时,会自动更新数据库结构,并记录当前数据库结构版本序号。

在某些情况下,这个序号如果不正确,会导致系统无法正常启动,此时需要使用管理员工具修正。

如果您不知道这是什么,请咨询官方后再进行操作

具体命令如下:

  • 容器外
Bash
1
docker exec -it {DataFlux Func 容器 ID} sh -c 'exec python admin-tool.py reset_db_upgrade_seq'
  • 容器内
Bash
1
cd /usr/src/app; python admin-tool.py reset_db_upgrade_seq

1.3 禁用 IP 地址过滤

如果你在 系统设置 / IP 地址过滤 中配置错误,导致无法访问 DataFlux Func。

可以使用以下命令,直接禁用 IP 地址过滤功能。

具体命令如下:

  • 容器外
Bash
1
docker exec -it {DataFlux Func 容器 ID} sh -c 'exec python admin-tool.py disable_ip_address_filter'
  • 或容器内
Bash
1
cd /usr/src/app; python admin-tool.py disable_ip_address_filter

1.4 清空 Redis

如遇队列堵塞需要立即恢复,脚本不合理的逻辑导致缓存过大等情况,导致无法操作 DataFlux Func。

可以使用以下命令,清空 Redis 数据库。

清空 Redis 不会对 DataFlux Func 本身运行带来问题。但运行中的业务代码可能会依赖 Redis 中的数据,请务必确认后进行操作

具体命令如下:

  • 容器外
Bash
1
docker exec -it {DataFlux Func 容器 ID} sh -c 'exec python admin-tool.py clear_redis'
  • 或容器内
Bash
1
cd /usr/src/app; python admin-tool.py clear_redis

2. 交互式管理员工具 admin-tui.py

在容器中运行交互式工具,可以查看业务资源,并使用数据库管理入口:

Bash
1
docker exec -it {DataFlux Func 容器 ID} sh -c 'exec python admin-tui.py'
入口 功能
DB Tables 查看 MySQL 或 PostgreSQL 的表数据和结构
DB Upgrades 按升级序号倒序查看升级项,预览对应数据库引擎的 SQL

使用方向键和回车选择条目,PgUp、PgDn 翻页,数字 1 至 9、0 选择当前页第 1 至第 10 行。数据库工具使用本地数据库配置,不受 --base-url 影响。

在 DB Upgrades 中按 S 可以直接修改数据库升级序号;预览 SQL 后按 X 并确认,可手工执行所选升级项。执行成功后可填写新的升级序号,留空则保持原值。

手工升级前确认数据库状态并备份

手工执行不会获取自动升级锁,不应与自动升级同时进行。MySQL DDL 可能立即提交,失败时仍可能保留此前已执行的部分;修改升级序号本身不会执行 SQL,应确保序号与实际结构一致。

3. 直接操作 Redis

如需要直接操作 Redis,可以直接进入 Redis 终端进行操作。

具体命令如下:

Bash
1
docker exec -it {Redis 容器 ID} sh -c 'exec redis-cli -n 5'

DataFlux Func 默认使用 Redis 的 5 号数据库