Docker 运行 postgresql

Docker 运行 postgresql

docker 命令如下:

1
2
3
docker run --name postgres --network dockerNetwork --ip 172.27.1.30 \
-e POSTGRES_PASSWORD=root -v /data/docker/postgres:/var/lib/postgresql/data \
-v /data/backup/postgres:/data/backup/postgres -itd postgres:16

或者使用 pgvector:

1
2
3
docker run --name pg16 --network dockerNetwork --ip 172.27.1.50 \
-e POSTGRES_PASSWORD=root -v /data/docker/pg16:/var/lib/postgresql/data \
-v /data/backup/pg16:/data/backup/pg16 -itd pgvector/pgvector:pg16

pgvector 和 postgres 完全兼容,但新增了:向量支持,如需启用,登录后,选择数据库,然后使用如下命令:

CREATE EXTENSION IF NOT EXISTS vector;

postgres 常用命令

登录 postgres 控台

1
2
3
docker exec -it pg16 /bin/bash
su - postgres
psql

如需指定数据库用户,则使用:psql -U xxx

postgres 创建用户

create user appflowy with password 'appflowy';

postgres 新建数据库

create database appflowy owner appflowy;

如需启用向量支持,则继续执行:

CREATE EXTENSION IF NOT EXISTS vector;

postgres 数据库授权

grant all privileges on database appflowy to appflowy;

postgres 列出用户

\l;

postgres 列出数据库

\du;

postgres 切换数据库

\c appflowy;

postgres 列出表

\d;

postgres 备份与还原

postgres 数据备份

pg_dump -U appflowy -d appflowy -Fc -f /tmp/dump.bak;

postgres 定时备份

1
2
3
4
5
6
7
#!/bin/bash
time=$(date "+%Y-%m-%d_%H_%M_%S")
fullPath="/data/backup/pg16/appflowy/"$time.bak
if [ ! -d "$fullPath" ]; then
  echo 'begin backup postgres path '$fullPath
  docker exec postgres /usr/bin/pg_dump -U appflowy -d appflowy -Fc -f $fullPath;
fi

postgres 数据还原

pg_restore -U outline -d outline /tmp/dump.bak
最后更新于