iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL简单管理(一)
  • 566
分享到

PostgreSQL简单管理(一)

2024-04-02 19:04:59 566人浏览 安东尼
摘要

1、初始化数据库集群和其他RDBMS一样,在开始使用postgresql数据库之前需要在磁盘上初始化一个数据库,这里称为数据库集群。数据库集群是一个运行着的数据库服务实例管理的数据库的集合。初始化完后,集群

1、初始化数据库集群

和其他RDBMS一样,在开始使用postgresql数据库之前需要在磁盘上初始化一个数据库,这里称为数据库集群。数据库集群是一个运行着的数据库服务实例管理的数据库的集合。初始化完后,集群中包含一个名为postgres的数据库,作为默认的数据库。还会创建另一个叫作template1的数据库,它被用作后续创建数据库的一个模版。

在文件系统层面,一个数据库集群是一个存储所有数据的目录(data directory)。它取决于你选择在哪存储你的数据。默认的目录是/usr/local/pgsql/data或/var/lib/pgsql/data。

使用iniddb命令初始化数据库集群,使用-D参数指定数据库的路径。示例如下:

initdb -D /usr/local/pgsql/data

[postgres@rhel7 ~]$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
perfORMing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    pg_ctl -D /usr/local/pgsql/data -l logfile start

可以指定环境变量PGDATA指向PostgreSQL的目录。

还可以调用pg_ctl命令来初始化数据库集群:

pg_ctl -D /usr/local/pgsql/data initdb

指定的目录必须为空,否则则无法初始化。初始化后整个目录的权限变为700(drwx------)。

[postgres@rhel7 pgsql]$ ls -l
total 4
drwx------ 19 postgres postgres 4096 Mar 23 16:31 data

2、启动数据库服务

数据库服务程序叫作postgres。启动数据库时必须指定数据目录。简单的一个示例:

postgres -D /usr/local/pgsql/data

[postgres@rhel7 data]$ postgres -D /usr/local/pgsql/data/
LOG:  database system was shut down at 2017-03-23 16:31:28 CST
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

如果不指定-D参数,命令会去找PGDATA环境变量,如果两个都没有则启动报错。

上面的命令是在前台启动数据库服务,不过最好在后台启动。后台启动的例子:

postgres -D /usr/local/pgsql/data > logfile 2>&1 &

另一个封装好的命令pg_ctl也可以提供相应的功能。如下例:

pg_ctl start -l logfile 

[postgres@rhel7 data]$ pg_ctl -D /usr/local/pgsql/data start -l logfile
server starting
[postgres@rhel7 data]$ cat logfile 
LOG:  database system was shut down at 2017-03-23 16:34:12 CST
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

上面的命令可以在后台启用数据库服务,并把输出写入到日志文件中。-D参数同样用于指定数据目录。pg_ctl还可以用于停止数据库服务。

服务启动后,对应的PID被记录在数据目录的postmaster.pid文件中。防止启动多次,也可以用来关闭服务。

3、关闭数据库服务

关闭PostgreSQL数据库有多种模式。主要有如下几种:

SIGTERM

Smart Shutdown模式。数据库接到SIGTERM后,服务端不允许新的连接,但已连接的会话继续工作直到会话完成。当所有会话完成后才关闭数据库。如果数据库在热备状态,会等备份完成。如果在恢复状态则等所有进程终止。

SIGINT

Fast Shutdown模式。服务端不允许新的连接,并且给所有已存在的服务进程发送SIGTERM,使它们终止当前的事务并立即退出。所有服务进程退出后数据库关闭。

SIGQUIT

Immediate Shutdown模式。服务端发送SIGQUIT给所有的子进程,并等待它们终止,如果5秒钟后没有终止,这些进行被SIGKILL。等所有子进程停止后,主服务进程退出。它不做正常的关闭进程,下次启动时会启动恢复。建议仅在紧急情况下使用。

pg_ctl提供关闭数据库的方式:

pg_ctl stop #默认fast模式关闭

[postgres@rhel7 data]$ > logfile 
[postgres@rhel7 data]$ pg_ctl stop -D /usr/local/pgsql/data/
waiting for server to shut down.... done
server stopped
[postgres@rhel7 data]$ cat logfile 
LOG:  received fast shutdown request
LOG:  aborting any active transactions
LOG:  autovacuum launcher shutting down
LOG:  shutting down
LOG:  database system is shut down

指定用某种方式关闭:

pg_ctl stop -m smart/fast/immediate 

还可以直接kill进程号的方式,进程号在数据目录的postmaster.pid文件中

kill -INT ‘head -1 /usr/local/pgsql/data/postmaster.pid‘

4、服务端配置

参数配置文件在数据目录中的postgresql.conf

查看当前的配置

使用show命令

show all/paramter_name;

使用函数

select current_setting('paramter_name');

4.1、修改参数

4.1.1 使用SQL语句修改参数

ALTER SYSTEM   #修改系统级相当于修改psotgresql.conf,改后的参数记录在postgresql.auto.conf文件中

ALTER DATABASE #修改数据库级

ALTER ROLE     #修改ROLE级

直接修改postgresql.conf文件,需要pg_ctl reload或执行select pg_reload_conf();把配置重新读入系统;

另外,还有一个系统视图pg_settings可以用来查看及修改session级别的参数。

SET configuration_parameter TO DEFAULT;

UPDATE pg_settings SET setting = reset_val WHERE name = ’configuration_parameter’;

上面两个语句是等价的。

4.1.2 在命令行中指定参数

在启动数据库时,通过postgres命令使用-c添加指定参数

postgres -c log_connections=yes -c log_destination=’syslog’

这种方式指定的参数除非重启数据库,否则ALTER SYSTEM命令也不能修改。指定的参数信息记录在postmaster.opts文件中。

在启动session时,可以通过设置环境变量PGoPTIONS,来设置session中参数的值

env PGOPTIONS="-c geqo=off -c statement_timeout=5min" psql

4.1.3 引用其他参数文件

参数文件postgresql.conf可以引用其他参数文件,可以嵌套引用。可以由以下参数参数指定:

include='special.conf'  #直接指定文件,与postgresql.conf不在同一目录下需要指定绝对路径,如果文件不存在,则启动报错。

include_if_exists='exists.conf' #用法同include,但如果文件不存在则忽略该参数

include_dir='conf_dir'   #引用指定目录下所有的后缀为.conf的文件。


参考:https://www.postgresql.org/docs/9.6/static/server-start.html


您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL简单管理(一)

本文链接: https://www.lsjlt.com/news/42460.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python简单的用户管理
    用户管理 如果输入 delete, 则让用户输入” 用户名” 格式字符串, 根据用户名查找 dict 中数据, 若 存在数据则将该数据移除, 若用户数据不存在, 则提示不存在; 如果输入 update, 则让用户输入” 用户名:年龄:联系方...
    99+
    2023-01-31
    简单 用户 python
  • 用Python做一个简单的图书管理系统
    目录制定步骤1、进入提示语:2、获取用户输入:扩展:3、完善各指令程序4、优化程序,使代码更简洁扩展:制定步骤 1、进入提示语: 为了制作一个友好的“图书管理系统&rdq...
    99+
    2023-05-17
    Python 管理系统 Python图书管理系统
  • C#实现简单订单管理程序
    本文实例为大家分享了C#实现订单管理程序的具体代码,供大家参考,具体内容如下 订单管理的控制台程序,能够实现添加订单、删除订单、修改订单、查询订单、序列化与反序列化订单功能。 主要的...
    99+
    2024-04-02
  • 让管理变得更简单(3)
    一、     管理是什么——澄清对管理的一些误解   尽管管理已经成为一个前所未有热门的流行词,但是时至今日管理仍然是一门经常被误读的学科。有些人认为管理就是一种忍受,在一个组织中运用各种方式或条文来对成员进行约束,由此来使组织顺利运行;有...
    99+
    2023-01-31
    简单
  • 简单说说STL的内存管理
    1. 概述STL Allocator是STL的内存管理器,也是最低调的部分之一,你可能使用了3年stl,但却不知其为何物。 STL标准如下介绍Allocatorthe STL inc...
    99+
    2022-11-15
    STL 内存管理
  • 简单的图书管理系统(mysql)
    一、数据库结构设计 1.E-R图 2. 数据库创建语句 create database if not exists tsjy; use tsjy; 3. 表结构设计说明 借阅人表是一个实体表,它存储了借阅人的基本信息,如证件号、姓名、类别...
    99+
    2023-09-15
    数据库 mysql sql
  • PostgreSQL中的数组简单介绍
    本篇内容介绍了“PostgreSQL中的数组简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!假设你在...
    99+
    2024-04-02
  • 基于Python实现一个简单的学生管理系统
    目录序言代码实战效果展示序言 小学妹说要毕业了,学了一学期Python等于没学,现在要做毕设做不出来,让我帮帮她,晚上去她家吃夜宵。 当时我心想,这不是分分钟的事情,还要去她家,男孩...
    99+
    2022-12-31
    Python实现学生管理系统 Python学生管理系统 Python管理系统
  • C#如何实现简单订单管理程序
    这篇文章主要介绍“C#如何实现简单订单管理程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现简单订单管理程序”文章能帮助大家解决问题。订单管理的控制台程序,能够实现添加订单、删除订单、修...
    99+
    2023-06-30
  • 怎么用java实现一个简单的房屋管理程序
    这篇文章主要介绍了怎么用java实现一个简单的房屋管理程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。public class ApplicationInfo { ...
    99+
    2023-06-03
  • Java实现简单员工管理系统
    本文实例为大家分享了Java实现简单员工管理系统的具体代码,供大家参考,具体内容如下 代码如下: import java.util.*; public class Demo {   ...
    99+
    2024-04-02
  • java实现工资管理简单程序
    本文为大家分享了java实现工资管理简单程序的具体代码,供大家参考,具体内容如下 程序总体说明(ReadMe): 总体分为四部分: 管理程序(staffmanagment.java)...
    99+
    2024-04-02
  • Golang内存管理简单技巧详解
    目录引言预先分配切片结构中的顺序字段使用 map[string]struct{} 而不是 map[string]bool引言 除非您正在对服务进行原型设计,否则您可能会关心应用程序的...
    99+
    2024-04-02
  • Java实现简单酒店管理系统
    用Java编写一个简单的酒店管理系统,供大家参考,具体内容如下 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。 1、该系统的用户是:酒店前台。2、酒店使用...
    99+
    2024-04-02
  • C++实现简单学生管理系统
    本文实例为大家分享了C++实现简单学生管理系统的具体代码,供大家参考,具体内容如下 实现学生管理,其中关键字可以自行替换。经过Visual C++6.0验证可执行成功。 #inclu...
    99+
    2024-04-02
  • Java实现简单班级管理系统
     本文设计一个简单的班级管理系统,满足如下要求: 1、设计学生类Student,包含学号(String型)、姓名(String型)、性别(‘M’/&...
    99+
    2024-04-02
  • java实现简单图书管理系统
    本文实例为大家分享了java实现简单图书管理系统的具体代码,供大家参考,具体内容如下 JAVA练习的作业,题目如下: 设计一个图书管理系统类和用户类,要求具有以下功能: (1). 查...
    99+
    2024-04-02
  • C++实现简单信息管理系统
    本文实例为大家分享了C++实现简单信息管理系统的具体代码,供大家参考,具体内容如下 信息管理系统 因为学校布置了写一个信息管理系统的作业,所以写下了这个信息管理系统,这是用cpp写的...
    99+
    2024-04-02
  • Java实现简单学生管理系统
    本文实例为大家分享了Java实现简单学生管理系统的具体代码,供大家参考,具体内容如下 名为StudentManageTest的Java测试类 import java.util.Sca...
    99+
    2024-04-02
  • C++实现简单酒店管理系统
    本文实例为大家分享了C++实现简单酒店管理系统的具体代码,供大家参考,具体内容如下 酒店管理系统设计报告 一、 需求分析 题目要求如下: 某酒店有客房若干间,其中客房分为不同等级,如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作