哪吒监控手动删除或修改服务器 ID

911 字
5 分钟
哪吒监控手动删除或修改服务器 ID

哪吒监控在删除服务器后,数据库中的服务器 ID 通常不会自动重新排列。如果需要删除残留记录、重置自增编号,或者手动修改服务器 ID,可以直接操作 SQLite 数据库。

Warning

操作前务必停止哪吒面板并备份数据库,避免数据库损坏或数据被覆盖,可能导致服务器记录、分组或流量统计异常。

一、停止哪吒面板#

先进入哪吒面板的 Docker Compose 目录:

Terminal window
cd /opt/nezha/dashboard
docker compose down

也可以只停止容器:

Terminal window
docker stop nezha-dashboard

容器名称可以通过下面的命令查看:

Terminal window
docker ps -a

二、备份数据库#

哪吒面板的数据库通常位于:

/opt/nezha/dashboard/data/sqlite.db

先创建一份备份:

Terminal window
cp /opt/nezha/dashboard/data/sqlite.db \
/opt/nezha/dashboard/data/sqlite.db.bak

也可以在文件名中加入日期:

Terminal window
cp /opt/nezha/dashboard/data/sqlite.db \
/opt/nezha/dashboard/data/sqlite.db.$(date +%Y%m%d-%H%M%S).bak

如果不确定数据库位置,可以搜索:

Terminal window
find / -name "sqlite.db" 2>/dev/null

三、安装 SQLite#

Debian 或 Ubuntu 系统执行:

Terminal window
apt update
apt install -y sqlite3

四、进入数据库#

Terminal window
sqlite3 /opt/nezha/dashboard/data/sqlite.db

成功进入后,终端会显示:

sqlite>

查看数据库中的所有表:

.tables

常见表包括:

alert_rules
api_tokens
crons
ddns
monitor_histories
monitors
notifications
servers
users

其中,服务器信息保存在 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:

Terminal window
cd /opt/nezha/dashboard
docker compose up -d

如果之前使用的是 docker stop

Terminal window
docker start nezha-dashboard

最后检查运行状态:

Terminal window
docker ps

确认哪吒面板可以正常打开,并检查服务器 ID 是否符合预期。

常用操作汇总#

Terminal window
# 停止面板
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';
-- 修改服务器 ID
UPDATE servers SET id = 3 WHERE id = 4;
-- 退出
.quit

操作数据库存在一定风险,建议每次修改前都保留一份可用备份。如果修改后面板无法正常启动,可以停止容器并恢复原数据库:

Terminal window
cp /opt/nezha/dashboard/data/sqlite.db.bak \
/opt/nezha/dashboard/data/sqlite.db

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
哪吒监控手动删除或修改服务器 ID
https://blog.is-w.com/posts/nezha-server-id-reset/
作者
Nova
发布于
2024-10-23
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Nova
慢慢折腾,认真记录,每一天都有新的收获。
公告
欢迎来到我的博客,随便看看不用客气!
分类
标签
站点统计
文章
19
分类
6
标签
29
总字数
21,750
运行时长
0
最后活动
0 天前