PostgreSQL 简介
PostgreSQL 是一个功能强大的开源对象关系型数据库系统,拥有超过 35 年的活跃开发历史,在可靠性、功能健壮性和性能方面赢得了良好的声誉。
有大量的资料介绍了如何通过官方文档安装和使用 PostgreSQL。开源社区提供了许多有用的场所,可以帮助您熟悉 PostgreSQL,了解其工作原理并找到职业机会。了解更多关于如何参与社区的信息。
操作步骤
以下是使用 Docker Compose 部署 PostgreSQL 的步骤,包含指定数据目录、日志目录、密码配置和远程访问设置:
创建目录结构
mkdir -p postgres/{data,logs,config}
cd postgres
创建自定义配置文件
config/postgresql.conf
:
# 监听所有 IP 地址
listen_addresses = '*'
# 日志配置
logging_collector = on
log_directory = '/var/log/postgresql'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB
# 内存配置
shared_buffers = 2GB # 例如设置为 2GB,根据你的实际可用内存调整 25%--40%
work_mem = 64MB # 例如设置为 64MB,根据你的需求调整 16MB--128MB
config/pg_hba.conf
:
# 允许所有远程连接使用密码认证
host all all 0.0.0.0/0 md5
创建 docker-compose.yml
services:
postgres:
image: postgres:17-alpine
container_name: postgres
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres2025.rymcu#
POSTGRES_DB: postgres
ports:
- "5432:5432"
volumes:
- ./data:/var/lib/postgresql/data
- ./logs:/var/log/postgresql
- ./config/postgresql.conf:/etc/postgresql/postgresql.conf
- ./config/pg_hba.conf:/etc/postgresql/pg_hba.conf
command:
- "postgres"
- "-c"
- "config_file=/etc/postgresql/postgresql.conf"
文件权限处理
sudo chmod 777 /postgres/logs
sudo chmod 777 /postgres/data
启动容器
docker compose up -d
验证连接
# 本地连接验证
docker exec -it postgres psql -U postgres -d postgres
# 远程连接验证(从其他机器)
psql -h <服务器IP> -p 5432 -U postgres -d postgres
- 数据持久化
通过 volume 挂载将容器内的/var/lib/postgresql/data
映射到宿主机的./data
目录 - 日志配置
- 日志存储在
/var/log/postgresql
目录 - 每天轮转日志文件,保留 1 天的日志
- 单个日志文件最大 100MB
- 日志存储在
- 远程访问
listen_addresses = '*'
监听所有网络接口pg_hba.conf
允许所有 IP 通过密码认证访问
- 安全建议
- 生产环境应使用更强密码(建议 12 位以上包含大小写字母、数字和符号)
- 可限制 IP 范围,修改
pg_hba.conf
为:
host all all 192.168.1.0/24 md5
常用管理命令
# 查看日志
docker logs postgres
# 进入容器
docker exec -it postgres bash
# 停止服务
docker compose down
# 备份数据库
docker exec postgres pg_dump -U postgres postgres > backup.sql