备份恢复与升级
需要备份什么
- 数据库的一致性副本。
- 附件目录,默认data/attachments。
- 私有数据库配置、实际软件版本、授权文件和相关运行配置。
附件内容不在SQL数据库中。只备份数据库会留下无法下载的附件记录;只备份附件也无法还原账目。
SQLite
短暂停止应用后一起备份数据库和附件,是最直观的一致性备份方式。软件自带的 snapshot 命令可以生成数据库一致性副本,不需要 Python 或额外备份脚本。快照不包含附件、配置和授权文件,这些内容需要一并保存。
以下示例在解压后的软件目录执行。先停止应用写入,将数据库及附件路径换成实际配置。备份目录应位于独立、受限的备份存储;目标快照文件不能已经存在。
umask 077
mkdir /mnt/customer-backups/backup-20261105-001
DB_DRIVER=sqlite DB_DSN=/var/lib/ilitebook/ilitebook.db \
SNAPSHOT_PATH=/mnt/customer-backups/backup-20261105-001/database.db ./ilitebook-private snapshot
tar -czf /mnt/customer-backups/backup-20261105-001/attachments.tar.gz -C /var/lib/ilitebook attachments
# 同时保存私有配置、授权文件和对应软件版本;完成后再启动应用备份含有私有账目与附件,应使用加密的备份存储并限制访问。快照命令不会自动加密或清理历史备份,保留周期及定时执行由安装人员按需配置。
MySQL 与 PostgreSQL
使用数据库原生备份工具,附件备份期间停止应用写入。以下为本机示例,远程连接按实际地址配置,不要把密码写进公开命令记录。
mysqldump --single-transaction -h 127.0.0.1 -u BACKUP_USER -p DATABASE > database.sql
pg_dump -h 127.0.0.1 -U BACKUP_USER -Fc DATABASE > database.dump
# 停止写入后同时备份附件目录
tar -czf attachments.tar.gz data/attachments恢复验证
- 在独立位置准备数据库和附件,避免覆盖现有数据。
- 使用匹配的软件版本和配置指向恢复环境。
- 核对账本、流水数量、各类金额、转账和附件下载。
- 确认后再安排正式切换,保留原环境以便回退。
升级
升级前备份,停止旧程序,更新可执行文件与随包资源,再启动验证。当前项目开发阶段直接更新数据结构,不承诺旧测试数据库自动迁移;遇到结构不兼容时应使用匹配版本或全新测试库,不能删除真实账目强行初始化。