站点图标 Lee's Blog

清理ttrss数据库

Tiny Tiny RSS自带了清理旧文章的功能,在偏好设置中,可以设置清理多久前的文章。但与他连接的postgresql数据库对内容的删除是打标记,而不是彻底删除。这样就造成运行越久数据库越大的问题。因此我们需要清理postgresql数据库。

就比如我的服务,运行了3年多了,数据库已经到850MB了,而收藏的文章就20篇,90天一清理旧文章,现有2000多文章。是比较离谱了。因此我们通过操作数据库来进行清理。

大部分的ttrss应该都是使用docker-compose安装的,因此postgresql应该也是docker容器。也是本文的基础。

查询数据库大小

先查询所有数据库的大小:

 #先进入容器的sql命令模式(我的容器名是postgres即第一个"postgres"):
 docker exec -it postgres psql -U postgres
 select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;
 ###
  datname | size
 -----------+---------
  postgres | 8001 kB
  template0 | 7809 kB
  template1 | 7953 kB
  ttrss     | 858 MB
 (4 rows)
 ​

确定占用空间多的数据库名称后退出sql命令模式:输入”\q”

清理对应数据库

进入postgre容器的bash命令行:

 docker exec -it  postgres /bin/bash
 vacuumdb -U postgres -d ttrss -v -f --analyze

看过一堆信息输出后我们在进去sql中查看一下:

 #当前在docker的bash命令行中进行操作:
 psql -U postgres
 select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;
 -----------+---------
  postgres | 7017 kB
  template0 | 7809 kB
  template1 | 7953 kB
  ttrss     | 17 MB
 (4 rows)
 ​

清理过后占用17MB,真的离谱。

参考文章

https://www.cnblogs.com/tiandi/p/16585681.html

http://www.65535.fun/?p=746

https://www.jianshu.com/p/2534adc5c8b7

https://medium.com/alberthg-docker-notes/docker%E7%AD%86%E8%A8%98-%E9%80%B2%E5%85%A5container-%E5%BB%BA%E7%AB%8B%E4%B8%A6%E6%93%8D%E4%BD%9C-postgresql-container-d221ba39aaec

退出移动版