比特币节点升级实战:先备份钱包,再换引擎 图 1
比特币节点升级实战:先备份钱包,再换引擎 · 图 1

跑一个比特币全节点的人,迟早要面对“升级”这件事:软件提示有新版、想用上新的费率策略、或者安全公告催着换版本。全节点的升级和手机应用点一下更新不同——它手里攥着几十上百 GB 的账本数据,钱包里可能还有钥匙。这份流程要解决的就是一个问题:怎么在不惊动数据的前提下换引擎。

动手前:三件事先看清

第一件是当前版本与目标版本的差距。用 RPC 看一眼自己跑的到底是哪一版,版本字符串可以对照官方下载页的版本列表;从一个很老的版本直接跳到最新,中间可能跨过了多轮格式变更,不能按“小步快跑”想当然。第二件是发行说明。官方下载页列着各版本包与签名文件,每个大版本还有独立的说明文档,里面写明了参数增删、索引格式变化、钱包行为调整——升级真正要读的就是这几页纸。核心开发的惯例是:需要重下整链或重建索引的破坏性数据库变更,会明确写进发行说明;没有写,才意味着可以原地换。第三件是磁盘余量。节点对可用空间的容忍有下限,空间不足会直接停机,升级前后都要留出富余,别踩线运行。

备份:真正不能丢的只有钱包

很多人升级前的焦虑是“要不要备份几百 GB 的区块链”,其实不用。区块与链状态数据全部可以重新获得:blocks 目录丢了可以重下,chainstate 坏了可以重建索引;唯一不可替代的是私钥与记账,也就是数据目录里的 wallets 目录(旧式单钱包则是 wallet.dat)。所以备份的准确对象是钱包目录:先停进程,再整目录拷贝,这是避免拷出半写状态的唯一稳妥姿势。拷贝后最好做一次恢复演练——换个临时数据目录加载这个钱包,确认能用。钥匙之外,配置文件 bitcoin.conf 也顺手留一份,里面有你的连接策略、RPC 设置这些花了时间调出来的东西。

换引擎:停干净、装正式、起观察

停机别拔电源,用 RPC 的 stop 命令发一个体面的告别:节点会按顺序关掉 RPC、断开对端、把内存池与链状态刷盘、再删除进程号文件,中途硬杀进程可能白白触发一次开机自检。安装时走官方渠道,并且把校验做足:下载官方公布的哈希清单与签名文件,逐条核对校验和、再验证清单本身的签名——哈希保证文件与官方发布一致,签名保证这份清单确实出自发布方,两道都过了才动笔替换二进制。用发行包或包管理器的用户同样建议核对,而不是默认“源里的一定对”。

启动新版本后先别急着忙别的,头几分钟集中看三样:同步进度是否在推进、日志有没有反复报错、RPC 是否正常应答。大版本升级的首次启动可能包含数据库迁移,比平时慢属于预期;发行说明里预告过的迁移动作,慢也要等它跑完。

升级之后:给自己留一条退路

两个尾巴要收。其一,如果确实需要降级回旧版,链数据库的兼容性以发行说明为准——多数情况下相邻大版本可以互认,跨过格式变更点则旧版可能要求重建索引;这也是保留旧二进制一段时间的理由。其二,参数会变旧:有些选项在新版被弃用甚至删除,启动日志里的告警别当耳旁风,每一条都值得对照发行说明查清楚,要么改写法、要么确认自己不再依赖该功能。闪电节点还要多一句:升级前把版本说明里的通道兼容性段落读完,通道状态机不容许“装了再说”。

风险提示:节点软件升级涉及正在保管资产的账本环境,操作前请完成钱包备份并演练恢复;本文不构成投资建议。