热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Postgresql数据库控制命令介绍

前面我们通过“探索postgresql数据库(一)”和“探索postgresql数据库(二)”基本了解了postgresql数据库。接下来本文开始介绍下数据库控制(servercontrol)。。一、手动开启数据库(Startingthedatabaseservermanually)默认postgresql会随着系统自
前面我们通过“探索postgresql数据库(一)”和“探索postgresql数据库(二)”基本了解了postgresql数据库。接下来本文开始介绍下数据库控制(server control)。。

一、手动开启数据库(Starting the database server manually)
默认postgresql会随着系统自动启动,不过有时候设置改动可能需要手动停止或者启动数据库。
首先需要区别server和service两个概念。server指的是database server和他的一些进程,service指的是操作系统中被server包装起来的服务。server本质上可以在不同平台上以相同的方式工作,但是service就会因为各个操作系统不同而不同。
在所有操作系统平台,都有命令来启动postgresql server,如:

UBUNTU/DEBIAN pg_ctlcluster 9.0 main reload
RED HAT/FEDORA pg_ctl -D /var/lib/pgsql/data start
SOLARIS pg_ctl -D /var/lib/pgsql/data start
MAC OS pg_ctl -D /var/lib/pgsql/data start
FREEBSD pg_ctl -D /var/lib/pgsql/data start

在有些平台,也可以用这些命令启动。

RED HAT/FEDORA service postgresql start
WINDOWS net start postgres

二、安全快速停止数据库(Stopping the server safely and quickly)
可以用以下命令快速停止数据库:

pg_ctl -D datadir -m fast stop
如果想快速停止,就一定要加-m fast这个参数,因为默认postgresql是需要等所有用户结束才会关闭的。使用fast快速停止命令,所有用户在进行的操作都会终止。在关闭数据库时,postgresql和其他如Oracle, DB2, 或者SQLServer关系型数据库的区别是postgresql的事务回滚非常快,而其他数据库关闭可能需要很长时间。

三、紧急停止数据库(Stopping the server in an emergency)

pg_ctl -D datadir stop -m immediate
使用immediate模式和fast模式一样,都会强制中止所有用户的事务,关闭连接。不过immediate模式相当于数据库经历了崩溃,比如断电。下次重启时缓存的文件需要重建,数据库自己也需要对崩溃进行恢复。
需要dba注意的是,Oracle中的immediate模式相当于强制关闭数据库,postgresql和oracle这个是不一样的。

四、重新加载数据库配置文件(Reloading the server configuration files)
postgresql配置文件中的一些参数需要重新加载才会生效。以下是各个操作系统平台重新加载的命令:

UBUNTU/DEBIAN pg_ctlcluster 9.0 main reload
RED HAT/FEDORA service postgresql reload 或pg_ctl -D /var/lib/pgsql/data reload
SOLARIS pg_ctl -D /var/lib/pgsql/data reload
MAC OS pg_ctl -D /var/lib/pgsql/data reload
FREEBSD pg_ctl -D /var/lib/pgsql/data reload

我们也可以在连接postgresql的时候重新加载配置文件,不过前提是你登陆的是超级用户:

postgres=# select pg_reload_conf();
pg_reload_conf
----------------
t
在pg_settings这个系统表中有一个context字段,如果字段值是”sighup”,那么就必须要reload。以下列出在数据库配置中可能需要改变的参数:

forummon=# select name,setting,unit,(source='default') as is_default from pg_settings
where cOntext='sighup' and (name like '%delay' or name like '%timeout') and setting !='0' ;
name | setting | unit | is_default
------------------------------+---------+------+------------
authentication_timeout | 60 | s | t
autovacuum_vacuum_cost_delay | 20 | ms | t
bgwriter_delay | 200 | ms | t
checkpoint_timeout | 300 | s | t
max_standby_archive_delay | 30000 | ms | t
max_standby_streaming_delay | 30000 | ms | t
wal_receiver_timeout | 60000 | ms | t
wal_sender_timeout | 60000 | ms | t
wal_writer_delay | 200 | ms | t
(9 rows)
五、快速重启数据库(Restarting the server quickly)
有些数据库配置的修改必须要求重启数据库,如何快速重启就显得特别重要。当然重启最好是在数据库压力很小的时候。
基础快速重启命令:

pg_ctl -D datadir restart -m fast
重启表面上看是先停止,在启动,很简单的一个步骤。在大多数情况下,这个确实很简单。

六、防止新链接(Preventing new connections)
在某些紧急情况下,dba们可能需要完全锁定数据库,或者静止特定的人连接。
一下是防止新链接的几个方法:
1、暂停或者恢复会话池;后面介绍
2、关闭数据库,不推荐这样做;
3、设置特定数据库的连接数为0;
ALTER DATABASE foo_db CONNECTION LIMIT 0;
这个可以限制除了超级用户外的其他用户。
4、设置特定用户的连接数为0
ALTER USER foo CONNECTION LIMIT 0;
这个可以限制除了超级用户外的其他用户。
5、修改host-based authentication (HBA)文件,重新加载数据库
先备份下pg_hba.conf文件,修改pg_hba.conf文件。
###如下两行将会禁止所有用户连接数据库,包括超级用户:

# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all reject
host all all 0.0.0.0/0 reject
###如果需要让postgres这个超级用户连接,可以修改成如下设置:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all postgres ident
local all all reject
host all all 0.0.0.0/0 reject
d.重新加载数据库

七、限制每个连接用户只能打开一个session(Restricting users to just one session each)
如果需要控制服务器资源,你可能会希望一个用户只能同时打开一个session连接。当然这个也可以用来限制用户,这个上面已经有介绍。以下是基本命令:

postgres=# ALTER ROLE fred CONNECTION LIMIT 1;
需要取消限制可以把值设为-1。
查询用户链接限制

SELECT rolconnlimit FROM pg_roles WHERE rolname = 'postgres';
查看用户当前连接数

SELECT count(*) FROM pg_stat_activity WHERE usename = 'postgres';


推荐阅读
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux神奇漏洞:长按回车键70秒 即可轻松拿到Root权限
    一般来说获取系统root权限是很困难的,尤其是加密系统中,但西班牙安全研究员hectormarco、ismaelripoll发现,linux系统下只需按住回车键70秒钟,就能轻 ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • 本文详细介绍了使用 SQL Load 和 Excel 的 Concatenate 功能将数据导入 ORACLE 数据库的方法和步骤,同时介绍了使用 PL/SQL tools 将数据导入临时表的方法。此外,还提供了一个转链接,可参考更多相关内容。摘要共计XXX字。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 如何将CentOS8转换为CentOSStream
    CentOS Stream是一个持续交付的Linux发行版,它在RHEL之前处于领先地位。它将具有滚动发布,即不断进行更改。CentOS将成为一个上游版本,它将具有测试补丁和更新。 ... [详细]
  • python3.7 安装pip3_python3的pip3安装
    ---恢复内容开始---pip3的安装需要对应一整套python的编译工具库,所以安装好的pip3是这个样子:inearAi:~$pip3-Vpi ... [详细]
author-avatar
lj劲-Ybw_582
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有