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

news/2025/9/23 11:43:20/文章来源:https://www.cnblogs.com/hxlasky/p/19106902

环境:
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.mzph.cn/news/912418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产化Excel处理组件Spire.XLS教程:Java在 Excel 表格中轻松添加下标

当 Excel 表格中包含化学式、统计脚注或科学数据时,往往需要使用下标来表示。但是,Microsoft Excel 自带的下标功能操作比较繁琐,而且也不支持批量应用,手动操作通常需要花费大量的时间。 基于此,本篇指南将介绍如…

tips图解复杂数组、指针声明

顺转法(顺时针旋转)带你带你看复杂数组和指针 int (*func_ptr_arr[5])();int* ((ptr_to_func)())();int ((arr[2])())[10];int (((*func_returning_ptr)())[4])();int (*((ptr_to_func2)())[2][3])();int* (**(*ptr…

北京市保障房建设投资中心网站瘫痪微信网页设计总结

介于直接使用源码编译安装 QT 耗时较长,而且需要手动编写脚本进行编译,难度较大,这里选择直接以图形化界面的方式安装 QT 。 目录 1、下载 QT 安装包 2、安装 QT 3、添加环境变量 4、cmake 引入 QT 库 5、Failed to find “GL/gl.h“ in…

网站免备案阜新市项目建设网站

EAK厚膜高功率片式电阻器和氮化铝片式端接非常适合大多数需要在小尺寸封装中实现高导热性的应用。AlN 是 BeO 的理想替代品,具有高功耗且对环境或健康无危害。厚膜技术以非常实惠的价格提供稳定的电阻元件。 高稳定性厚膜电阻元件 AlN衬底材料 标准电阻范围为 10Ω…

成都设计网站建设服饰网站建设规划书

服务器数据恢复环境: 服务器面板上的硬盘指示灯显示黄色是一种警告,提示指示灯对应的服务器硬盘已经被服务器识别出存在故障,硬盘即将下线。如果出现这种情况,建议服务器管理员/运维人员及时用完好的硬盘替换显示黄色指示灯对应的…

专业的网站设计制作小学网站asp

一、引言 在工作的时候我们有时候会自己创建项目Demo来实现一些功能,但是又不想把自己的Demo代码放到公司的仓库代码平台(gitee)中管理,于是就是想自己放到自己的Gitee中管理,于是就需要配置Git多用户。 本文将配置分别…

北滘 网站建设定制网站对公司有什么好处

由于各种原因,行业供应链的数字化转型可能充满挑战。然而,最根本的原因之一是供应链本身固有的复杂性和碎片化。以下是造成这一困难的一些关键因素: 1.缺乏标准化:供应链通常涉及多个组织、系统和流程,这些组织、系统…

高端网站设计定制公司福州公司做网站

1.启动App后: 判断->蓝牙是否打开(所有功能必须在打牙打开的情况下才能用) 已打开: 启动代码中的蓝牙通讯Service 未打开: 发布 打开蓝牙意图(系统),根据Activity返回进场操作 打开成功,启动代码中的蓝牙通讯Service 用户点back或失败 退出App 2.蓝牙…

通过perl或awk实现剪切功能

我有如下文件,我想将第二行的数据,移动到文件的最后一行,如何实现? # cat 1.txt open LOG,">>./a.log"; print LOG "hahh,adfa,adfad"; close LOG;这里我给出了两种方式:AWK和perl语言…

java列队多种实现方式,

在Java中,队列(Queue)是一种常用的数据结构,遵循FIFO(先进先出)原则。Java提供了多种队列实现方式,适用于不同的场景。以下是几种常见的队列实现方式:LinkedList实现 LinkedList实现了Queue接口,可以作为队列…

自定义属性编辑器

自定义属性编辑器需求:将Customer中address属性的值赋值给Address类中的每一个属性 package com.atguigu.selfEditor;public class Address {private String province;private String city;private String town;publi…

Ashampoo Music Studio 12.0.3 音频编辑处理

描述 Ashampoo Music Studio是一个表现良好和强大的工具。它是音频编辑、设计师、创作者和制作人的最爱。该软件是一个集成了视频提取、录制和格式转换的多功能音频处理工具。最新版本还包括创建、编辑和数字管理音乐收…

公司网站优化方案财务软件排行榜前十名

FineReport是一款利用什么语言开发的报表工具? FineReport是一款基于Java语言开发的报表工具。Java是一种广泛使用的编程语言,特别适合于跨平台的软件开发。FineReport利用Java语言的诸多优势,如稳定性、安全性、可移植性和强大的网络功能&a…

建网站html5国外推广网站有什么

在 JavaScript 中,函数内部的 this 关键字是一个特殊的对象,它的值取决于函数被调用的方式。this 可以指向不同的对象,因此在不同的场景中它会有不同的含义。下面是一些常见的场景以及 this 的指向: 全局作用域:当函数…

php网站建设程序模块化wordpress企业主题

WatchBird: 新一代纯PHP防火墙 工具安装 广大研究人员可以使用下列命令直接将项目源码克隆至本地 git clone https://github.com/leohearts/awd-watchbird.git工具部署 1.进入下载好的文件夹目录 2.编译waf.c生成.so文件,参考命令:gcc waf.c -shared -fPIC -o waf.so 3.将w…

河北省招标投标公共服务平台河北网站搜索排名优化方案

1、先在Jenkins安装插件Gitlab Hook Plugin 和Build Authorization Token Root Plugin;2.插件安装完成后在任务里添加token3、在gitlab上添加钩子4、点击测试钩子或push代码再看Jenkins已经在构建了就说明成功了(也可以在浏览器直接执行这个URL&#xff…

网站 内容 营销网站建设骗子公司

7.9 额外实现 7.9.1 任务补偿机制 问题:如果有线程抢占了某个视频的处理任务,如果线程处理过程中挂掉了,该视频的状态将会一直是处理中,其它线程将无法处理,这个问题需要用补偿机制。 单独启动一个任务找到待处理任…

怎么制作网站教程视频广州定制网站开发

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象。要添加System.Web.Extensions.dll的引用。该类位于System.Web.Script.Serialization命…

上海h5网站建设脑洞大开的创意设计

本项目以Springboot 2.7.11和vue2做参考示例 第一步 展示前后端代码的成品 前端Vue 后端Java 项目写完后,差不多就是这个样子,仅供参考! 第二步 开始打包前后端项目 前端打包的方式有以下几种: 方法1: #直接打包&#xff0…

汽贸公司网站建设抖音代运营介绍

HTTP协议定义了多种请求方法,用于不同的操作。最常见的有 GET、POST 和 PUT。 GET:GET 是最常用的方法,通常用于请求服务器发送某个资源。GET 请求只通过 URL 传送数据,数据信息会附在 URL 之后,以参数的形式附加。由于这种传送方式的限制,GET 请求的数据量较小,且安全性…