恢复discourse论坛数据

提升论坛性能:实操将Discourse迁移到新服务器完整流程和优化

详细记录实操将discourse迁移到新服务器上的完整流程,并优化app.yml文件提升论坛速度

引言

最近论坛访问速度变慢,一看内存占用,剩余100M可用内存。为了提升速度,买了一台高性能的ARM机器,将Discourse论坛迁移到这个新服务器上。本文将详细记录整个迁移过程,希望能帮助遇到类似需求的朋友。此文章是我在迁移论坛时一步一步记录的💕

简单描述下整个过程的思路:

  1. 备份旧服务器上的数据和配置文件
  2. 传输文件到新服务器上
  3. 构建新容器
  4. 恢复数据

是不是很简单?那么,开整吧!

环境

旧服务器配置:

  • CPU: 2核
  • 内存: 4GB
  • 架构:x86
  • SWAP:2G
  • 系统: Ubuntu 22.04
  • Discourse版本: 3.4.0.beta3-dev

新服务器配置:

  • CPU: 3核
  • 内存: 18GB
  • 架构:ARM
  • 系统: Debian 12
  • 仅配置SSH

旧服务器

数据备份

登录到旧服务器上执行备份,备份文件会保存在/var/discourse/shared/standalone/backups/default目录下:

cd /var/discourse
./launcher enter app    #进入论坛容器
discourse backup        #备份论坛数据
discourse备份

稍等,可以看见绿色的提示备份成功,最后一行显示备份文件的位置。

discourse备份成功

将文件传输到新主机

将备份文件传输到新主机,容器内可以使用scp传输。如果需要下载到本地,先使用exit命令退出容器再使用docker cp 把容器内的内容copy到主机上。

Docker cp文件
#docker cp 语法
#docker cp [OPTIONS] 容器名:容器路径 主机路径
#docker cp app:/var/www/discourse/public/backups/default/discourse-2024-11-06-092317-v20241022022326.tar.gz /root/

这里我使用scp将备份文件传输到新主机,可以看见传输速度还挺快。

#scp 语法
#scp [options] source_file username@hostname:target_path
#scp /var/www/discourse/public/backups/default/discourse-2024-11-06-092317-v20241022022326.tar.gz [email protected]:/root/
使用scp传输文件

还是一样,将论坛的配置文件app.yml也传过去。

使用scp传输app.yml文件

至此,旧服务器操作已完成。

新服务器

构建新容器

OK,接下来登录到新服务器上构建新容器,执行下面的命令(具体细节参考:在独立环境和Nginx的环境中部署搭建Discourse论坛 | BOBO Blog | 和nginx共存

如果服务器是国内的话,可能会执行失败,需要配置代理环境(参考解决Docker国内无法拉取镜像(附Discourse使用阿里云仓库更新、安装教程) | BOBO Blog

sudo -s 
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
mv /root/app.yml ./containers/app.yml     #将配置文件移动到对应目录
./launcher rebuild app                    #重构discourse
构建新的discourse论坛

构建的过程大概不到十分钟。这个时候就应该去添一杯热水☃️

恢复数据

🆗喝了一杯热水把手搓热了继续。可以看见容器起来了,接下来将备份包拷贝到新容器中,不过遇见一个问题,提示没有这个文件夹

恢复discourse论坛数据

进入容器查看这个文件不存在,需要创建文件夹,再copy,并且必须复制到这个文件夹中,否则会恢复失败。实测,需要注意这个点。所以完整的命令为:

./launcher enter app     #进入容器
mkdir ./public/backups/default
exit   #退出容器
docker cp /root/discourse-2024-11-06-092317-v20241022022326.tar.gz app:/var/www/discourse/public/backups/default/      #将备份数据copy到容器内
./launcher enter app
discourse enable_restore    #开启恢复数据
discourse restore discourse-2024-11-06-092317-v20241022022326.tar.gz    #执行恢复数据
恢复discourse论坛数据

完了后你就可以看见绿色的Success了。提示你Restore done.

退出容器,重建就迁移成功!

exit
./launcher rebuild app

优化配置,提示性能

文章最后,附上一些配置文件app.yml可以优化的地方,通过修改这些值,可以提示你的论坛运行速度。

优化 PostgreSQL 数据库配置

调整 db_shared_buffers:建议根据服务器内存进行配置。如果服务器内存是 8GB,则设为 2048MB。若内存为 16GB,可以增加到 4096MB:

params: db_shared_buffers: "4096MB"

启用 db_work_mem:提升查询性能,将注释取消,并根据需要调整大小(如 40MB)。如果流量大,查询密集度高,服务器内存充足,可以适当增大。

params: db_work_mem: "40MB" # 或更大,比如64MB

也可以在后面接着添加以下参数优化

db_maintenance_work_mem: "512MB" 
db_effective_cache_size: "12GB" # 设置为总内存的75%左右 
db_random_page_cost: "1.1" # 如果使用SSD,建议使用此值

配置 UNICORN_WORKERS

UNICORN_WORKERS 决定了 Discourse 处理并发请求的能力,合理配置能客观的提升论坛运行速度,建议设置为 (CPU核心数 * 2) + 1。如服务器有 4 核,设置为 9:

env:
  UNICORN_WORKERS: 9

内存:每个 worker 约占用 200-300MB 内存,因此需要确保服务器有足够内存来支持设定的 worker 数量。对于内存较低的小机,适当减少 worker 数量。

结语

本次迁移和优化,不仅让论坛在新服务器上顺利运行,还通过优化配置文件显著提升论坛的性能与稳定性。希望这篇文章对你在将Discourse迁移到新服务器有帮助,如果你有任何问题或需要进一步的帮助,欢迎留言或者论坛交流学习:bbs.soulcloser.com。如果这篇文章对你有帮助,可以把文章链接(https://www.soulcloser.com/4528)分享给需要的人。

版权声明 © 2024 — Now BOBO BLOG:原创文章受著作权法保护,请尊重他人劳动成果。未经作者书面允许,不得以任何形式复制其内容、摘编、转载,侵权必究。

订阅评论
提醒
guest
0 评论
最新
最旧 最多投票
内联反馈
查看所有评论
error: 对于文章内容被小人恶意复制,现在已经关闭复制功能。如需复制文章内代码,请点击Exteran(新窗口打开)