需要迁移:代码部分、数据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 mimicivJ=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(*)进行精确计算,发现所有表的行数都是一样的