完整操作指南

场景1:查看和操作 PostgreSQL 数据库

步骤1:检查容器状态

查看所有正在运行的容器

sudo docker ps

查看所有容器(包括停止的)

sudo docker ps -a

判断标准:

✅ 如果 STATUS 列显示 Up → 容器正在运行

❌ 如果 STATUS 列显示 Exited → 容器已停止,需要启动

步骤2:启动容器(如果未运行)

使用容器名启动

sudo docker start xxxxx(容器名)

或使用容器ID启动

sudo docker start e4502ea68146

验证启动成功:

sudo docker ps | grep xxxxx(容器名)

应该看到 STATUS 为 "Up"

步骤3:进入容器并连接数据库

进入容器的 bash shell

sudo docker exec -it xxxxx(容器名) bash

在容器内连接 PostgreSQL(默认用户:postgres)

psql -U postgres

连接成功后,你会看到:

psql (16.2 (Debian 16.2-1.pgdg110+2))

Type "help" for help.

postgres=#

步骤4:查看所有数据库:\l

步骤5:切换到目标数据库

例如:切换到 xxxxx 数据库

\c xxxxx

成功后提示:

You are now connected to database "xxxxx" as user "postgres".

xxxxx =#

步骤6:查看数据库中的所有表

-- 列出当前数据库的所有表

\dt

步骤7:查看表结构

-- 查看 tb_farm 表的结构

\d tb_farm

步骤8:查询表数据

查询 tb_farm 表的所有数据

SELECT * FROM tb_farm;

查询前10条数据(避免数据太多)

SELECT * FROM tb_farm LIMIT 10;

查询特定字段

SELECT id, name, address FROM tb_farm;

条件查询

SELECT * FROM tb_farm WHERE id = 1;

SELECT * FROM tb_farm WHERE name LIKE '%测试%';

SELECT * FROM tb_farm WHERE status = 1;

步骤9:退出数据库和容器

退出 psql 客户端

\q

步骤10:退出容器(回到宿主机)

exit

场景2:查看和管理后端服务容器

步骤1:查看所有容器,找到后端服务

查看所有正在运行的容器

sudo docker ps

查看所有容器(包括停止的)

sudo docker ps -a

注意: 你的后端服务容器名可能是 xxxxx_services,也可能是其他名字,以 docker ps 输出为准。

步骤2:查看后端服务日志

显示最近1000行日志

sudo docker logs -f --tail 1000 xxxxx_services

显示最近100行日志(推荐,避免太多)

sudo docker logs -f --tail 100 xxxxx_services

只显示日志,不实时跟踪(去掉 -f)

sudo docker logs --tail 100 xxxxx_services

参数说明:

-f:实时跟踪日志(类似 tail -f)

--tail N:显示最近 N 行

容器名:替换成你的实际容器名

步骤3:重启后端服务

重启容器

sudo docker restart xxxxx_services

验证重启成功

sudo docker ps | grep xxxxx_services

步骤4:停止/启动后端服务

停止容器

sudo docker stop xxxxx_services

启动容器

sudo docker start xxxxx_services

重新创建并启动容器(如果配置有修改)

sudo docker-compose restart xxxxx_services

场景3:常用数据库操作速查

快速查询(不进入 psql)

直接执行单条 SQL 命令

sudo docker exec xxxdata psql -U postgres -d xxxxxx_services -c "SELECT * FROM tb_farm LIMIT 5;"

统计行数

sudo docker exec xxxdata psql -U postgres -d xxxxxx_services -c "SELECT COUNT(*) FROM tb_farm;"

查看所有表

sudo docker exec xxxdata psql -U postgres -d xxxxxx_services -c "\dt"

数据库备份

备份整个数据库到文件

sudo docker exec xxxdata pg_dump -U postgres xxxxxx_services > /tmp/xxxxxx_services_backup_$(date +%Y%m%d).sql

备份并压缩

sudo docker exec xxxdata pg_dump -U postgres xxxxxx_services | gzip > /tmp/xxxxxx_services_backup_$(date +%Y%m%d).sql.gz

查看备份文件

ls -lh /tmp/xxxxxx_services_backup_.sql

数据库恢复

从备份文件恢复(需要先创建数据库)

sudo docker exec xxxdata psql -U postgres -c "CREATE DATABASE xxxxxx_services_new;"

恢复数据

sudo docker exec -i xxxdata psql -U postgres -d xxxxxx_services_new < /tmp/xxxxxx_services_backup_20240421.sql

查看数据库大小

进入数据库后执行

SELECT pg_size_pretty(pg_database_size('xxxxxx_services'));

查看所有数据库大小

SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;

重要安全提醒

1、不要在生产环境随意执行 DELETE 或 DROP 命令

2、操作前先备份数据:

sudo docker exec xxxdata pg_dump -U postgres xxxxxx_services_new > /tmp/backup_$(date +%Y%m%d).sql

3、使用事务保护重要操作:

BEGIN;

DELETE FROM tb_farm WHERE id = 1;

-- 确认无误后

COMMIT;

-- 如果有误

ROLLBACK;

4、不要在命令行中明文显示密码,使用环境变量或配置文件

完整命令速查表

操作 命令 说明
容器管理
查看运行容器 sudo docker ps 显示正在运行的容器
查看所有容器 sudo docker ps -a 显示所有容器
启动容器 sudo docker start xintadata 启动指定容器
停止容器 sudo docker stop xintadata 停止指定容器
重启容器 sudo docker restart xintadata 重启指定容器
进入容器 sudo docker exec -it xintadata bash 进入容器bash
数据库连接
连接数据库 psql -U postgres 以postgres用户连接
切换数据库 \c graziery_sd 切换到指定数据库
退出psql \q 退出数据库客户端
数据库查询
列出数据库 \l 显示所有数据库
列出表 \dt 显示当前数据库所有表
查看表结构 \d tb_farm 显示表结构
查询数据 SELECT * FROM tb_farm LIMIT 10; 查询表数据
统计行数 SELECT COUNT(*) FROM tb_farm; 统计表行数
日志查看
查看日志 sudo docker logs --tail 100 container_name 查看最近100行日志
实时日志 sudo docker logs -f container_name 实时跟踪日志
备份恢复
备份数据库 sudo docker exec xintadata pg_dump -U postgres db_name > backup.sql 备份数据库
恢复数据库 sudo docker exec -i xintadata psql -U postgres -d db_name < backup.sql 恢复数据库

psql 客户端常用命令

命令 含义 示例
\l 列出所有数据库 postgres=# \l
\c <数据库名> 切换数据库 \c graziery_sd
\dt 列出当前数据库所有表 graziery_sd=# \dt
\dt+ 详细列出所有表(含大小) graziery_sd=# \dt+
\d <表名> 查看表结构 \d tb_farm
\d+ <表名> 详细查看表结构 \d+ tb_farm
\du 列出所有用户/角色 postgres=# \du
\dv 列出所有视图 graziery_sd=# \dv
\df 列出所有函数 graziery_sd=# \df
\x 切换扩展显示模式(适合查看长数据) graziery_sd=# \x
\q 退出 psql graziery_sd=# \q
\? 查看所有 psql 命令帮助 postgres=# \?
\h 查看 SQL 命令帮助 postgres=# \h SELECT
相关推荐
mxwin2 小时前
Unity URP 下 TBN 矩阵学习 切线空间、tangent.w 与镜像 UV 的那些坑
学习·unity·矩阵·shader
淼淼爱喝水2 小时前
Ansible Playbook 入门实战:自动化创建 Linux 用户
linux·运维·服务器·网络·ansible
南子北游2 小时前
计算机视觉学习(二)图像分类
人工智能·学习·计算机视觉
南子北游2 小时前
计算机视觉学习(一)
人工智能·学习·计算机视觉
白狐_7982 小时前
【深度拆解】2026年数字化学习流:iPad 主动式电容笔的技术底层与选型实测
学习·ios·ipad·电容笔
runningshark2 小时前
【Linux】Virtualbox 中如何给Ubuntu扩容
笔记·学习
淮北4942 小时前
AppImage转变成APP-》ubuntu22.04
运维·服务器
白露与泡影2 小时前
从零学习Kafka:ZooKeeper vs KRaft
学习·zookeeper·kafka
日拱一卒的小田2 小时前
ZYNQ学习笔记1-裸机-PS端中断配置、IO配置及PS/PL AXI交互(2-2)
笔记·学习·microsoft