云计算百科
云计算领域专业知识百科平台

服务器迁移 | psql大批量数据以及navicat重新连接、conda 环境迁移

需要迁移:代码部分、数据psql部分、conda环境部分

一、代码部分

rsync -av –progress 源目录 用户名@目标IP地址:目标目录

迁移sepsis-benchmark,输入完整的yes,输入SSH密码

二、conda环境部分

1. 安装conda

conda版本:conda –version                        conda 25.9.1

在新的服务器上安装相应conda,可以直接把Miniconda3-latest-Linux-x86_64.sh脚本直接传到新的服务器上,或者从官方网站下载

# 下载conda 25.9.1对应的Miniconda3安装包(x86_64架构)
wget https://repo.anaconda.com/miniconda/Miniconda3-2025.05-1-Linux-x86_64.sh

# 赋予脚本执行权限
chmod +x Miniconda3-2025.05-1-Linux-x86_64.sh

# 执行安装(bash而非sh,避免兼容性问题)
bash Miniconda3-2025.05-1-Linux-x86_64.sh

遇到问题:新服务器是CentOS 7系统,且 GLIBC 版本为 2.17,不支持2025 年新版 Miniconda(依赖 GLIBC 2.28)

wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh
bash Miniconda3-py39_4.12.0-Linux-x86_64.sh
安装完
source ~/.bashrc
conda –version

安装后的版本是conda 4.12.0

2. 查看conda所有虚拟环境

指令: conda info –envs

(base) @ta:~$ conda info –envs

# conda environments:
#
# * -> active
# + -> frozen
base * /home/zjx/miniconda3
sepsis-bench /home/zjx/miniconda3/envs/sepsis-bench
sepsis-db /home/zjx/miniconda3/envs/sepsis-db

3. 查看每个环境下面安装的依赖及其版本

查看当前激活环境的所有依赖。先激活目标环境(如conda activate pytorch_env),再执行:

conda list

# packages in environment at /home/zjx/miniconda3/envs/sepsis-db:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
bzip2 1.0.8 h5eee18b_6
ca-certificates 2025.11.12 hbd8a1cb_0 conda-forge
expat 2.7.3 h3385a95_0
icu 73.2 h59595ed_0 conda-forge
keyutils 1.6.3 hb9d3cd8_0 conda-forge
krb5 1.21.3 h659f571_0 conda-forge
ld_impl_linux-64 2.44 h153f514_2
libedit 3.1.20250104 pl5321h7949ede_0 conda-forge
libffi 3.4.4 h6a678d5_1
libgcc 15.2.0 h69a1729_7
libgcc-ng 15.2.0 h166f726_7
libgomp 15.2.0 h4751f2c_7
libnsl 2.0.0 h5eee18b_0
libpq 14.20 hb4b8bd4_0 conda-forge
libstdcxx 15.2.0 h39759b7_7
libstdcxx-ng 15.2.0 hc03a8fd_7
libuuid 1.41.5 h5eee18b_0
libxcb 1.17.0 h9b100fa_0
libxml2 2.13.9 h2c43086_0
libzlib 1.3.1 hb25bd0a_0
ncurses 6.5 h7934f7d_0
openssl 3.6.0 h26f9b46_0 conda-forge
pip 25.3 pyhc872135_0
postgresql 14.20 h7a4e8bd_0 conda-forge
pthread-stubs 0.3 h0ce48e5_1
python 3.10.19 h6fa692b_0
readline 8.3 hc2a1206_0
setuptools 80.9.0 py310h06a4308_0
sqlite 3.51.0 h2a70700_0
tk 8.6.15 h54e0aa7_0
tzcode 2025b hb9d3cd8_0 conda-forge
tzdata 2025b h04d1e81_0
wheel 0.45.1 py310h06a4308_0
xorg-libx11 1.8.12 h9b100fa_1
xorg-libxau 1.0.12 h9b100fa_0
xorg-libxdmcp 1.1.5 h9b100fa_0
xorg-xorgproto 2024.1 h5eee18b_1
xz 5.6.4 h5eee18b_1
zlib 1.3.1 hb25bd0a_0

# packages in environment at /home/zjx/miniconda3/envs/sepsis-bench:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
aiohappyeyeballs 2.6.1 pypi_0 pypi
aiohttp 3.13.2 pypi_0 pypi
aiosignal 1.4.0 pypi_0 pypi
annotated-doc 0.0.4 pypi_0 pypi
annotated-types 0.7.0 pypi_0 pypi
anthropic 0.71.0 pypi_0 pypi
anyio 4.12.0 pypi_0 pypi
apache-tvm-ffi 0.1.4 pypi_0 pypi
astor 0.8.1 pypi_0 pypi
attrs 25.4.0 pypi_0 pypi
aws-c-auth 0.9.1 h48c9088_3 conda-forge
aws-c-cal 0.9.2 he7b75e1_1 conda-forge
aws-c-common 0.12.4 hb03c661_0 conda-forge
aws-c-compression 0.3.1 h92c474e_6 conda-forge
aws-c-event-stream 0.5.6 h82d11aa_3 conda-forge
aws-c-http 0.10.4 h94feff3_3 conda-forge
aws-c-io 0.22.0 h57f3b0d_1 conda-forge
aws-c-mqtt 0.13.3 h2b1cf8c_6 conda-forge
aws-c-s3 0.8.6 h4e5ac4b_5 conda-forge
aws-c-sdkutils 0.2.4 h92c474e_1 conda-forge
aws-checksums 0.2.7 h92c474e_2 conda-forge
aws-crt-cpp 0.34.4 h60c762c_0 conda-forge
aws-sdk-cpp 1.11.606 h32384e2_4 conda-forge
azure-core-cpp 1.16.0 h3a458e0_1 conda-forge
azure-identity-cpp 1.12.0 ha729027_0 conda-forge
azure-storage-blobs-cpp 12.14.0 hb1c9500_1 conda-forge
azure-storage-common-cpp 12.10.0 hebae86a_2 conda-forge
azure-storage-files-datalake-cpp 12.12.0 h8b27e44_3 conda-forge
blake3 1.0.8 pypi_0 pypi
bzip2 1.0.8 h5eee18b_6
c-ares 1.34.6 hb03c661_0 conda-forge
ca-certificates 2025.12.2 h06a4308_0
cachetools 6.2.2 pypi_0 pypi
cbor2 5.7.1 pypi_0 pypi
certifi 2025.11.12 pypi_0 pypi
charset-normalizer 3.4.4 pypi_0 pypi
click 8.2.1 pypi_0 pypi
cloudpickle 3.1.2 pypi_0 pypi
compressed-tensors 0.12.2 pypi_0 pypi
contourpy 1.3.3 pypi_0 pypi
cuda-bindings 13.1.0 pypi_0 pypi
cuda-pathfinder 1.3.3 pypi_0 pypi
cuda-python 13.1.0 pypi_0 pypi
cupy-cuda12x 13.6.0 pypi_0 pypi
cycler 0.12.1 pypi_0 pypi
depyf 0.20.0 pypi_0 pypi
dill 0.4.0 pypi_0 pypi
diskcache 5.6.3 pypi_0 pypi
distro 1.9.0 pypi_0 pypi
dnspython 2.8.0 pypi_0 pypi
docstring-parser 0.17.0 pypi_0 pypi
einops 0.8.1 pypi_0 pypi
email-validator 2.3.0 pypi_0 pypi
expat 2.7.3 h3385a95_0
fastapi 0.123.9 pypi_0 pypi
fastapi-cli 0.0.16 pypi_0 pypi
fastapi-cloud-cli 0.6.0 pypi_0 pypi
fastar 0.8.0 pypi_0 pypi
fastrlock 0.8.3 pypi_0 pypi
filelock 3.20.0 pypi_0 pypi
flashinfer-python 0.5.3 pypi_0 pypi
fonttools 4.61.0 pypi_0 pypi
frozenlist 1.8.0 pypi_0 pypi
fsspec 2025.12.0 pypi_0 pypi
gflags 2.2.2 h5888daf_1005 conda-forge
gguf 0.17.1 pypi_0 pypi
glog 0.7.1 hbabe93e_0 conda-forge
greenlet 3.3.0 pypi_0 pypi
h11 0.16.0 pypi_0 pypi
hf-xet 1.2.0 pypi_0 pypi
httpcore 1.0.9 pypi_0 pypi
httptools 0.7.1 pypi_0 pypi
httpx 0.28.1 pypi_0 pypi
huggingface-hub 0.36.0 pypi_0 pypi
icu 73.2 h59595ed_0 conda-forge
idna 3.11 pypi_0 pypi
interegular 0.3.3 pypi_0 pypi
jinja2 3.1.6 pypi_0 pypi
jiter 0.12.0 pypi_0 pypi
jmespath 1.0.1 pypi_0 pypi
joblib 1.5.2 pypi_0 pypi
jsonschema 4.25.1 pypi_0 pypi
jsonschema-specifications 2025.9.1 pypi_0 pypi
keyutils 1.6.3 hb9d3cd8_0 conda-forge
kiwisolver 1.4.9 pypi_0 pypi
krb5 1.21.3 h659f571_0 conda-forge
lark 1.2.2 pypi_0 pypi
ld_impl_linux-64 2.44 h153f514_2
libabseil 20250512.1 cxx17_hba17884_0 conda-forge
libarrow 21.0.0 h56a6dad_8_cpu conda-forge
libarrow-acero 21.0.0 h635bf11_8_cpu conda-forge
libarrow-compute 21.0.0 h8c2c5c3_8_cpu conda-forge
libarrow-dataset 21.0.0 h635bf11_8_cpu conda-forge
libarrow-substrait 21.0.0 h3f74fd7_8_cpu conda-forge
libbrotlicommon 1.1.0 hb03c661_4 conda-forge
libbrotlidec 1.1.0 hb03c661_4 conda-forge
libbrotlienc 1.1.0 hb03c661_4 conda-forge
libcrc32c 1.1.2 h9c3ff4c_0 conda-forge
libcurl 8.17.0 h4e3cde8_1 conda-forge
libedit 3.1.20250104 pl5321h7949ede_0 conda-forge
libev 4.33 hd590300_2 conda-forge
libevent 2.1.12 hf998b51_1 conda-forge
libffi 3.4.4 h6a678d5_1
libgcc 15.2.0 h69a1729_7
libgcc-ng 15.2.0 h166f726_7
libgomp 15.2.0 h4751f2c_7
libgoogle-cloud 2.39.0 hdb79228_0 conda-forge
libgoogle-cloud-storage 2.39.0 hdbdcf42_0 conda-forge
libgrpc 1.73.1 h3288cfb_1 conda-forge
libnghttp2 1.67.0 had1ee68_0 conda-forge
libnsl 2.0.0 h5eee18b_0
libopentelemetry-cpp 1.21.0 hb9b0907_1 conda-forge
libopentelemetry-cpp-headers 1.21.0 ha770c72_1 conda-forge
libparquet 21.0.0 h790f06f_8_cpu conda-forge
libprotobuf 6.31.1 h49aed37_4 conda-forge
libre2-11 2025.11.05 h7b12aa8_0 conda-forge
libssh2 1.11.1 hcf80075_0 conda-forge
libstdcxx 15.2.0 h39759b7_7
libstdcxx-ng 15.2.0 hc03a8fd_7
libthrift 0.22.0 h454ac66_1 conda-forge
libutf8proc 2.11.2 hfe17d71_0 conda-forge
libuuid 1.41.5 h5eee18b_0
libxcb 1.17.0 h9b100fa_0
libxml2 2.13.9 h2c43086_0
libzlib 1.3.1 hb25bd0a_0
lightgbm 4.6.0 pypi_0 pypi
llguidance 1.3.0 pypi_0 pypi
llvmlite 0.44.0 pypi_0 pypi
lm-format-enforcer 0.11.3 pypi_0 pypi
loguru 0.7.3 pypi_0 pypi
lz4-c 1.10.0 h5888daf_1 conda-forge
markdown-it-py 4.0.0 pypi_0 pypi
markupsafe 3.0.3 pypi_0 pypi
matplotlib 3.10.7 pypi_0 pypi
mdurl 0.1.2 pypi_0 pypi
mistral-common 1.8.6 pypi_0 pypi
model-hosting-container-standards 0.1.9 pypi_0 pypi
mpmath 1.3.0 pypi_0 pypi
msgpack 1.1.2 pypi_0 pypi
msgspec 0.20.0 pypi_0 pypi
multidict 6.7.0 pypi_0 pypi
ncurses 6.5 h7934f7d_0
networkx 3.6 pypi_0 pypi
ninja 1.13.0 pypi_0 pypi
nlohmann_json 3.12.0 h54a6638_1 conda-forge
numba 0.61.2 pypi_0 pypi
numpy 2.2.6 pypi_0 pypi
nvidia-cublas-cu12 12.8.4.1 pypi_0 pypi
nvidia-cuda-cupti-cu12 12.8.90 pypi_0 pypi
nvidia-cuda-nvrtc-cu12 12.8.93 pypi_0 pypi
nvidia-cuda-runtime-cu12 12.8.90 pypi_0 pypi
nvidia-cudnn-cu12 9.10.2.21 pypi_0 pypi
nvidia-cudnn-frontend 1.16.0 pypi_0 pypi
nvidia-cufft-cu12 11.3.3.83 pypi_0 pypi
nvidia-cufile-cu12 1.13.1.3 pypi_0 pypi
nvidia-curand-cu12 10.3.9.90 pypi_0 pypi
nvidia-cusolver-cu12 11.7.3.90 pypi_0 pypi
nvidia-cusparse-cu12 12.5.8.93 pypi_0 pypi
nvidia-cusparselt-cu12 0.7.1 pypi_0 pypi
nvidia-cutlass-dsl 4.3.2 pypi_0 pypi
nvidia-ml-py 13.580.82 pypi_0 pypi
nvidia-nccl-cu12 2.27.5 pypi_0 pypi
nvidia-nvjitlink-cu12 12.8.93 pypi_0 pypi
nvidia-nvshmem-cu12 3.3.20 pypi_0 pypi
nvidia-nvtx-cu12 12.8.90 pypi_0 pypi
openai 2.9.0 pypi_0 pypi
openai-harmony 0.0.8 pypi_0 pypi
opencv-python-headless 4.12.0.88 pypi_0 pypi
openssl 3.6.0 h26f9b46_0 conda-forge
orc 2.2.1 hd747db4_0 conda-forge
outlines-core 0.2.11 pypi_0 pypi
packaging 25.0 pypi_0 pypi
pandas 2.3.3 pypi_0 pypi
partial-json-parser 0.2.1.1.post7 pypi_0 pypi
pillow 12.0.0 pypi_0 pypi
pip 25.3 pyhc872135_0
prometheus-client 0.23.1 pypi_0 pypi
prometheus-cpp 1.3.0 ha5d0236_0 conda-forge
prometheus-fastapi-instrumentator 7.1.0 pypi_0 pypi
propcache 0.4.1 pypi_0 pypi
protobuf 6.33.1 pypi_0 pypi
psutil 7.1.3 pypi_0 pypi
psycopg2-binary 2.9.11 pypi_0 pypi
pthread-stubs 0.3 h0ce48e5_1
py-cpuinfo 9.0.0 pypi_0 pypi
pyarrow 21.0.0 py311h38be061_1 conda-forge
pyarrow-core 21.0.0 py311h342b5a4_1_cpu conda-forge
pybase64 1.4.2 pypi_0 pypi
pycountry 24.6.1 pypi_0 pypi
pydantic 2.12.5 pypi_0 pypi
pydantic-core 2.41.5 pypi_0 pypi
pydantic-extra-types 2.10.6 pypi_0 pypi
pygments 2.19.2 pypi_0 pypi
pyparsing 3.2.5 pypi_0 pypi
python 3.11.14 h6fa692b_0
python-dateutil 2.9.0.post0 pypi_0 pypi
python-dotenv 1.2.1 pypi_0 pypi
python-json-logger 4.0.0 pypi_0 pypi
python-multipart 0.0.20 pypi_0 pypi
python_abi 3.11 2_cp311 conda-forge
pytz 2025.2 pypi_0 pypi
pyyaml 6.0.3 pypi_0 pypi
pyzmq 27.1.0 pypi_0 pypi
ray 2.52.1 pypi_0 pypi
re2 2025.11.05 h5301d42_0 conda-forge
readline 8.3 hc2a1206_0
referencing 0.37.0 pypi_0 pypi
regex 2025.11.3 pypi_0 pypi
requests 2.32.5 pypi_0 pypi
rich 14.2.0 pypi_0 pypi
rich-toolkit 0.17.0 pypi_0 pypi
rignore 0.7.6 pypi_0 pypi
rpds-py 0.30.0 pypi_0 pypi
s2n 1.5.26 h5ac9029_0 conda-forge
safetensors 0.7.0 pypi_0 pypi
scikit-learn 1.7.2 pypi_0 pypi
scipy 1.16.3 pypi_0 pypi
seaborn 0.13.2 pypi_0 pypi
sentencepiece 0.2.1 pypi_0 pypi
sentry-sdk 2.47.0 pypi_0 pypi
setproctitle 1.3.7 pypi_0 pypi
setuptools 80.9.0 py311h06a4308_0
shellingham 1.5.4 pypi_0 pypi
six 1.17.0 pypi_0 pypi
snappy 1.2.2 h03e3b7b_1 conda-forge
sniffio 1.3.1 pypi_0 pypi
sqlalchemy 2.0.44 pypi_0 pypi
sqlite 3.51.0 h2a70700_0
starlette 0.50.0 pypi_0 pypi
supervisor 4.3.0 pypi_0 pypi
sympy 1.14.0 pypi_0 pypi
tabulate 0.9.0 pypi_0 pypi
threadpoolctl 3.6.0 pypi_0 pypi
tiktoken 0.12.0 pypi_0 pypi
tk 8.6.15 h54e0aa7_0
tokenizers 0.22.1 pypi_0 pypi
torch 2.9.0 pypi_0 pypi
torchaudio 2.9.0 pypi_0 pypi
torchvision 0.24.0 pypi_0 pypi
tqdm 4.67.1 pypi_0 pypi
transformers 4.57.3 pypi_0 pypi
triton 3.5.0 pypi_0 pypi
typer 0.20.0 pypi_0 pypi
typing-extensions 4.15.0 pypi_0 pypi
typing-inspection 0.4.2 pypi_0 pypi
tzdata 2025.2 pypi_0 pypi
urllib3 2.5.0 pypi_0 pypi
uvicorn 0.38.0 pypi_0 pypi
uvloop 0.22.1 pypi_0 pypi
vllm 0.12.0 pypi_0 pypi
watchfiles 1.1.1 pypi_0 pypi
websockets 15.0.1 pypi_0 pypi
wheel 0.45.1 py311h06a4308_0
xgboost 3.1.2 pypi_0 pypi
xgrammar 0.1.27 pypi_0 pypi
xorg-libx11 1.8.12 h9b100fa_1
xorg-libxau 1.0.12 h9b100fa_0
xorg-libxdmcp 1.1.5 h9b100fa_0
xorg-xorgproto 2024.1 h5eee18b_1
xz 5.6.4 h5eee18b_1
yarl 1.22.0 pypi_0 pypi
zlib 1.3.1 hb25bd0a_0
zstd 1.5.7 hb78ec9c_6 conda-forge

4. 在新的conda环境安装依赖

sepsis-db

# 1. 创建环境(conda 4.12.0不支持部分新语法,简化命令)
conda create -n sepsis-db python=3.10.19 -y

# 2. 激活环境
conda activate sepsis-db

因为原先运行太慢,所以配置镜像源,

rm -f ~/.condarc
cat > ~/.condarc << 'EOF'
channels:
– conda-forge
– defaults
show_channel_urls: true
channel_priority: strict

default_channels:
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
EOF

清除缓存
conda clean -i -y

安装sepsis-db

conda create -n sepsis-db -y python=3.10.19
conda activate sepsis-db
conda install -y -c conda-forge postgresql=14 libpq=14
psql –version
pg_dump –version
pg_restore –version

旧服务器导出(在旧服务器执行)

conda activate sepsis-db conda list –explicit > sepsis-db-explicit.txt

粘贴到新的服务器上面,运行下面的

conda create -n sepsis-db –file /home/WJX/sepsis-db-explicit.txt -y

成功

sepsis-bench

CUDA Version: 12.4

第一步:创建基础环境(解决 CentOS 7 兼容性)
因为新服务器是 CentOS 7 (glibc 2.17),而 vllm 和 pytorch 等现代 AI 库通常需要更新的系统库。我们需要利用 Conda 安装现代化的编译器和系统库来“骗”过 Python,否则你会遇到 GLIBCXX_3.4.29 not found 这里的报错。

# 1. 创建新环境(指定 Python 3.11,和你旧环境一致)
conda create -n sepsis-bench python=3.11 -y

# 2. 激活环境
conda activate sepsis-bench

# 3. 【关键】安装现代编译器和系统库
# 这步能解决 CentOS 7 上跑不动新版 PyTorch/vLLM 的大部分问题
conda install -c conda-forge gcc_linux-64 gxx_linux-64 sysroot_linux-64=2.17 libstdcxx-ng -y

第二步:安装 PyTorch (适配 CUDA 12.4)
新服务器的驱动支持 CUDA 12.4。PyTorch 官方目前最新的稳定版完美支持 CUDA 12.4。不要去强求列表里的 torch 2.9.0,那可能是个错误版本号或内部版本。 我们安装最新的稳定版即可。

# 使用 pip 安装支持 CUDA 12.4 的 PyTorch
pip install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu124

这里安装numpy的时候报错

你使用了 –index-url https://download.pytorch.org/whl/cu124。
这个参数的意思是:“Pip,你只能去 PyTorch 的这个网址找包,不许去官方的 PyPI (pypi.org) 找。”
然而:
PyTorch 依赖 numpy。
PyTorch 的这个网址里虽然有 torch,但没有构建 numpy 所需的编译工具(如 meson-python)。
Pip 找不到现成的 numpy 轮子(Wheel),于是试图下载源代码(tar.gz)现场编译。
现场编译需要构建工具,但你又禁止 Pip 去 PyPI 下载构建工具 -> 死循环,报错。
此外,在 CentOS 7 这种老系统上,千万不要让 pip 尝试从源码编译 numpy,那基本是地狱难度。
 

# 安装 numpy, pandas, scipy 等基础库
# -c conda-forge 保证版本够新且兼容
conda install -c conda-forge numpy pandas scipy scikit-learn -y

pip install torch torchvision torchaudio –extra-index-url https://download.pytorch.org/whl/cu124

# 1. 安装 vllm (vllm 依赖很多,pip 会自动去 pypi 找)
pip install vllm

!遇到问题

# 2. 补齐你环境里其他的关键库 (根据你之前的列表)
pip install transformers sentencepiece accelerate outlines-core xgboost lightgbm seaborn matplotlib jupyterlab

遇到问题: Dependency Hell(依赖地狱)。

Pip 没有找到适合你系统的 vLLM 预编译包(Wheel),所以试图下载源代码来编译。
原因:你安装的 PyTorch 是 CUDA 12.4 版,而 vllm 的官方预编译包可能并没有覆盖这个组合,或者是因为你的 Python 版本/系统太老。
ERROR: Could not find a version that satisfies the requirement torch==2.9.1:
这是最离谱的地方:vLLM 的构建脚本(pyproject.toml 或 setup.py)里竟然写死了要求 torch==2.9.1。
真相:PyTorch 目前最新版才到 2.6.0。2.9.1 根本不存在! 这通常意味着你下载的这个 vllm 0.14.1 是一个处于开发中、或者内部测试的版本,或者是 vLLM 官方发包时的一个错误配置。
更糟糕的是,试图在 CentOS 7 上从源码编译 vLLM 几乎是不可能的任务(需要极新的 GCC 和 CUDA Toolkit)。

解决:

pip uninstall torch torchvision torchaudio -y
pip install vllm==0.6.3

三、psql数据部分

在旧的服务器上

mkdir -p ~/pg_backup
# 在旧服务器导出 roles(全局对象)
pg_dumpall -U zjx –globals-only > ~/pg_backup/globals.sql

因为要导出250G的数据,所以开了一个tmux,trans

导出三个库

J=8
pg_dump -U zjx -F d -j $J –no-owner –no-acl -f ~/pg_backup/eicu.dumpdir eicu
pg_dump -U zjx -F d -j $J –no-owner –no-acl -f ~/pg_backup/mimiciii.dumpdir mimiciii
pg_dump -U zjx -F d -j $J –no-owner –no-acl -f ~/pg_backup/mimiciv.dumpdir mimiciv

#导出后确认文件
ls -lh ~/pg_backup

传输到新服务器(断点续传)

在旧服务器:

rsync -av –progress ~/pg_backup/ 用户名@服务器地址:~/pg_backup/

新服务器恢复(你已经有 pg_restore 14.20)

# 先恢复 roles(如果你导出了 globals.sql)
psql -U postgres -f ~/pg_backup/globals.sql

# 创建库
createdb -U postgres eicu
createdb -U postgres mimiciii
createdb -U postgres mimiciv

# 并行恢复
J=8
pg_restore -U postgres -d eicu -j $J ~/pg_backup/eicu.dump
pg_restore -U postgres -d mimiciii -j $J ~/pg_backup/mimiciii.dump
pg_restore -U postgres -d mimiciv -j $J ~/pg_backup/mimiciv.dump

恢复的时候出现问题:

psql(客户端) 和 PostgreSQL(服务端)混淆

你已经拥有的东西: conda 环境里的 psql / pg_dump / pg_restore ✅。

        这些是客户端工具:用来连接到某个正在运行的 PostgreSQL 服务器、导出/导入数据。

你缺的东西–服务端

  • 一个正在运行的 PostgreSQL Server(postgres 进程) 服务端❌

方案 1(你坚持“就在这台机器上做最终库”)

你必须在这台 CentOS7 上启动 PostgreSQL Server。
但 conda-forge 的 server 跑不了,所以只能:

  • 用 defaults channel 安装一个能在 glibc 2.17 跑的 postgres(先试)

  • 或者自己编译 PostgreSQL(更麻烦,但不需管理员)

我建议你先试最简单的(2 分钟能验证):

conda create -n pg-server -y -c defaults –override-channels python=3.10 postgresql=14
conda activate pg-server postgres -V

  • 如果 postgres -V 正常输出版本号 → 你就可以 initdb + pg_ctl start,然后 pg_restore 三库

  • 如果仍然报 GLIBC → 就只能走“源码编译”或换机器

这个方案的问题是没有办法根据源访问postgresql  14

方案2 局部初始化

(sepsis-db) [WJX@localhost ~]$ which initdb
~/miniconda3/envs/sepsis-db/bin/initdb

创建数据存储目录并初始化

mkdir -p /home/WJX/postgres_data
initdb -D /home/WJX/postgres_data

这个也失败,原因是postgres 14.20版本不兼容

方案3 新建一个环境pg_server(最终成功使用)

(base) [WJX@localhost ~]$
conda create -n pg_server -c conda-forge postgresql=14 "sysroot_linux-64=2.17"

指定psql版本和linux版本兼容,Conda 会找兼容的最新版。关键是那个 sysroot 参数。

激活新环境并再次尝试初始化

conda activate pg_server

# 清理掉之前失败生成的空文件夹(如果有)
rm -rf /home/WJX/postgres_data
mkdir -p /home/WJX/postgres_data

# 再次尝试初始化
initdb -D /home/WJX/postgres_data

还是14.20,但是这个可以初始化。

下面的步骤:修改配置 -> 启动服务 -> 创建兼容的账号 -> 执行恢复脚本

第一步:修改配置(端口和 Socket)

为了防止和服务器上其他人冲突,必须改端口和 Socket 路径。

  • 编辑配置文件:

    vim /home/WJX/postgres_data/postgresql.conf

  • 修改两处关键设置(按 i 进入编辑模式,改完按 Esc 输入 :wq 保存退出):

    • 搜索 #port = 5432,改为一个大端口(建议 55432):

      port = 55432

    • 搜索 #unix_socket_directories = '/tmp',改为你的数据目录(这能避免权限报错):

      unix_socket_directories = '/home/WJX/postgres_data'

  • 第二步:启动数据库服务

    使用 pg_ctl 启动服务:

    # 启动命令
    pg_ctl -D /home/WJX/postgres_data -l /home/WJX/postgres_data/logfile start

    检查是否成功:

    # 查看日志最后几行
    tail /home/WJX/postgres_data/logfile

    如果看到 "database system is ready to accept connections",说明服务启动成功了!

    第三步:解决账号问题(关键)

    这里回答你的问题:“我应该用什么用户名登录psql?”

    • 当前数据库里只有一个用户:WJX(超级管理员)。

    # 如果 globals.sql 里包含创建 postgres 用户的语句,这里可能会报错说用户已存在,忽略即可
    # psql -h /home/WJX/postgres_data -p 55432 -U WJX -f ~/pg_backup/globals.sql
    psql -h /home/WJX/postgres_data -p 55432 -U WJX -d postgres -f ~/pg_backup/globals.sql

    createdb -h /home/WJX/postgres_data -p 55432 -U WJX eicu
    createdb -h /home/WJX/postgres_data -p 55432 -U WJX mimiciii
    createdb -h /home/WJX/postgres_data -p 55432 -U WJX mimiciv

    J=8
    # 恢复 eicu
    pg_restore –verbose -h /home/WJX/postgres_data -p 55432 -U WJX -d eicu -j $J ~/pg_backup/eicu.dumpdir

    # 恢复 mimiciii
    pg_restore –verbose -h /home/WJX/postgres_data -p 55432 -U WJX -d mimiciii -j $J ~/pg_backup/mimiciii.dumpdir

    # 恢复 mimiciv
    pg_restore –verbose -h /home/WJX/postgres_data -p 55432 -U WJX -d mimiciv -j $J ~/pg_backup/mimiciv.dumpdir

    四、psql迁移之后数据数量差异对比

    eicu public

    表名新服务器(左)行数旧服务器(右)行数差异(新 – 旧)
    antibiotic 165298 165298 0
    antibiotic_start 55159 55159 0
    micro_culture 72075 72075 0
    micro_culture_v0 16996 16996 0
    pivoted_bg 1464012 1464012 0
    pivoted_gcs 3451788 3451788 0
    pivoted_infusion 1083074 1083074 0
    pivoted_lab 5314618 5316530 -1912
    pivoted_med 5167332 5167440 -108
    pivoted_treatment_vasopressor 78378 78378 0
    pivoted_uo 4088881 4088881 0
    pivoted_vital 21024524 21022052 +2472
    pivoted_weight 501506 501506 0
    suspicion_of_infection 55159 55159 0

    public部分

    表名新服务器(左)行数旧服务器(右)行数差异(新 – 旧)
    admissiondrug 875045 874813 +232
    admissionsdx 626858 626858 0
    allergy 251949 251949 0
    apacheapsvar 171177 171177 0
    apachepatientresult 297064 297064 0
    apachepredvar 171177 171177 0
    careplancareprovider 502765 502765 0
    careplaneol 1433 1433 0
    careplangeneral 3115134 3115018 +116
    careplangoal 504139 504139 0
    careplaninfectiousdisease 8056 8056 0
    customlab 1082 1082 0
    diagnosis 2710874 2710672 +202
    hospital 208 208 0
    infusiondrug 4804137 4803540 +597
    intakeoutput 12038293 12027695 +10598
    lab 3913368 3912352 +1016
    medication 7300272 7303173 -2901
    microlab 16996 16996 0
    note 2253395 2253622 -227
    nurseassessment 15606592 15602306 +4286
    nursecare 8311577 8312081 -504
    nursecharting 151601120 151622032 -20912
    pasthistory 1149180 1149180 0
    patient 200859 200859 0
    physicalexam 9213120 9208279 +4841
    respiratorycare 865381 865381 0
    respiratorycharting 20164408 20166252 -1844
    treatment 3689348 3688745 +603
    vitalaperiodic 25077514 25075074 +2440
    vitalperiodic 146670432 146671648 -1216

    但是实际上,navicat中显示的行数是估计的行数,不是精确的实际行数。

    后面用count(*)进行精确计算,发现所有表的行数都是一样的

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 服务器迁移 | psql大批量数据以及navicat重新连接、conda 环境迁移
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!