当前位置: 首页 > news >正文

langfuse使用的postgresql异机备份和恢复(docker)并进行langfuse版本升级

环境:
OS:Centos 7
pg:16.4
langfuse旧版本:V2.70.1
langfuse新版本:V3.110
原langfuse(v2)机器:192.168.1.52
新langfuse机器(v3):192.168.1.135

 

1.新机器安装pg并启动(非docker)
这一步的目的是进行pg的原库备份后,异机恢复,然后docker pg使用恢复出来的data目录进行启动
https://www.cnblogs.com/hxlasky/p/18548402

[root@localhost ~]# su - postgres
[postgres@localhost local]$ pg_ctl start -D /home/middle/pg16/data -l /home/middle/pg16/log/pg_server.log
[postgres@localhost local]$ pg_ctl stop -D /home/middle/pg16/data -l /home/middle/pg16log/pg_server.log

尝试登录
[postgres@host135 ~]$ psql -h localhost -U postgres -d postgres
psql (16.4)
Type "help" for help.

postgres=#

 

 

2.源库进行备份
源库可以在非归档模式(#archive_mode = off)
export PGPASSWORD=postgres
mkdir -p /home/middle/pgbak/basebackup/tmpbak
/opt/pg16/bin/pg_basebackup -D "/home/middle/pgbak/basebackup/tmpbak" -Ft -Pv -U postgres -h 192.168.1.52 -p5432


查看备份目录下的文件
[yeemiao@middle ~]$ ls -al /home/middle/pgbak/basebackup/tmpbak
总用量 18366264
drwxrwxr-x 2 yeemiao yeemiao 63 9月 23 09:54 .
drwxr-xr-x 12 yeemiao yeemiao 210 9月 23 09:47 ..
-rw------- 1 yeemiao yeemiao 183605 9月 23 09:54 backup_manifest
-rw------- 1 yeemiao yeemiao 18790088192 9月 23 09:54 base.tar
-rw------- 1 yeemiao yeemiao 16779264 9月 23 09:54 pg_wal.tar


3.拷贝备份文件到目的机器
scp -r -p /home/middle/pgbak/basebackup/tmpbak/* root@192.168.1.135:/tmp/pgtmp/

目的目录不存在的需要提前创建
mkdir /tmp/pgtmp/


3.恢复
停掉目的机器的数据库
su - postgres
[postgres@host135 data]$ pg_ctl stop -D /home/middle/pg16/data -l /home/middle/pg16/log/pg_server.log

 

4.删除data目录并创建空的data目录
[postgres@host135 data]$ cd /home/middle/pg16
[postgres@host135 pg16]$ mv data bakdata
[postgres@host135 pg16]$ mkdir data

 

5.创建归档目录
su - postgres
mkdir -p /home/middle/pg16/archivelog

 

6.将备份tar文件解压到数据目录
目前root账号下面操作的,后面需要记得修改权限
base.tar文件解压到data目录,pg_wal.tar解压到归档目录
[root@host135 ~]#tar -xvf /tmp/pgtmp/base.tar -C /home/middle/pg16/data ##解压数据目录,数据量大这个解压需要些时间
[root@host135 ~]#tar -xvf /tmp/pgtmp/pg_wal.tar -C /home/middle/pg16/archivelog/ ##源库在非归档模式,备份时会产生一个日志

 

7.修改目录权限
[root@host135 pg16]# cd /home/middle/pg16
[root@host135 pg16]# chown -R postgres:postgres ./data
[root@host135 pg16]# chown -R postgres:postgres ./archivelog


8.修改配置文件
su - postgres
vi /home/middle/pg16/data/postgresql.conf 修改如下参数

restore_command = 'cp /home/middle/pg16/archivelog/%f %p'
recovery_target_timeline = 'latest'


9.生成recovery.signal标识文件
[postgres@host135 data]$ cd /home/middle/pg16/data
[postgres@host135 data]$ touch recovery.signal


10.启动数据库
su - postgres
[postgres@host135 data]$ pg_ctl start -D /home/middle/pg16/data -l /home/middle/pg16/log/pg_server.log

报错误:
2025-09-23 10:10:17.428 CST [14983] LOG: database system is shut down
2025-09-23 10:34:09.749 CST [2923] FATAL: data directory "/home/middle/pg16/data" has invalid permissions
2025-09-23 10:34:09.749 CST [2923] DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

解决办法:
su - root
[root@host134 ~]# chmod 0700 /home/middle/pg16/data

再次启动
[postgres@host135 data]$ pg_ctl start -D /home/middle/pg16/data -l /home/middle/pg16/log/pg_server.log

启动完成后上面步骤创建的 recovery.signal 文件会自动删除掉
[postgres@host135 data]$ ls -al *recovery.signal*
ls: cannot access *recovery.signal*: No such file or directory
[postgres@host135 data]$ pwd
/home/middle/pg16/data

 

11.登录查看
[postgres@host135 data]$export PGPASSWORD=postgres
[postgres@host135 data]$ psql -h localhost -U postgres -p5432
WARNING: database "postgres" has a collation version mismatch
DETAIL: The database was created using collation version 2.36, but the operating system provides version 2.17.
HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE postgres REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.
psql (16.4)

根据提示执行如下命令:
reindex database postgres; ##数据量大的话耗时有点久
postgres=# alter database postgres refresh collation version;
NOTICE: changing version from 2.36 to 2.17
ALTER DATABASE

再次登录查看
[postgres@host135 data]$ psql -h localhost -U postgres -p5432
psql (16.4)
Type "help" for help.

查看原来数据是否恢复
postgres=# select count(1) from users;
count
-------
27
(1 row)

############################################################langfuse v3部署#######################################
1.停掉当前的pg数据库
su - postgres
pg_ctl stop -D /home/middle/pg16/data -l /home/middle/pg16/log/pg_server.log

 

2.启动v3版本,确保v3能正常运行
[root@host135 langfuse]# cd /home/middle/langfuse/langfuse
[root@host135 langfuse]# docker compose up -d

各组件日志查看
docker compose logs minio
docker compose logs minio


3停掉v3版本
[root@kvm-181 langfuse]# cd /home/middle/langfuse/langfuse
[root@kvm-181 langfuse]# docker compose down

 

4.删除之前部署的各中间数据目录
rm -rf /home/middle/langfuse/clickhouse/data/*
rm -rf /home/middle/langfuse/clickhouse/logs/*
rm -rf /home/middle/langfuse/minio_data/*
rm -rf /home/middle/langfuse/pgdata/*

 

5.拷贝上面恢复的pg到v3
cp -r -p /home/middle/pg16/data/* /home/middle/langfuse/pgdata/

查看拷贝过去后的文件权限
[root@host135 pgdata]# ls -al
total 68
drwx------ 19 polkitd root 4096 Sep 23 10:59 .
drwxrwxr-x 6 root root 72 Sep 22 13:40 ..
-rw------- 1 postgres postgres 229 Sep 23 09:47 backup_label.old
drwx------ 5 postgres postgres 33 Sep 11 2024 base
drwx------ 2 postgres postgres 4096 Sep 23 10:37 global
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_commit_ts
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_dynshmem
-rw------- 1 postgres postgres 5811 Nov 18 2024 pg_hba.conf
-rw------- 1 postgres postgres 2640 Aug 14 2024 pg_ident.conf
drwx------ 4 postgres postgres 68 Sep 23 10:40 pg_logical
drwx------ 4 postgres postgres 36 Aug 14 2024 pg_multixact
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_notify
drwx------ 2 postgres postgres 6 Sep 23 09:47 pg_replslot
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_serial
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_snapshots
drwx------ 2 postgres postgres 25 Sep 23 10:40 pg_stat
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_stat_tmp
drwx------ 2 postgres postgres 18 Sep 23 10:35 pg_subtrans
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_tblspc
drwx------ 2 postgres postgres 6 Aug 14 2024 pg_twophase
-rw------- 1 postgres postgres 3 Aug 14 2024 PG_VERSION
drwx------ 3 postgres postgres 116 Sep 23 10:35 pg_wal
drwx------ 2 postgres postgres 90 Sep 16 11:15 pg_xact
-rw------- 1 postgres postgres 88 Aug 14 2024 postgresql.auto.conf
-rw------- 1 postgres postgres 29868 Sep 23 10:33 postgresql.conf
-rw------- 1 postgres postgres 53 Sep 23 10:35 postmaster.opts
-rw------- 1 postgres postgres 0 Sep 23 09:47 tablespace_map.old


6.去掉之前配置的参照
vi /home/middle/pg16/data/postgresql.conf 修改如下参数

##restore_command = 'cp /home/middle/pg16/archivelog/%f %p'
##recovery_target_timeline = 'latest'

 

7.V3版本重新部署
登录v3版本服务器
[root@kvm-181 langfuse]# cd /home/middle/langfuse/langfuse
[root@kvm-181 langfuse]# docker compose up -d

 

8.查看升级情况
[root@kvm-181 langfuse]# pwd
/home/middle/langfuse/langfuse
[root@kvm-181 langfuse]# docker compose logs langfuse-web
langfuse-web-1 | 20/u analytics_observations (1.385041182s)
langfuse-web-1 | 21/u analytics_scores (1.339919883s)
langfuse-web-1 | 22/u dataset_run_items (1.430643452s)
langfuse-web-1 | 23/u traces_aggregating_merge_trees (2.032418303s)
langfuse-web-1 | 24/u dataset_run_items (1.951104292s)
langfuse-web-1 | 25/u add_observations_metadata_indexes (2.125521288s)
langfuse-web-1 | 26/u add_trace_id_index (2.210265196s)
langfuse-web-1 | ▲ Next.js 15.5.2
langfuse-web-1 | - Local: http://43c1ba886511:3000
langfuse-web-1 | - Network: http://43c1ba886511:3000
langfuse-web-1 |
langfuse-web-1 | ? Starting...
langfuse-web-1 | Running init scripts...
langfuse-web-1 | ? Ready in 46.4s

 

9.看情况是否需要修改pg参数
注意这里修改了,后面数据迁移过来的时候是整个pgdata目录迁移的,迁移过来后也需要进行修改
9.1.修改pg参数
vi /home/middle/langfuse/pgdata/postgresql.conf

max_connections=1000 #修改最大链接数
##修改时区(已经是如下值的情况下不需要修改)
log_timezone = 'Asia/Shanghai'
timezone = 'Asia/Shanghai'

原来的
log_timezone = 'Etc/UTC'
timezone = 'Etc/UTC'

9.2.修改配置文件pg_hba.cnf
需要修改pg_hba.cnf
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host replication all 172.17.0.0/16 md5


9.3.重启
cd /home/middle/langfuse/langfuse/
docker compose stop
docker compose start

 

http://www.hskmm.com/?act=detail&tid=14524

相关文章:

  • 国产化Excel处理组件Spire.XLS教程:Java在 Excel 表格中轻松添加下标
  • tips图解复杂数组、指针声明
  • 通过perl或awk实现剪切功能
  • java列队多种实现方式,
  • Ashampoo Music Studio 12.0.3 音频编辑处理
  • Gitee:本土化代码托管平台如何重塑中国开发者协作生态
  • WEB项目引入druid监控配置
  • Computer Graphics Tutorial
  • CF1874(CF Round 901) 总结
  • 2. Spring AI 快速入门使用 - Rainbow
  • PyCharm 2025.1安装包下载与安装教程
  • 阿里将发布多模态模型 Qwen3-Omni,主打多语言与复杂推理;DeepvBrowser 上线 AI 语音浏览器丨日报
  • Word文档内容批量替换脚本 - wanghongwei
  • VMware ESXi 磁盘置备类型详解
  • EF 数据迁移生成sql脚本
  • HWiNFO 硬件信息检测工具下载与安装教程
  • 第七章 手写数字识别V1
  • 西电PCB设计指南1~2章学习笔记
  • 1. 大模型的选择详细分析 - Rainbow
  • 云计算实践部署笔记
  • [eJOI 2024] 奶酪交易 / Cheese
  • 逆向分析之switch语句
  • 批量查询设计桩号方法及文件格式
  • 搭建Python的运行开发环境
  • 【HBase 原理部署安装 01】
  • 打破数据壁垒,DMS Data Agent 开启智能分析之旅
  • Ruby IPAddr正则表达式拒绝服务漏洞分析与修复
  • 模型驱动的 AI Agent架构:亚马逊云科技的Strands框架技术深度解析
  • cache支持的软件操作
  • PHP 静态分析工具实战 PHPStan 和 Psalm 完全指南