PostgreSQL 初始化、启动、停止数据库

2023年 8月 15日 34.7k 0

PostgreSQL安装完成之后,需要先初始化数据库,然后才能启动数据库服务。PostgreSQL安装目录下的bin目录中提供了很多命令用于数据库的初始化、数据库启动和停止等功能,本文用到的命令如下:

  • initdb
  • pg_ctl
0. 环境准备

PostgreSQL版本:11.5

  1. 创建pg用户
    useradd pg
  2. 创建PostgreSQL数据目录:
    mkdir -p /data/pg/
    chown -R pg:pg /data/pg
  3. 切换到pg用户
    su - pg
1. 初始化PostgreSQL数据库:

initdb -D /data/pg/

-D参数指定数据目录,初始化过程主要是往数据目录中写入一些必需的元数据。

2. 启动PostgreSQL

启动数据库:

pg_ctl start -D /data/pg/

-D参数指定数据目录,PostgreSQL是多进程架构,启动之后,能够看到很多postgres相关的进程,如下:

[pg@localhost ~]$ ps -ef | grep pg
pg 8124 8123 0 23:18 pts/0 00:00:00 -bash
pg 8158 1 0 23:20 pts/0 00:00:00 /usr/local/postgresql-11.5/bin/postgres -D /data/pg
pg 8160 8158 0 23:20 ? 00:00:00 postgres: checkpointer
pg 8161 8158 0 23:20 ? 00:00:00 postgres: background writer
pg 8162 8158 0 23:20 ? 00:00:00 postgres: walwriter
pg 8163 8158 0 23:20 ? 00:00:00 postgres: autovacuum launcher
pg 8164 8158 0 23:20 ? 00:00:00 postgres: stats collector
pg 8165 8158 0 23:20 ? 00:00:00 postgres: logical replication launcher

3. 停止PostgreSQL

停止数据库:

pg_ctl stop -D /data/pg/

-D 参数为数据目录。

另外还可以加上 -m 参数,指定关闭模式,取值如下:

  • smart,等所有连接中止后,关闭数据库,如果客户端连接不中止,则无法关闭数据库。
  • fast,快速关闭数据库,断开客户端连接,回滚未提交的事务,然后关闭数据库。
  • immediate,立即关闭数据库,进程立即停止,直接退出,下次启动数据库需要进行恢复。

比较常用的是fast模式。

4. 问题

initdb初始化数据库在root用户下执行会报错,必须创建一个非root用户来初始化数据库。报错信息如下:

initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论