<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>FAQ on heyaohua's Blog</title><link>https://blog.heyaohua.com/tags/faq/</link><description>Recent content in FAQ on heyaohua's Blog</description><image><title>heyaohua's Blog</title><url>https://blog.heyaohua.com/og-image.png</url><link>https://blog.heyaohua.com/og-image.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 09 Oct 2025 12:05:00 +0800</lastBuildDate><atom:link href="https://blog.heyaohua.com/tags/faq/index.xml" rel="self" type="application/rss+xml"/><item><title>PostgreSQL Docker 部署常见问题与解决方案</title><link>https://blog.heyaohua.com/posts/2025/10/postgresql-docker-faq/</link><pubDate>Thu, 09 Oct 2025 12:05:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2025/10/postgresql-docker-faq/</guid><description>汇总在使用 Docker 部署 PostgreSQL（含 PostGIS、pgvector、TimescaleDB）过程中常见的问题及可操作的解决方案，涵盖构建、扩展、连接、权限、性能与数据等方面。</description><content:encoded><![CDATA[<p>汇总在使用 Docker 部署 PostgreSQL（含 PostGIS、pgvector、TimescaleDB）过程中常见的问题及可操作的解决方案，涵盖构建、扩展、连接、权限、性能与数据等方面。</p>
<hr>
<h2 id="目录">目录</h2>
<ul>
<li>构建问题</li>
<li>扩展问题</li>
<li>连接问题</li>
<li>权限问题</li>
<li>性能问题</li>
<li>数据问题</li>
<li>调试技巧</li>
<li>预防措施</li>
<li>获取帮助</li>
</ul>
<hr>
<h2 id="构建问题">构建问题</h2>
<h3 id="q1-docker-构建时出现-lsb_release-command-not-found">Q1: Docker 构建时出现 &ldquo;lsb_release: command not found&rdquo;</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>/bin/sh: 1: lsb_release: command not found
</span></span><span style="display:flex;"><span>/bin/sh: 1: apt-key: command not found
</span></span></code></pre></div><p>原因分析：
在 Debian/Ubuntu 基础镜像中，<code>lsb_release</code> 和 <code>apt-key</code> 命令可能不存在或已被弃用。</p>
<p>解决方案：改用从源码编译的方式安装 TimescaleDB：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 不使用包管理器安装，改为源码编译</span>
</span></span><span style="display:flex;"><span>RUN <span style="color:#8be9fd;font-style:italic">cd</span> /tmp <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    git clone https://github.com/timescale/timescaledb.git <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    <span style="color:#8be9fd;font-style:italic">cd</span> timescaledb <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    git checkout 2.13.0 <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    ./bootstrap <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    <span style="color:#8be9fd;font-style:italic">cd</span> build <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    make <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    make install
</span></span></code></pre></div><h3 id="q2-编译时出现-gssapigssapih-no-such-file-or-directory">Q2: 编译时出现 &ldquo;gssapi/gssapi.h: No such file or directory&rdquo;</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>fatal error: gssapi/gssapi.h: No such file or directory
</span></span></code></pre></div><p>原因分析：缺少 GSSAPI 开发库，TimescaleDB 编译需要 Kerberos 相关依赖。</p>
<p>解决方案：在 Dockerfile 中添加必要的依赖包：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>RUN apt-get update <span style="color:#ff79c6">&amp;&amp;</span> apt-get install -y <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    build-essential <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    postgresql-server-dev-15 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    cmake <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    git <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    wget <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    ca-certificates <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    libkrb5-dev <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    libgssapi-krb5-2 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">&amp;&amp;</span> rm -rf /var/lib/apt/lists/*
</span></span></code></pre></div><hr>
<h2 id="扩展问题">扩展问题</h2>
<h3 id="q3-pgvector-出现段错误-segmentation-fault">Q3: pgvector 出现段错误 (Segmentation Fault)</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>server closed the connection unexpectedly
</span></span><span style="display:flex;"><span>This probably means the server terminated abnormally
</span></span><span style="display:flex;"><span>before or while processing the request.
</span></span></code></pre></div><p>原因分析：</p>
<ul>
<li>pgvector 最新版本可能与 PostgreSQL 15 存在兼容性问题</li>
<li>编译环境或依赖版本不匹配</li>
</ul>
<p>解决方案：使用稳定的预编译版本：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 使用 pgvector 0.5.1 版本，避免段错误</span>
</span></span><span style="display:flex;"><span>RUN <span style="color:#8be9fd;font-style:italic">cd</span> /tmp <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    wget https://github.com/pgvector/pgvector/archive/v0.5.1.tar.gz <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    tar -xzf v0.5.1.tar.gz <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    <span style="color:#8be9fd;font-style:italic">cd</span> pgvector-0.5.1 <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    make <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>    make install
</span></span></code></pre></div><h3 id="q4-timescaledb-扩展创建失败">Q4: TimescaleDB 扩展创建失败</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">ERROR</span>: could not load library &#34;timescaledb&#34;:
</span></span><span style="display:flex;"><span>shared_preload_libraries not configured
</span></span></code></pre></div><p>原因分析：TimescaleDB 需要在 PostgreSQL 启动时预加载。</p>
<p>解决方案：在 Dockerfile 中配置预加载库：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>RUN echo &#34;shared_preload_libraries = &#39;timescaledb&#39;&#34; &gt;&gt; /usr/share/postgresql/postgresql.conf.sample
</span></span></code></pre></div><h3 id="q5-postgis-扩展版本不匹配">Q5: PostGIS 扩展版本不匹配</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">ERROR</span>: extension &#34;postgis&#34; has no installation candidate
</span></span></code></pre></div><p>原因分析：PostgreSQL 版本与 PostGIS 包版本不匹配。</p>
<p>解决方案：明确指定对应版本的包：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>RUN apt-get install -y \
</span></span><span style="display:flex;"><span>    postgresql-15-postgis-3 \
</span></span><span style="display:flex;"><span>    postgresql-15-postgis-3-scripts
</span></span></code></pre></div><hr>
<h2 id="连接问题">连接问题</h2>
<h3 id="q6-ide-连接提示-connection-refused">Q6: IDE 连接提示 &ldquo;Connection refused&rdquo;</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>connection to server at &#34;localhost&#34; (::1), port 5432 failed: Connection refused
</span></span></code></pre></div><p>原因分析：</p>
<ul>
<li>端口映射不正确</li>
<li>服务未完全启动</li>
<li>防火墙阻止连接</li>
</ul>
<p>解决方案：</p>
<ol>
<li>检查端口映射：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker port postgres-all-extensions
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 应该显示: 5432/tcp -&gt; 0.0.0.0:5432</span>
</span></span></code></pre></div><ol>
<li>确认服务状态：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker ps
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查容器是否正常运行</span>
</span></span></code></pre></div><ol>
<li>等待服务完全启动：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker logs postgres-all-extensions
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 查看启动日志，确认数据库已就绪</span>
</span></span></code></pre></div><h3 id="q7-密码认证失败">Q7: 密码认证失败</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">FATAL</span>: password authentication failed for user &#34;postgres&#34;
</span></span></code></pre></div><p>原因分析：</p>
<ul>
<li>数据目录已存在，使用了旧密码初始化</li>
<li>环境变量未正确加载</li>
<li>pg_hba.conf 配置问题</li>
</ul>
<p>解决方案：</p>
<ol>
<li>清理旧数据重新初始化：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker-compose down
</span></span><span style="display:flex;"><span>sudo rm -rf ./data/pgdata/*
</span></span><span style="display:flex;"><span>docker-compose up -d
</span></span></code></pre></div><ol>
<li>检查环境变量：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> postgres-all-extensions env | grep POSTGRES
</span></span></code></pre></div><ol>
<li>验证 .env 文件格式：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 确保 .env 文件在正确位置且格式正确
</span></span><span style="display:flex;"><span>POSTGRES_PASSWORD=your_password
</span></span></code></pre></div><hr>
<h2 id="权限问题">权限问题</h2>
<h3 id="q8-数据目录权限错误">Q8: 数据目录权限错误</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>initdb: error: could not create directory &#34;/var/lib/postgresql/data&#34;: Permission denied
</span></span></code></pre></div><p>原因分析：宿主机目录权限不正确，PostgreSQL 容器无法写入。</p>
<p>解决方案：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 修改目录权限</span>
</span></span><span style="display:flex;"><span>sudo chown -R 999:999 ./data/pgdata
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 或者删除目录让 Docker 自动创建</span>
</span></span><span style="display:flex;"><span>sudo rm -rf ./data/pgdata
</span></span></code></pre></div><h3 id="q9-配置文件权限问题">Q9: 配置文件权限问题</h3>
<p>问题描述：容器启动时无法读取配置文件。</p>
<p>解决方案：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 确保配置文件可读
</span></span><span style="display:flex;"><span>chmod 644 config/postgresql.conf
</span></span><span style="display:flex;"><span>chmod 644 config/pg_hba.conf
</span></span></code></pre></div><hr>
<h2 id="性能问题">性能问题</h2>
<h3 id="q10-容器启动缓慢">Q10: 容器启动缓慢</h3>
<p>问题描述：Docker 容器启动时间过长。</p>
<p>原因分析：</p>
<ul>
<li>数据库初始化需要时间</li>
<li>扩展安装和配置耗时</li>
<li>系统资源不足</li>
</ul>
<p>解决方案：</p>
<ol>
<li>增加启动等待时间：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 等待更长时间再进行连接测试
</span></span><span style="display:flex;"><span>sleep 15 &amp;&amp; docker exec postgres-all-extensions psql -U postgres -c &#34;SELECT 1;&#34;
</span></span></code></pre></div><ol>
<li>优化 Docker 资源分配：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 在 docker-compose.yml 中添加资源限制
</span></span><span style="display:flex;"><span>deploy:
</span></span><span style="display:flex;"><span>  resources:
</span></span><span style="display:flex;"><span>    limits:
</span></span><span style="display:flex;"><span>      memory: 2G
</span></span><span style="display:flex;"><span>    reservations:
</span></span><span style="display:flex;"><span>      memory: 1G
</span></span></code></pre></div><h3 id="q11-查询性能差">Q11: 查询性能差</h3>
<p>问题描述：数据库查询响应缓慢。</p>
<p>解决方案：</p>
<ol>
<li>调整 PostgreSQL 配置：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#6272a4">-- 增加共享缓冲区
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">SYSTEM</span> <span style="color:#ff79c6">SET</span> shared_buffers <span style="color:#ff79c6">=</span> <span style="color:#f1fa8c">&#39;256MB&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#6272a4">-- 调整工作内存
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">SYSTEM</span> <span style="color:#ff79c6">SET</span> work_mem <span style="color:#ff79c6">=</span> <span style="color:#f1fa8c">&#39;4MB&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#6272a4">-- 重载配置
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">SELECT</span> pg_reload_conf();
</span></span></code></pre></div><ol>
<li>创建适当的索引：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#6272a4">-- 为向量查询创建索引
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">INDEX</span> <span style="color:#ff79c6">ON</span> items <span style="color:#ff79c6">USING</span> ivfflat (embedding vector_cosine_ops);
</span></span><span style="display:flex;"><span><span style="color:#6272a4">-- 为时序数据创建索引
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">INDEX</span> <span style="color:#ff79c6">ON</span> sensor_data (time <span style="color:#ff79c6">DESC</span>);
</span></span></code></pre></div><hr>
<h2 id="数据问题">数据问题</h2>
<h3 id="q12-数据持久化失败">Q12: 数据持久化失败</h3>
<p>问题描述：容器重启后数据丢失。</p>
<p>原因分析：</p>
<ul>
<li>卷映射配置错误</li>
<li>数据目录路径不正确</li>
</ul>
<p>解决方案：确认 docker-compose.yml 中的卷配置：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>volumes:
</span></span><span style="display:flex;"><span>  - ./data/pgdata:/var/lib/postgresql/data
</span></span></code></pre></div><h3 id="q13-数据库版本不兼容">Q13: 数据库版本不兼容</h3>
<p>问题描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">FATAL</span>: database files are incompatible with server
</span></span></code></pre></div><p>原因分析：数据目录由不同版本的 PostgreSQL 创建。</p>
<p>解决方案：</p>
<ol>
<li>备份数据：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> postgres-old pg_dumpall -U postgres &gt; backup.sql
</span></span></code></pre></div><ol>
<li>清理数据目录：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo rm -rf ./data/pgdata/*
</span></span></code></pre></div><ol>
<li>重新启动并恢复：</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker-compose up -d
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 等待启动完成后</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> -i postgres-all-extensions psql -U postgres &lt; backup.sql
</span></span></code></pre></div><hr>
<h2 id="调试技巧">调试技巧</h2>
<h3 id="查看详细日志">查看详细日志</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 查看容器日志</span>
</span></span><span style="display:flex;"><span>docker logs postgres-all-extensions -f
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 查看 PostgreSQL 日志</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> postgres-all-extensions tail -f /var/log/postgresql/postgresql.log
</span></span></code></pre></div><h3 id="进入容器调试">进入容器调试</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 进入容器</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> -it postgres-all-extensions bash
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 查看进程状态</span>
</span></span><span style="display:flex;"><span>ps aux | grep postgres
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查扩展安装</span>
</span></span><span style="display:flex;"><span>psql -U postgres -c <span style="color:#f1fa8c">&#34;\dx&#34;</span>
</span></span></code></pre></div><h3 id="网络连接测试">网络连接测试</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 测试端口连通性</span>
</span></span><span style="display:flex;"><span>telnet localhost <span style="color:#bd93f9">5432</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 使用 Docker 网络测试</span>
</span></span><span style="display:flex;"><span>docker run --rm --network host postgres:15 pg_isready -h localhost -p <span style="color:#bd93f9">5432</span>
</span></span></code></pre></div><hr>
<h2 id="预防措施">预防措施</h2>
<ol>
<li>定期备份：建立自动化备份策略</li>
<li>监控日志：定期检查错误日志</li>
<li>版本管理：记录使用的具体版本号</li>
<li>测试环境：在生产部署前充分测试</li>
<li>文档更新：及时更新配置和问题解决方案</li>
</ol>
<hr>
<h2 id="获取帮助">获取帮助</h2>
<p>如遇到本文未涵盖的问题：</p>
<ol>
<li>查看官方文档：</li>
<li>PostgreSQL 官方文档</li>
<li>PostGIS 文档</li>
<li>pgvector GitHub</li>
<li></li>
</ol>
<p>TimescaleDB 文档</p>
<ol start="6">
<li></li>
</ol>
<p>社区支持：</p>
<ol start="7">
<li>PostgreSQL 邮件列表</li>
<li>Stack Overflow</li>
<li></li>
</ol>
<p>GitHub Issues</p>
<ol start="10">
<li></li>
</ol>
<p>日志分析：</p>
<ol start="11">
<li>详细记录错误信息</li>
<li>提供完整的错误日志</li>
<li>说明环境配置信息</li>
</ol>
]]></content:encoded></item></channel></rss>