【数据库学习】pg安装与运维
1,安装与配置
#安装
yum install https:....rpm
1)安装目录
bin目录:二进制可执行文件目录,此目录下有postgres、psql等可执行程序;pg_ctl工具在此目录,可以通过pg_ctl --help查看具体使用。
conf目录:
empty
include:头文件目录
lib:动态库目录,如libpq.so
share:存放文档和配置模板文件,一些扩展包的sql文件在子目录extension下。
2)数据目录
/var/lib/pgsql/<verson>/data。
i>pg_hba.conf(认证配置文件)
用于配置数据库的远程连接,通过加入以下命令行,运行任何用户远程连接本数据库,连接时需要提供密码。
host replication all 127.0.0.1/32 md5
host replication all 10.99.99.99 md5 # ip为10.99.99.99机器可访问
host all all 0.0.0.0/0 md5 # navicat可访问。md5表示要求客户端提供一个 MD5 加密的口令进行认证。如果改为trust表示无条件地允许联接。
ii>postgresql.conf(主配置文件)
所有配置信息在系统视图pg_settings中可查看,通过context可知修改相关配置后是否需要重启。
- internal 只读参数,初始化实例时写死的。
- postmaster 改变后需要重启。
- sighup/backend 不需要重启,需要向postmaster主进程发送SIGHUP信号,让其重启装配配置新的参数。运行pg_ctl reload命令重新装配。
- superuser 超级用户使用set命令改变。
- user 普通用户使用set命令改变。
## 连接配置项
listen_addresses = '*' # 默认为localhost,这会导致远程主机无法登录数据库。写具体网络ip表示让特定机器登录,*表示所有地址都可监听。
port = 5432 # pg默认端口为5432。多个pg实例可以设置不同端口。
max_connections #允许数据库连接的最大并发连接数,默认100,修改后需要重启。通过sql:show max_connections;也可以查看
superuser_reserved_connections #超级用户连接数。默认为3,为防止普通用户消费连接数过多导致超级用户无法连接pg。## 日志配置项
logging_collector = on #开启日志收集。pgSQL10已经默认开启
log_directory = 'log' #日志目录。日志切换与覆盖有多种方案,可配。一是每天生成一个新的日志文件;二是日志写满到一定大小开启新文件;三是只保留最近7天日志,循环覆盖(pgSQL10默认模式)。## 内存配置项
shared_buffers = 4096MB # min 128kB 共享内存大小,主要用于共享数据块。默认值为32MB,尽量设置大一些。具体说明见后文讲解。
work_mem = 4MB # min 64kB 单个SQL执行、排序、Hash Join时使用的内存,执行完毕后释放。设置大一些会提高排序操作效率。具体说明见后文讲解。
max_stack_depth #服务器执行堆栈的最大安全深度,默认为2M。如果发现不能运行复杂的函数时,可以调高此配置,但一个正在运行的递归函数可能会导致pg后台服务进程崩溃,慎重设置。
iii>其它文件
文件/目录 | 作用 | 备注 |
---|---|---|
PG_VERSION | pg版本号 | |
postmaster.opts | 记录服务器上次启动的命令行参数 | |
base | 默认表空间的目录 | 下面子目录以对应数据库的OID命名,对应OID子目录下存放着这个数据库的表、索引等数据文件。OID通过select oid,datname from pg_database; 查询。 |
global | 一些共享系统表的目录 | |
log | 程序日志目录 | pg10版本之前未pg_log目录 |
pg_commit_ts | 视图提交的时间戳数据 | pg9.5之后 |
pg_wal | WAL日志的目录,在pg10之前此目录是pg_clog |
oid(objectID,行对象标识符)
该系统字段只有在创建表时使用了with oids
或配置参数default_with_oids
的值为真时出现。字段类型也是oid,是4字节无符号整数,不能提供大数据范围内的唯一性保证,因此pg官方不推荐在用户表中使用oid字段。
2,psql命令行操作
# 数据库连接: psql命令在postgresql/bin目录下。
# 添加参数-E可以在执行psql快捷命令时同时输出对应sql。也可以通过命令\set ECHO_HIDDEN on|off控制
psql "host=127.0.0.1 port=5432 user=postgres password=123456 dbname=postgres"
psql -U postgres -d DB_NAME -h localhost -c 'select * from user_info'
# 数据导出-pg_dump命令
pg_dump "host=XX.XX.XX.XX port=5432 user=XXXX password=XXXX dbname=XXXXX" -t table_name -f table_name.sql
# 数据导出-psql命令
psql "host=XX.XX.XX.XX port=5432 user=XXX password=XXX dbname=XXX" -f table_name.sql
常见psql快捷命令(通过psql连接数据库后,通过“\”开头的快捷命令进行数据库相关操作,tab键可补全命令):
说明 | 命令 | 备注 |
---|---|---|
退出命令行模式 | \q | |
查看数据库 | \l | 小写L |
切换数据库 | \c dbName | |
查询当前登录的数据库和用户 | \c | You are now connected to database “postgres” as user “postgres” |
查看sql语法(help) | \h create user | |
查看更多命令 | ? | |
查看所有表 | \d | |
查看结构 | \d name | name可以包含通配符*或?,可以是表名、索引、视图、序列、函数。如果使用\d+ 会显示的更详细 |
列出所有schema | \dn | |
查看所有表空间 | \db | |
查看所有角色和用户 | \du或\dg | pg中用户和角色是不区分的 |
查看表权限分配情况 | \dp或\z | |
查看执行时间 | \timing on sql语句 | |
指定客户端字符编码 | \encoding gbk | utf8 |
执行外部文件的sql命令 | \i fileName 或 psql -x -f fileName | |
编辑器 | \e | 类似vi,退出vi后会执行其中输入的内容 |
查看或编辑函数 | \ef 函数名 | 不加函数名显示函数模板。退出vi后可\reset来清除命令缓冲区数据,防止误操作。 |
查看或编辑视图 | \ev 视图名 | 不加函数名显示视图模板。退出vi后可\reset来清除命令缓冲区数据,防止误操作。 |
3,系统命令
1)查看版本信息
说明 | 命令 |
---|---|
查看客户端版本 | psql --version |
查看服务器版本详细信息 | select version(); |
查看服务器版本信息 | show server_version; |
查看服务器数字版本信息包括小版号 | SHOW server_version_num; |
2)时间相关命令
说明 | 命令 | 备注 |
---|---|---|
查看数据库启动时间 | select pg_postmaster_start_time() | |
查看最后load配置文件的时间 | select pg_conf_load_time() | pg_ctl reload后改变这个时间 |
显示当前数据库时区 | show timezone | 时区不一样的情况下,数据库时间和操作系统时间不一致。;PRC: People’s Republic of China |
查看当前时间 | select now() | |
设置时区 | set time zone ‘GMT’ | PRC为北京时区 |
查看所有时区的名字 | SELECT * FROM pg_timezone_names |
3)其它常用命令
说明 | 命令 | 备注 |
---|---|---|
当前连接数据库 | select current_catalog, current_database(); | 两者结果一样 |
查看pg是否正在做基础备份 | select pg_is_in_backup(),pg_backup_start_time(); | |
查看数据库大小 | select pg_database_size('ngsoc'), pg_size_pretty(pg_database_size('ngsoc')); | pg_size_pretty会转换成MB\GB等格式展示 |
4,服务启停及原理
1)服务启动
- 直接运行postgres进程
/lwh/postgresql/bin/postgres -D /lwh/data/postgresql & #-D指定数据目录,&表示后台执行。postgres也可以换成postmaster,一回事。如果权限不够在命令前面添加:su postgres -c
- 使用pg_ctl命令启动
/lwh/postgresql/bin/pg_ctl start -D /lwh/data/postgresql #-D指定数据目录
2)服务停止
- 直接向运行的postgres主进程发送signal信号
signal信号 | 关机模式 | 描述 |
---|---|---|
SIGTERM | Smart Shutdown 智能关机 | 服务器将不允许新连接,等所有连接断开才关闭数据库 |
SIGINT | Fast Shutdown 快速关机 | 不再允许新连接,并向所有子进程发送 SIGINT 信号,让它们立刻退出,然后等待子进程退出后关闭数据库 |
SIGQUIT | Immediate Shutdown 立即关闭 | 立即关闭并退出,下次启动时数据库重放WAL日志进行恢复。仅用于紧急情况的关闭。 |
- 使用pg_ctl命令停止数据库
#没有权限需要在最前面添加su postgres -c
pg_ctl stop -D dataDir -m smart #对应Smart Shutdown 模式;fast对应 Fast Shutdown;immediate 对应 Immediate Shutdown.具体说明可通过--help查看。默认模式是哪个?谁知道啊???
3)服务检测是否启动
ps aux | grep /lwh/data/postgresql | grep -v grep | wc -l #返回值不为0表示服务存在
ps aux | grep /lwh/data/postgresql | grep -v grep | awk '{print $2}' #返回具体的pid表示服务存在
或者:
netstat -ntlp | grep 5432 #5432为pg默认端口
5,备份与还原
分为逻辑备份和物理备份。
1)pg_dump/pg_dumpall命令
pg_dumpall是将一个pg集群全部转存到另一个脚本文件(sql脚本、归档文件)中,而pg_dump命令可以选择一个数据库或部份表进行备份。pg_dump结合pg_restore使用,能灵活备份和恢复。
2)冷备份
最简单的物理备份就是冷备份,即:停止pg,然后拷贝pg的data目录。
3)热备份
即不停止数据库进行备份,常见的方法有:PITR方法、使用文件系统或块设备级别的快照功能完成备份。Linux下最简单的备份方式是使用LVM的快照功能。
相关文章:

【数据库学习】pg安装与运维
1,安装与配置 #安装 yum install https:....rpm1)安装目录 bin目录:二进制可执行文件目录,此目录下有postgres、psql等可执行程序;pg_ctl工具在此目录,可以通过pg_ctl --help查看具体使用。 conf目录&…...

第二篇【传奇开心果短博文系列】Python的OpenCV库技术点案例示例:图像处理
传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例短博文系列 博文目录一、项目目标二、第一个示例代码三、第二个示例代码四、第三个示例代码五、第四个示例代码六、第五个示例代码七、知识点归纳总结 系列短博文目录 Python的OpenCV库技术点案例示例短博文…...

【vue oidc-client】invalid_requestRequest Id: 0HN0OOPFRLSF2:00000002
需求:完成统一登录,需要从三方平台跳到我们的平台。 oidc-client报错记录。这个一般是配置信息出错,需要和三方平台进行沟通,一定要把client_id,密钥进行对应; 同时关于此次出错还修改了以下代码ÿ…...
什么是中间人攻击? ssh 连接出现 Host key verification failed 解决方法
文章目录 前言known_hosts 文件是什么文件路径示例 连接出现 Host key verification failedssh-keygen -R [hostname or ip address]删除整个 known_hosts 文件 其它聊聊中间人攻击ssh 如何保证安全?加密流程漏洞在哪里如何避免中间人攻击 个人简介 前言 最近服务器…...
数据结构系统刷题
本文为系统刷leetcode的记录,会记录自己根据代码随想录刷过的leetcode,方便直接点开刷题,时常更新 时间复杂度简记为s 空间复杂度简记为k 数组 704 二分查找 一维二分查找 (1)[left, right] class Solution { publi…...

【RabbitMQ】延迟队列之死信交换机
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《RabbitMQ实战》。🎯🎯 &am…...

2024交通运输工程与土木建筑工程国际会议(ICTECCE2024)
2024交通运输工程与土木建筑工程国际会议(ICTECCE2024) 会议简介 2024年国际交通工程和土木建筑工程会议(ICTECCE 2024)将在中国杭州举行。ICTECCE 2024致力于为交通工程和土木工程材料领域的学者、工程师和研究人员提供一个大型学术交流平台和双向交流…...

搜索引擎Elasticsearch了解
1.Lucene 是什么? 2.模块介绍 Lucene是什么: 一种高性能,可伸缩的信息搜索(IR)库 在2000年开源,最初由鼎鼎大名的Doug Cutting开发 是基于Java实现的高性能的开源项目 Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读…...

【操作系统基础】【CPU访存原理】:寄存 缓存 内存 外存、内存空间分区、虚拟地址转换、虚拟地址的映射
存储器怎么存储数据、内存空间分区、虚拟地址转换 计算机的存储器:寄存 缓存 内存 外存(按功能划分) 计算机的处理器需要一个存储器来存储大量的指令和数据以便自己不断取指执行和访问数据。 内存(内存就是运行内存,…...

windows下git pull超时,ping不通github
报错 ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 解决办法 修改hosts 最后加一行,文件位置:…...

springboot快速写接口
1. 建proj形式 name会变成文件夹的名字,相当于你的项目名称 基础包 2. 基础依赖 3. 配置数据库 这里要打开mysql,并且创建数据库 方法: 安装好数据库,改好账号密码用navicat来建表和账号配置properties.yml文件即可 4.用res…...

数据结构排序算详解(动态图+代码描述)
目录 1、直接插入排序(升序) 2、希尔排序(升序) 3、选择排序(升序) 方式一(一个指针) 方式二(两个指针) 4、堆排序(升序) 5、冒…...
2024-01-25 力扣高频SQL50题目1174. 即时食物配送
题目如下: 配送表: Delivery -------------------------------------- | Column Name | Type | -------------------------------------- | delivery_id | int | | customer_id | int | | order_date…...

java web 校园健康管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web校园健康管理系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…...

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测
回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据…...
Java转成m3u8,hls格式
Java转成m3u8,hls格式 需求分析 大致思路 循环文件夹下面所有文件判断当前文件是否是视频文件,如果是视频文件先转为ts文件 因为听别人说先转成ts之后再切片会快很多 转成ts文件,并为这些文件单独生成一个目录,如果目录不存在则新建一个目…...

jmeter之接口测试实现参数化(利用函数助手),参数值为1-9(自增的数字)
1.前言 思考:为什么不用postman,用postman的话就得导入csv文件/json文件 如果不想导入文件,postman是实现不了,因为postman每次只会运行一次 2.jmeter函数助手实现参数化 (1)新建“线程组”--新建“http…...

如何在 Ubuntu 22.04 上安装 Apache Web 服务器
前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 22.04 上安装 Apache Web 服务器 介绍 Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它…...

【python爬虫】爬虫编程技术的解密与实战
🌈个人主页:Sarapines Programmer🔥 系列专栏: 爬虫】网络爬虫探秘⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌼实验目的 …...

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法
VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法 0.写在前面00.电脑配置01.思路 1.VisualSVN Server下载安装01.下载02.安装03.电脑命名不能有中文04.制作VisualSVN Server快捷方式05.License limits exceeded, Som…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...