文章

记录一次修复数据库的心酸

起因

2023.9.7左右,因为halo愚蠢的调和机制,导致了频繁的数据库访问

但是云数据库是有次数限制的,结果月初次数限制就不够了

然后halo就崩了,咱就是说干嘛不加缓存呢,sb吧

思路

因为后期文章一多,调和所访问的次数肯定也很多,这就导致我只能使用本机数据库,而仅使用云数据库进行实时备份

于是我找到了这个项目

DBSyncer

可以增量备份,古德,就是我要的

初期

看到这个项目,我就知道,就是它了

看了一下,支持postgre,ok

然后直接docker走起,先把postgre跑起来

docker跑起来了,导入原有数据,启动halo!

不出意外,就出意外了

halo无法启动

一看log,端口占用无法启动

好家伙,halo的docker还加了个数据库中间件叫halodb

用的也是5432端口,我想不明白了,你docker内网连不行吗干嘛要绑定外网端口,有病吧

算了,那我改postgre的映射吧,结果docker映射还巨难改,不如重新创建一个

到这里第一天就过去了

中期

第二天在新端口(5431)弄好了数据库

halo,启动!

数据库拒绝连接

what?

我陷入怀疑,这特么怎么就拒绝连接了

远程连接,成功

奥,恍然大悟,我用的``127.0.0.1`

估计是docker对于回环网址有什么毛病

直接上ip,哈哈哈哈哈哈哈

启动!

成功!

然后就愉快地启动dbsyncer

失败!根本跑不起来

后期

第三天,我看了wiki,说是特定jdk版本才能用

我换了好几次12,14,16,1.8.0_3XX

最后还得用官方建议1.8.0_202

开始同步!

失败,用户没有权限

行,我exec进docker提权,这里还叫chatGPT帮我

我发现GPT有时候比简中更加方便,还更加准确

开始同步!

失败,日志级别不够

行,我又exec进去改配置

终于成功了

至此,所有配置完成,但是dbsyncer好像对性能有点影响?而且只能用jdk1.8.0_202启动,真是抽象,不懂他当时怎么想的

License:  CC BY 4.0