【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】v7.5.0-linux-amd64
【部署方式】虚拟机部署
【操作系统/CPU 架构/芯片详情】麒麟V10 SP3 海光
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】
【问题复现路径】使用的systemctl start tidb启动
【遇到的问题:问题现象及影响】
重启服务器后,找不到数据库和数据了,这种还有救吗
这是启动的配置文件
[Unit]
Description=TiDB Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/tidb-offline-workspace/tidb-community-server-v7.5.0-linux-amd64
ExecStart=/home/tidb-offline-workspace/tidb-server -P 4000 -store unistore
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
wbslxw
(Ti D Ber Cl S0j Eng)
3
--store unistore 这是 TiDB 的 ** 单机内存模式(Unistore)** 参数
你是集群架构还是单机架构
纯白镇的小智
(Ti D Ber Qm Qja01 M)
4
unistore 是 TiDB 内置的纯内存存储引擎
- 数据只存在内存里
- 服务器一重启,内存清空,数据直接消失
- 这是开发 / 测试临时用的,绝对不能用于生产 / 测试环境持久化
unistore属于内存数据库,类似redis没有固化数据
狂拽瘸子好腿
(Ti D Ber 8u Uk Olqy)
15
使用-store unistore是单机无持久元数据的内存模式,重启数据丢失无法恢复,需改用 TiKV 集群存储数据。
个人练习生
(Ti D Ber O Lb6d0s K)
16
unistore 是 TiDB 单机内存嵌入式存储,只用于本地测试,不依赖 PD、TiKV;
所有数据默认只存在内存 + 临时本地文件,服务器重启之后数据直接丢失;
它没有持久化到 TiKV 集群,重启进程 / 服务器,库表全部消失。
从你的 systemd 配置看到关键问题:ExecStart 用了 -store unistore。unistore 是 TiDB 的内嵌测试存储引擎,数据存在本地临时目录、进程重启或机器重启后数据不持久,这基本就是重启后“找不到数据库和数据”的直接原因——它本来就不是用来存生产数据的。也就是说,这套其实是单机 tidb-server 直接跑 unistore,不是标准的 TiDB 集群(没有独立的 PD + TiKV 持久化存储)。数据是否有救,取决于 unistore 的数据目录是否还在、是否被覆盖:如果之前跑的时候有指定持久化路径且没被清,可能还能捞;但 unistore 默认多为临时性质,重启后大概率已丢。建议:1)先别再启动覆盖,检查原来的工作目录和可能的数据文件是否还在;2)以后生产务必用标准部署——通过 tiup cluster 部署 PD + TiKV + TiDB,数据落在 TiKV 上才持久可靠,不要用 -store unistore 跑生产。这次的数据如果 unistore 目录已无有效文件,恢复希望不大,重点是转成正规集群部署避免再发生。