十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

4 步跑通:kkFileView 文档预览元数据接入 KingbaseES 的数据库备份完整做法

4 步跑通:kkFileView 文档预览元数据接入 KingbaseES 的数据库备份完整做法 4 步跑通kkFileView 文档预览元数据接入 KingbaseES 的数据库备份完整做法【免费下载链接】kkFileViewUniversal File Online Preview Project based on Spring-Boot项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileViewkkFileView 是一个基于 Spring Boot 的通用文件在线预览项目支持 Office、PDF、CAD 等 200 格式本文带你把它与 KingbaseES人大金仓兼容 PostgreSQL 协议的国产关系型数据库组合实现文档预览 元数据数据库备份把每次预览的文档元数据落到数据库里再用定时任务归档备份。预览用的元数据现在都存在哪预览能用了但谁在什么时候传了什么文件、多大这些元数据只躺在服务器内存和本地临时目录里一次重装或误操作就全丢。这篇的数据库备份方案就是解决这件事。为什么是 kkFileView KingbaseES 这个组合两个项目的分工一句话说清kkFileView 负责看KingbaseES 负责存。角色承担者具体职责预览引擎kkFileView 5.0.0解析并在线预览 Office、PDF、CAD 等格式元数据仓库KingbaseES建议 V8R6存文件名、大小、上传者、备份状态等元数据备份调度Spring Scheduled定期把元数据归档到备份集选它而不是更熟的 MySQL理由有两个一是属于国产化数据库合规上好交代二是兼容 PostgreSQL 协议JDBC 驱动生态成熟接入成本和 MySQL 基本一致。动手前3 个前置条件先核对运行环境Java 21 和 MavenkkFileView 5.0.0 的硬性要求具体版本见 pom.xml数据库KingbaseES V8R6 已部署默认监听 54321 端口并建一个有建表权限DDL的专用账号网络kkFileView 所在机器执行telnet 金仓主机 54321能连通构建git clone https://gitcode.com/GitHub_Trending/kk/kkFileView再执行mvn clean package -DskipTests产物为server/target/kkFileView-5.0.0.jar集成实操从连接串到定时备份的完整链路KingbaseES 连接串怎么配先在server/pom.xml里加上驱动依赖com.kingbase:kingbase8然后在 server/src/main/config/application.properties 末尾追加连接配置spring.datasource.urljdbc:kingbase8://127.0.0.1:54321/kkfileview?currentSchemapublic spring.datasource.usernamesystem spring.datasource.passwordyourpassword spring.datasource.driver-class-namecom.kingbase8.Driver spring.datasource.hikari.maximum-pool-size10两个细节注意URL 里的currentSchemapublic是默认模式Hikari 连接池中小部署给 10 就够别调太大备份任务会批量占用。文档元数据表怎么建在金仓里建一张元数据表起步用这几个字段足够CREATE TABLE document_metadata ( id BIGSERIAL PRIMARY KEY, file_name VARCHAR(255), file_size BIGINT, uploader VARCHAR(64), upload_time TIMESTAMP DEFAULT now(), backup_time TIMESTAMP, status VARCHAR(16) DEFAULT PENDING ); CREATE INDEX idx_dm_upload_time ON document_metadata(upload_time);upload_time上的索引不能省备份任务就是按它排序取增量。落库代码放在service层文件上传后提取元数据并插入该表。工程代码结构可以参考 server/src/main/java/cn/keking/ 目录建议实体类放model包、数据访问放service包和现有分层保持一致。定时备份一行配好在备份服务类里加一个定时方法Scheduled(cron 0 0 2 * * ?) public void fullBackup() { backupService.backupAllDocuments(); }任务体做三件事查statusPENDING的记录、写入备份集、成功后把状态改成BACKED_UP并回填backup_time。想改成每小时增量把 cron 换成0 0 * * * ?查询条件加上晚于上次备份时间即可。效果验证备份到底生效没有✅ 三个动作每个不到一分钟启动java -jar server/target/kkFileView-5.0.0.jar访问http://localhost:8012首页能正常打开。上传并预览一份 Word 文档然后在金仓里执行SELECT file_name, uploader, status FROM document_metadata ORDER BY upload_time DESC LIMIT 5;结果里出现新记录、凌晨 2 点任务跑完后状态从PENDING变成BACKED_UP闭环就算通了再访问http://localhost:8012/actuator/health确认接口返回 UP服务侧无异常。避坑指南3 个高频问题 ⚠️1. 启动报No suitable driver现象服务启动日志出现No suitable driver found for jdbc:kingbase8原因驱动 jar 没进 classpath或driver-class-name拼错解法确认server/pom.xml里有com.kingbase:kingbase8驱动值写全com.kingbase8.Driver2. 连接串对却连不上现象报no pg_hba.conf entry或连接直接超时原因KingbaseES 的pg_hba.conf默认不放开外部地址访问解法给 kkFileView 来源 IP 加一条放行记录保存后重启数据库服务再试3. 备份时偶发连接池耗尽现象connection is not available, request timed out after 30000ms原因备份任务批量拿连接不还池子又调得太小解法调小maximum-pool-size并在备份任务里给连接使用加超时保护这套组合把预览和数据落地各自最擅长的事都交了出去元数据从此只存内存变成数据入库存档一次集成一下午能跑完。下一步可以把备份集归档到对象存储再结合 Actuator 指标做备份监控告警。【免费下载链接】kkFileViewUniversal File Online Preview Project based on Spring-Boot项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表