哪吒监控手动删除或修改服务器 ID
哪吒监控在删除服务器后,数据库中的服务器 ID 通常不会自动重新排列。如果需要删除残留记录、重置自增编号,或者手动修改服务器 ID,可以直接操作 SQLite 数据库。
操作前务必停止哪吒面板并备份数据库,避免数据库损坏或数据被覆盖,可能导致服务器记录、分组或流量统计异常。
一、停止哪吒面板
先进入哪吒面板的 Docker Compose 目录:
cd /opt/nezha/dashboarddocker compose down也可以只停止容器:
docker stop nezha-dashboard容器名称可以通过下面的命令查看:
docker ps -a二、备份数据库
哪吒面板的数据库通常位于:
/opt/nezha/dashboard/data/sqlite.db先创建一份备份:
cp /opt/nezha/dashboard/data/sqlite.db \ /opt/nezha/dashboard/data/sqlite.db.bak也可以在文件名中加入日期:
cp /opt/nezha/dashboard/data/sqlite.db \ /opt/nezha/dashboard/data/sqlite.db.$(date +%Y%m%d-%H%M%S).bak如果不确定数据库位置,可以搜索:
find / -name "sqlite.db" 2>/dev/null三、安装 SQLite
Debian 或 Ubuntu 系统执行:
apt updateapt install -y sqlite3四、进入数据库
sqlite3 /opt/nezha/dashboard/data/sqlite.db成功进入后,终端会显示:
sqlite>查看数据库中的所有表:
.tables常见表包括:
alert_rulesapi_tokenscronsddnsmonitor_historiesmonitorsnotificationsserversusers其中,服务器信息保存在 servers 表中。
五、查看服务器信息
查看全部服务器记录:
SELECT * FROM servers;只查看服务器 ID 和名称:
SELECT id, name FROM servers;这种方式更加直观,方便确认需要操作的服务器。
六、删除服务器记录
删除指定服务器
例如删除 ID 为 4 的服务器:
DELETE FROM servers WHERE id = 4;删除后再次检查:
SELECT id, name FROM servers;删除全部服务器
DELETE FROM servers;该操作会清空所有服务器记录,请谨慎执行。
七、重置服务器自增 ID
删除服务器后,如果希望新添加的服务器重新从 ID 1 开始,可以清除自增计数:
DELETE FROM sqlite_sequence WHERE name = 'servers';需要注意,只有在 servers 表已经清空时,新的服务器才会从 1 开始编号。
如果表中仍然存在服务器,新记录通常会继续使用当前最大 ID 后面的数字。
八、修改服务器 ID
修改格式如下:
UPDATE servers SET id = 新ID WHERE id = 原ID;例如,将服务器 ID 从 4 修改为 3:
UPDATE servers SET id = 3 WHERE id = 4;修改完成后验证:
SELECT id, name FROM servers;修改前需要确保目标 ID 没有被其他服务器占用,否则可能出现唯一键冲突。
可以先检查目标 ID:
SELECT id, name FROM servers WHERE id = 3;九、保存并退出
SQLite 中执行的语句会直接写入数据库,无需额外保存。
退出数据库:
.quit也可以使用:
.exit十、重新启动面板
如果使用 Docker Compose:
cd /opt/nezha/dashboarddocker compose up -d如果之前使用的是 docker stop:
docker start nezha-dashboard最后检查运行状态:
docker ps确认哪吒面板可以正常打开,并检查服务器 ID 是否符合预期。
常用操作汇总
# 停止面板docker stop nezha-dashboard
# 备份数据库cp /opt/nezha/dashboard/data/sqlite.db \ /opt/nezha/dashboard/data/sqlite.db.bak
# 进入数据库sqlite3 /opt/nezha/dashboard/data/sqlite.db-- 查看服务器SELECT id, name FROM servers;
-- 删除指定服务器DELETE FROM servers WHERE id = 4;
-- 删除全部服务器DELETE FROM servers;
-- 重置自增编号DELETE FROM sqlite_sequence WHERE name = 'servers';
-- 修改服务器 IDUPDATE servers SET id = 3 WHERE id = 4;
-- 退出.quit操作数据库存在一定风险,建议每次修改前都保留一份可用备份。如果修改后面板无法正常启动,可以停止容器并恢复原数据库:
cp /opt/nezha/dashboard/data/sqlite.db.bak \ /opt/nezha/dashboard/data/sqlite.db支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

