参考资料

  1. SWI-Prolog 是一个开源的 Prolog 实现,广泛用于人工智能、自然语言处理和知识表示等领域
  2. Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,用于构建高性能
  3. Docker Compose的作用是什么?
  4. Jobber 是一个轻量级的任务调度工具
  5. docker容器(Container)与镜像的关系?
  6. Apache Solr 是一个基于 Apache Lucene 构建的开源企业级搜索平台
  7. Caddy 是一个现代化的、开源的 Web 服务器和反向代理工具
  8. EulerOS 是华为推出的企业级 Linux 操作系统

PostgreSQL 简介

PostgreSQL 是一个开源的关系型数据库管理系统(RDBMS),支持 SQL 标准并扩展了许多高级功能。它以其稳定性、可扩展性和强大的功能集而闻名,适用于各种规模的应用程序。

特点

  1. 开源免费:遵循 PostgreSQL License,可自由使用和修改。

  2. 高度可扩展:支持自定义数据类型、函数、操作符和索引。

  3. ACID 兼容:严格的事务支持,确保数据一致性。

  4. 多版本并发控制(MVCC):高效处理并发读写操作。

  5. 丰富的扩展生态:如 PostGIS(地理空间数据)、pg_partman(分区管理)等。

  6. 跨平台:支持 Linux、Windows、macOS 等操作系统。

最新更新内容及时间

  • 版本 16(2023年9月14日发布):

    • 逻辑复制的并行处理。

    • 新增 pg_stat_io 视图监控 I/O 统计。

    • 增强 JSON/JSONB 处理性能。

    • 改进 vacuum 和 ANALYZE 操作。

下载地址

官网地址

文档地址

Docker 安装示例

# 拉取镜像
docker pull postgres:16

# 运行容器(默认用户 postgres,密码 mypassword)
docker run --name mypostgres \
  -e POSTGRES_PASSWORD=mypassword \
  -p 5432:5432 \
  -d postgres:16

# 进入容器
docker exec -it mypostgres psql -U postgres

YAML 配置示例(如 docker-compose.yml

version: '3'
services:
  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydb
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

常见错误及解决

  1. 连接拒绝

    • 检查服务是否启动:systemctl status postgresql

    • 确认 pg_hba.conf 配置允许连接(如 host all all 0.0.0.0/0 md5)。

  2. 端口占用

    • 修改端口或停止冲突服务:netstat -tulnp | grep 5432

  3. 权限不足

    • 确保用户有数据库访问权限:  

      GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
  4. 磁盘空间不足

    • 清理 WAL 日志或扩展存储:VACUUM FULL;

  5. 启动失败

    • 检查日志:journalctl -u postgresql/var/log/postgresql.log