使用MySQL替换sqlite解决cloudreve离线下载database is locked

实用教程 admin 5个月前 (12-12) 431次浏览 0个评论

引子

小白之前一直用cloudreve当个人网盘,然后配合aria2做离线下载,之前一直是部署在vps上,cpu性能有限,离线下载也不敢同时下好几个文件,动不动就cpu100%,但是个人轻量使用,其实没有啥问题。这几天在独服上部署了cloudreve和aria2,想着独服性能上去了,离线下载也可以同时进行多个下载任务了,可是下着下着,就提示database is locked……

image6b35497e9283d684.png

去网上搜索了下,是sqlite的原因,cloudreve默认是使用sqlite作为数据库的,sqlite胜在方便,不需要单独配置,但是在面对高并发任务时貌似有点心有余而力不足。

解决方案

解决方法主要有三种,

  1. 对sqlite进行一些修改和优化,使其可以应对高并发任务
  2. 将sqlite转化成MySQL格式,导入到新建的MySQL数据库
  3. 直接使用MySQL替换sqlite

第一种方法貌似比较复杂,想要尝试的小伙伴可以参考这两篇文章。

解决SQLite database is locked
sqlite3 database is locked 问题解决方案

而第二种方法呢,小白水平有限,涉及到sqlite和MySQL的转化和导出导入,有兴趣的小伙伴可以尝试下,小白把大佬的教程贴在参考文献里。

小白刚好机器上安装了宝塔和MySQL,这里直接采用第三种方法。

实操

小白已经将cloudreve加入systemd进程守护,先将其停止,systemctl stop cloudreve,然后我们在宝塔建立一个新的数据库(cloudreve只支持5.7及以上版本)。

这里我使用的是名为 cloudreve 的数据库 用户名 cloudreve 密码 cloudreve (不要这样学我,安全隐患很大

进入cloudreve目录,编辑cloudreve配置文件。

 [Database]
; 数据库类型,目前支持 sqlite | mysql
Type = mysql

; MySQL 端口
Port = 3306

; 用户名,根据自己情况修改
User = cloudreve

; 密码,根据自己情况修改
Password = cloudreve

; 数据库地址,根据自己情况修改
Host = 127.0.0.1

; 数据库名称,根据自己情况修改
Name = cloudreve

; 数据表前缀
TablePrefix = cd

更多详细配置项,见 cloudreve官方文档

然后我们重新启动cloudreve。

./cloudreve

执行完毕后会显示监听的端口和新的管理员用户与密码,我们先登录上去更改用户名和密码,这里注意,更换数据库配置后,Cloudreve 会重新初始化数据库,原有的数据将会丢失,但是后续我们可以导入原来的文件。

imagea7c88e88128855ae.png

修改完成后我们退出,然后重新用systemctl start cloudreve启动cloudreve,这时会有一个问题,那就是我们之前网盘里的文件全都不见了,如果是采用第一种和第二种方法就不会有这个问题,所以还是要加强学习……好在cloudreve非常贴心的提供文件导入功能,也算是一种解决方案吧。我们进入cloudreve管理后台,点击文件,直接从外部导入即可。

imagea1d8083787dc2a55.png

好了,大功告成,又可以愉快的下片了,所以呢,最好的方式就是不要怕麻烦,一开始就采用MySQL就不会有这些问题了。

参考文献

Cloudreve迁移到MySQL

使用Cloudreve搭建属于自己的网盘_极客代码-极致生活-程序员宅基地

 

 

 

 

 


VPS小白 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址