ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

pgrust 命令行速查手册:从启动到关闭的常用命令大全

pgrust 命令行速查手册:从启动到关闭的常用命令大全 pgrust 命令行速查手册从启动到关闭的常用命令大全【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust如果你正在寻找一份pgrust 命令行速查手册这篇教程就是为你准备的。pgrust 是一个用 Rust 重写 PostgreSQL 18.3 的开源项目它完全兼容 PostgreSQL 的数据目录格式已经通过超过 4.6 万条回归测试。本文将从初始化数据目录、启动服务、连接数据库到关闭与回归测试带你梳理 pgrust 从启动到关闭的常用命令全集新手也能照着一步步操作。pgrust 是什么一分钟了解这个 Rust 版 PostgreSQLpgrustPostgres in Rust的核心目标不是简单翻译代码而是让 PostgreSQL 更容易从内部被改造保持行为与 PostgreSQL 一致以真实 PostgreSQL 测试为基准借助 Rust 语言和 AI 辅助编程探索更深层的服务器改造。它有几个非常吸引人的特性 兼容 PostgreSQL 18.3磁盘格式兼容可以直接启动已有的 PostgreSQL 18.3 数据目录 通过 46,000 条回归测试输出与 PostgreSQL 保持一致⚡ 新版本采用每连接一线程模型替代每连接一进程事务负载比 PostgreSQL 快 50%分析型负载快约 300 倍 全部代码为 Rust 编写更安全、更易维护⚠️ 注意pgrust 目前尚未达到生产就绪状态性能也还在优化中适合学习、实验和早期尝鲜。pgrust 环境准备三种方式快速获得可执行文件在使用 pgrust 命令行之前需要先拿到postgres可执行文件。这里有三种方式方式一Docker 一键启动最简单对于只想快速体验的普通用户Docker 是最省事的选择docker run -d --name pgrust -e POSTGRES_PASSWORDsecret malisper/pgrust:v0.1等待就绪后进入容器内的 psql 客户端docker exec -it -e PGPASSWORDsecret pgrust psql -h 127.0.0.1 -U postgres用完可以删除容器docker rm -f pgrustDocker 镜像的启动逻辑封装在 docker/entrypoint.sh 中它会自动完成初始化、临时服务器启动与最终服务器拉起并注入 pgrust 特有的 GUC 参数io_methodsync、max_stack_depth60000等。方式二源码编译推荐进阶用户pgrust 使用 Cargo 作为构建工具整个项目是一个大型 Rust workspace入口二进制在 crates/backend/main/ 下。先克隆仓库git clone https://gitcode.com/GitHub_Trending/pg/pgrust cd pgrustUbuntu/Debian 系统先安装依赖sudo apt-get update sudo apt-get install -y build-essential pkg-config libicu-dev libssl-dev libldap2-dev libpam0g-dev postgresql-client-18然后编译 release 版本PGRUST_PGSHAREDIR$PWD/vendor/postgres-18.3/share \ cargo build --release --locked --bin postgres编译产物位于target/release/postgres。方式三浏览器在线体验pgrust 官方还提供 WebAssembly 浏览器演示无需安装任何东西即可在线体验适合先看看效果再动手。pgrust 初始化命令--initdb 参数详解建库第一步pgrust 的 initdb 不是独立的二进制而是内嵌在postgres主程序里通过--initdb参数触发源码见 crates/backend/main/main_main/src/lib.rs 中的早期分发逻辑。最快初始化方法target/release/postgres --initdb \ -D /tmp/pgrust-data \ -L $PWD/vendor/postgres-18.3/share \ --no-locale \ --encoding UTF8 \ -U postgresinitdb 常用参数速查参数说明示例-D/--pgdata指定数据目录必填-D /tmp/pgrust-data-U/--username指定超级用户名默认当前系统用户-U postgres-L指定 share 目录存放 BKI 等模板文件-L vendor/postgres-18.3/share-E/--encoding指定服务器编码支持 UTF8、LATIN1、SQLASCII--encoding UTF8--no-locale使用 C locale跳过本地化设置--no-locale--lc-collate/--lc-ctype单独指定排序与字符分类--lc-collate C--wal-segsize设置 WAL 段大小MB--wal-segsize 16这些参数由 crates/backend/main/initdb/src/lib.rs 中的参数解析器处理它会创建完整的目录树base、pg_wal、pg_xact等、写入PG_VERSION文件并从 share 目录拷贝postgresql.conf、pg_hba.conf等配置文件。 小贴士--initdb会用同一二进制重新执行--boot引导模式建目录和--single单用户模式跑初始化 SQL完整复刻了 C 版 initdb 的流程。pgrust 启动命令postgres 服务启动参数全解初始化完成后就可以启动 pgrust 服务了。注意两个前置要求栈大小限制和Rust 线程栈大小这是 pgrust 特有的启动要求。标准启动命令ulimit -s 65520 RUST_MIN_STACK33554432 target/release/postgres \ -D /tmp/pgrust-data \ -F \ -c listen_addresses \ -k /tmp \ -p 5432 \ -c io_methodsync \ -c max_stack_depth60000参数含义ulimit -s 65520调大 C 栈限制pgrust 每语句帧较大默认栈会拒绝启动RUST_MIN_STACK33554432设置 Rust 线程最小栈为 32MB-D数据目录-F关闭 fsync开发调试常用-c listen_addresses仅监听本地 Unix socket不开放 TCP-k /tmpUnix socket 目录-p 5432监听端口-c io_methodsyncpgrust 专用 GUC指定同步 IO 方式-c max_stack_depth60000pgrust 专用 GUC配合大栈限制postgres 服务端全部参数--help 输出pgrust 完整移植了 PostgreSQL 服务端的命令行选项定义在 crates/backend/main/main_main/src/help.rs 中运行时用postgres --help即可查看参数说明-B NBUFFERS共享缓冲区数量-c NAMEVALUE设置运行时参数GUC-C NAME打印某个运行时参数的值后退出-d 1-5调试级别-D DATADIR数据目录-e使用欧洲日期输入格式DMY-F关闭 fsync-h HOSTNAME监听的主机名或 IP-i启用 TCP/IP 连接已弃用-k DIRECTORYUnix socket 目录-l启用 SSL 连接-N MAX-CONNECT最大连接数-p PORT监听端口-s每条查询后显示统计-S WORK-MEM排序内存大小kB-V, --version输出版本信息后退出--NAMEVALUE设置运行时参数长格式--describe-config输出所有配置参数后退出-?, --help显示帮助后退出此外还有开发者选项-f、-O、-P、-t、-T、-W和单用户模式选项--single、-E、-j、-r完整列表直接运行--help即可看到。pgrust 连接命令psql 客户端登录与验证pgrust 目前没有自己的 psql 客户端需要借助 PostgreSQL 18 的 psql 连接。启动服务后在另一个终端执行psql -h /tmp -p 5432 -U postgres -d postgres \ -c select version(), 1 1 as two-h /tmp指定 Unix socket 目录对应启动时的-k /tmp-p 5432端口-U postgres用户名对应 initdb 时的-U postgres-d postgres数据库名看到version()输出为 PostgreSQL 18.3 且1 1返回 2说明 pgrust 服务已正常对外提供 SQL 能力。pgrust 常用运维命令版本、配置与帮助查询日常运维中以下只读命令非常实用它们不需要完整启动服务查看版本target/release/postgres --version # 输出: postgres (PostgreSQL) 18.3查看帮助target/release/postgres --help打印某个配置项的值target/release/postgres -C max_stack_depth输出全部配置参数target/release/postgres --describe-config️ 安全提示以上只读命令-C、--describe-config即使在 root 权限下也允许执行但正常的服务启动和 initdb 会拒绝以 root 运行这是 PostgreSQL 一贯的安全策略。pgrust 关闭命令优雅停止服务pgrust 的关闭方式与 PostgreSQL 一致主要有两种方式一前台 CtrlC 或发送 SIGINT如果你是用前台方式启动的服务直接CtrlC即可触发优雅关闭fast shutdown。Docker 镜像也采用 SIGINT 作为停止信号docker stop会优雅关停。方式二kill 信号# 优雅关闭fast shutdown等待事务完成 kill -INT $(pgrep -f target/release/postgres) # 立即关闭immediate shutdown不等待 kill -QUIT $(pgrep -f target/release/postgres)⚠️ 注意pgrust 尚不支持pg_ctl stop项目没有移植 pg_ctl关闭服务请使用信号方式或容器管理命令。pgrust 回归测试命令跑通 4.6 万条 SQL 测试pgrust 的一大亮点是自带回归测试体系。脚本 scripts/run-regression 会拉起一个 pgrust 实例用仓库内置的 PostgreSQL 18.3 测试文件跑完整回归套件PGRUST_BIN$PWD/target/release/postgres \ scripts/run-regression常用环境变量PGRUST_BIN指定 pgrust 的 postgres 二进制默认target/release/postgresPGRUST_PSQL指定 psql 客户端路径默认自动探测 PATHPGPORT测试端口默认 55434OUTDIR输出目录也可以只跑指定测试scripts/run-regression select仓库还提供了其他测试脚本如 scripts/run-pg-regress、scripts/run-pg-isolation、scripts/run-auth-tap 等覆盖回归、隔离、认证等多个维度。pgrust 命令速查表从启动到关闭一张图搞定阶段命令说明初始化postgres --initdb -D dir -L share -U postgres --encoding UTF8创建数据目录启动ulimit -s 65520 RUST_MIN_STACK33554432 postgres -D dir -k /tmp -p 5432启动服务连接psql -h /tmp -p 5432 -U postgres -d postgres登录数据库版本postgres --version查看版本帮助postgres --help查看全部参数配置查询postgres -C name打印配置值配置全览postgres --describe-config输出所有配置关闭kill -INT pid或docker stop pgrust优雅停止测试PGRUST_BIN... scripts/run-regression跑回归测试Dockerdocker run -d --name pgrust malisper/pgrust:v0.1容器化启动常见问题 FAQQ1pgrust 和 PostgreSQL 是什么关系pgrust 是用 Rust 重写的 PostgreSQL 18.3保持磁盘格式和行为兼容可以直接使用 PostgreSQL 的数据目录与 psql 客户端。Q2pgrust 能直接启动 PostgreSQL 已有的数据目录吗可以这正是 pgrust 的设计目标之一——磁盘兼容能直接从现有 PostgreSQL 18.3 数据目录启动。Q3为什么启动时报栈相关的错误pgrust 需要较大的栈空间请务必先执行ulimit -s 65520并设置RUST_MIN_STACK33554432否则可能拒绝启动。Q4pgrust 支持 pg_ctl 吗目前不支持。关闭服务请使用信号方式SIGINT/SIGQUIT或容器管理命令。Q5pgrust 生产环境可用吗官方明确说明尚未生产就绪扩展如 PL/Python、PL/Perl兼容性有限建议用于学习和实验。总结这份 pgrust 命令行速查手册涵盖了从--initdb初始化、postgres启动、psql连接到版本查询、配置查看、优雅关闭和回归测试的完整命令链。核心代码位于 crates/backend/main/ 目录Docker 封装在 docker/entrypoint.sh测试脚本集中在 scripts/ 下。收藏这份速查表你就能快速上手这个比 PostgreSQL 更快的 Rust 数据库了【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表