【postgresql 基础入门】数据库服务的管理
数据库服务管理
专栏内容:
- postgresql内核源码分析
- 手写数据库toadb
- 并发编程
开源贡献:
- toadb开源库
个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.
系列文章
- 初始化集群
- 数据库服务管理
一、前言
postgresql 数据库是一款通用的关系型数据,在开源数据库中能与商业数据媲美,在业界也越来越流行。
因为是开源数据库,不仅公开源码,还有很多使用案例,好用的插件,所以它的慢慢变成了数据库的先驱和标准,通过postgresql可以很好从使用到原理,彻底搞懂;
如果是学习编程,也可以学到丰富的编程知识,数据结构,编程技巧,它里面还有很多精妙的架构设计,分层思想,可以灵活定制的思想。
本专栏主要介绍postgresql 入门使用,数据库维护管理,通过这些使用来了解数据库原理,慢慢了解postgresql是什么样的数据库,能做那些事情,以及如何做好服务,最关键的是这些知识都是面试的必备项。
二、概述
本文主要介绍postgresql 数据库服务的启动,查看,停止,以及配置修改后的重新加载。
经常接到开发人员反馈,SQL执行失败了,或者JDBC连不上数据库了,不知道什么原因,有一部分原因其实很简单,数据库服务没有启动。使用数据库,首先是启动数据库服务,或者查看数据库服务是否正常,保证我们后续的使用没有问题。
三、原理
数据库其实也是一个应用软件,不过它机制比较庞大而已,它一般采用C/S架构。
我们使用的图形化客户端或者命令行客户端,都需要网络连接到数据库的服务端,执行的命令也是由客户端发送给服务端执行,再由服务端发送到客户端。
postgresql数据库服务端,采用多进程模式,有主进程进行网络监听服务,每连接一个客户端,都会fork产生一个服务进程;这样每个客户端都有独立的服务进程处理;
四、数据库服务管理命令
数据库服务的管理命令是 pg_ctrl ,先看一下帮助
先进入到安装目录下 /opt/postgres/bin/, 这个路径按自己实际安装路径执行;
[senllang@hatch bin]$ cd /opt/postgres/bin/
[senllang@hatch bin]$ ./pg_ctl --help
pg_ctl is a utility to initialize, start, stop, or control a PostgreSQL server.Usage:pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s][-o OPTIONS] [-p PATH] [-c]pg_ctl stop [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s][-o OPTIONS] [-c]pg_ctl reload [-D DATADIR] [-s]pg_ctl status [-D DATADIR]pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]pg_ctl logrotate [-D DATADIR] [-s]pg_ctl kill SIGNALNAME PIDCommon options:-D, --pgdata=DATADIR location of the database storage area-s, --silent only print errors, no informational messages-t, --timeout=SECS seconds to wait when using -w option-V, --version output version information, then exit-w, --wait wait until operation completes (default)-W, --no-wait do not wait until operation completes-?, --help show this help, then exit
If the -D option is omitted, the environment variable PGDATA is used.Options for start or restart:-c, --core-files allow postgres to produce core files-l, --log=FILENAME write (or append) server log to FILENAME-o, --options=OPTIONS command line options to pass to postgres(PostgreSQL server executable) or initdb-p PATH-TO-POSTGRES normally not necessaryOptions for stop or restart:-m, --mode=MODE MODE can be "smart", "fast", or "immediate"Shutdown modes are:smart quit after all clients have disconnectedfast quit directly, with proper shutdown (default)immediate quit without complete shutdown; will lead to recovery on restartAllowed signal names for kill:ABRT HUP INT KILL QUIT TERM USR1 USR2Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>
可以看到,主要有几个管理选项
- init 初始化服务,也就是初始化数据库集群,这在前面已经分享过,这里只是用pg_ctrl来调用而已;
- start 启动数据库服务
- stop 停止数据库服务
- status 查看服务状态
- restart 重启服务
- reload 重新加载
五、初始化数据库服务
前面已经介绍过详细的初始化数据库集群,这是另一种命令执行方式,最终还是调用initdb来完成 。
[senllang@hatch bin]$ ./pg_ctl init -D testdemo1
The files belonging to this database system will be owned by user "senllang".
This user must also own the server process.Using default ICU locale "en_US".
Using language tag "en-US" for ICU locale "en_US".
The database cluster will be initialized with this locale configuration:provider: icuICU locale: en-USLC_COLLATE: en_US.UTF-8LC_CTYPE: en_US.UTF-8LC_MESSAGES: en_US.UTF-8LC_MONETARY: en_US.UTF-8LC_NUMERIC: en_US.UTF-8LC_TIME: 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.creating directory testdemo1 ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... okinitdb: warning: enabling "trust" authentication for local connections
initdb: hint: 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:/opt/postgres/bin/pg_ctl -D testdemo1 -l logfile start
在当前目录下,初始化testdemo1数据库集群目录
六、启动数据库服务
启动数据库服务有两种方式,一种是在直接执行数据库主程序,当前终端退出后,数据库服务也就停止了;另一种是将数据库服务以后台服务形式启动,这样它就不依赖于当前终端了;
- 后台服务方式启动服务
这个命令其实在初始化结束时,已经提示了
[senllang@hatch bin]$ ./pg_ctl -D testdemo1 -l logfile start
waiting for server to start.... done
server started
其中参数需要指定
- -D 数据库集群目录,也就之前初始化的
- -l 服务启动日志输出的文件
七、查看数据库服务
在使用数据库之前,或者连接数据库失败时,我们首先需要查看数据库服务是否正常。
数据库服务状态的查看方式常用的有几种:
- 通过服务管理命令查看
- 通过数据库运行日志查看数据库服务运行情况
- 通过系统命令查看后进程
- 通过系统网络命令查看网络监听和连接状态
查看服务状态
通过pg_ctl服务管理命令的 status参数查看,需要指定 -D 集群目录(也可以是PGDATA环境变量代替)
[senllang@hatch bin]$ ./pg_ctl -D testdemo1 status
pg_ctl: server is running (PID: 136824)
/opt/postgres/bin/postgres "-D" "testdemo1"
查看运行日志
运行日志默认是没有输出到文件的,在启动之前需要在配置文件中将参数logging_collector打开,这样我们才可以在文件中进行查看,这个参数变化,需要重启服务
vi testdemo1/postgresql.conf
logging_collector = on ./pg_ctl -D testdemo1 -l logfile restart [senllang@hatch bin]$ cd $PGDATA/log
[senllang@hatch log]$ ll
total 4
-rw-------. 1 senllang develops 616 Sep 3 08:40 postgresql-2023-09-03_084025.log
这样就可以看到log目录,同时已经生成了一个日志文件,文件名默认按照时间来命名,打开可以看到已经启动成功,等待连接的到来;
[senllang@hatch log]$ vi postgresql-2023-09-03_084025.log
2023-09-03 08:40:25.326 CST [148029] LOG: starting PostgreSQL 16beta1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-19), 64-bit
2023-09-03 08:40:25.327 CST [148029] LOG: listening on IPv6 address "::1", port 5433
2023-09-03 08:40:25.327 CST [148029] LOG: listening on IPv4 address "127.0.0.1", port 5433
2023-09-03 08:40:25.333 CST [148029] LOG: listening on Unix socket "/tmp/.s.PGSQL.5433"
2023-09-03 08:40:25.339 CST [148033] LOG: database system was shut down at 2023-09-03 08:39:17 CST
2023-09-03 08:40:25.343 CST [148029] LOG: database system is ready to accept connections
~
~
查看后台进程
当然也可以通过linux 系统命令查看后台服务进程是否启动,这需要熟悉后台进程
[senllang@hatch bin]$ ps -ef|grep postgres|grep -v grep
senllang 148029 1 0 08:40 ? 00:00:00 /opt/postgres/bin/postgres -D testdemo1
senllang 148030 148029 0 08:40 ? 00:00:00 postgres: logger
senllang 148031 148029 0 08:40 ? 00:00:00 postgres: checkpointer
senllang 148032 148029 0 08:40 ? 00:00:00 postgres: background writer
senllang 148034 148029 0 08:40 ? 00:00:00 postgres: walwriter
senllang 148035 148029 0 08:40 ? 00:00:00 postgres: autovacuum launcher
senllang 148036 148029 0 08:40 ? 00:00:00 postgres: logical replication launcher
可以看到,父进程号1对应的就是数据库服务主进程,pid为148029, 其它都是它的六个子进程
查看网络服务
默认配置下,监听IP为 localhost,端口为 5432,协议采用tcp
[senllang@hatch bin]$ netstat -an |grep tcp|grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
查看网络,可以看到正处于listen状态,如果支持IPv6,可以看到tcp6协议;
八、重新加载配置
在postgresql 的配置中,大致分为需要重启的配置和不需要重启服务的配置;对于不需要重启服务的配置,就可以通过重新加载配置参数,让配置生效;
[senllang@hatch bin]$ ./pg_ctl -D testdemo1 reload
server signaled
可以看到,打印signaled,其它就是给服务主进程发送了一个信号,这就是我的专栏 并发控制中,分享的多任务间通信的一种。
九、停止数据库服务
当数据库服务需要停机维护时,我们先要停止数据库服务,使用stop参数即可;
[senllang@hatch bin]$ ./pg_ctl -D testdemo1 stop
waiting for server to shut down.... done
server stopped
在stop 时,可以用-m 指定采用什么方式停止,可以有三种选项
- smart 当有客户端连接存在时,会等所有客户端连接断开时,才进行停止;
- fast 快速停止,当有客户端连接时,会让它们主动断开,并进行服务停止;这也是默认的方式;
- immediate 这个就是立即停止,可能还有一些任务没有做完,下次启动时会触发恢复;
十、重启数据库服务
当服务启动或没有启动时,都可以采用重启的方式再次启动;
[senllang@hatch bin]$ ./pg_ctl -D testdemo1 restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2023-09-03 09:39:15.106 CST [149106] LOG: redirecting log output to logging collector process
2023-09-03 09:39:15.106 CST [149106] HINT: Future log output will appear in directory "log".done
server started
可以看到,它其实就是先stop,然后再start服务;
十一、总结
对于数据库服务,一般都是在后台运行,看到不摸不着,很多时间我们都没有注意,但当我们遇到问题时,又一时不知所措,本文的分享希望能带给大家一些帮助,有兴趣的同学可以一起来探讨,在评论区留下你的观点。
结尾
非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!
作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。
注:未经同意,不得转载!
相关文章:
【postgresql 基础入门】数据库服务的管理
数据库服务管理 专栏内容: postgresql内核源码分析手写数据库toadb并发编程 开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤ÿ…...
githubPage部署Vue项目
github中新建项目 my-web (编写vue项目代码) myWebOnline(存放Vue打包后的dist包里面的文件) 发布流程 (假设my-web项目已经编写完成)Vue-cli my-web vue.config.js文件中 const { defineConfig } require(vue/cli-service)…...
【网络编程】网络原来这么简单(更新中)
故事背景:有一天小胖和他的朋友细狗出去吃饭,聊着聊着就聊到了网络,小胖是学校里的编程大佬,而细狗只是个空有求知欲的编程小白。 细狗:胖儿啊,你说计算机是怎么通信的我感觉好抽象啊。为啥别人给我发个消息…...
监控系统典型架构
监控系统典型架构如下: 从左往右看: 采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。 对时序库的数据进行分析和可视化。 告警引擎产生告警事件之后交给告警发送模块做不同媒介的通知。 可视化比…...
jsp 新能源汽车论坛网Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 JSP 新能源汽车论坛网是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…...
Code Snippet的使用
文章目录 前言Code Snippet:就是咱们在VS中敲的prop、propfull、ctol【构造器快捷键】、for等快捷键,然后按tab键自动生成代码1.VS自带的:prop、propfull、ctol【构造器快捷键】、for等快捷键,直接使用2.自定义Snippet: 巨人的肩膀…...
华为云云服务器评测|华为云耀云L搭建zerotier服务测试
0. 环境 - Win10 - 云耀云L服务器 1. 安装docker 检查yum源,本EulerOS的源在这里: cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 docker run hello-world 2. 运行docker镜像 默认配…...
企业电脑文件加密系统 / 防泄密软件——「天锐绿盾」
「天锐绿盾」是一种公司文件加密系统,旨在保护公司内网数据安全,防止信息泄露。该系统由硬件和软件组成,其中包括服务端程序、控制台程序和终端程序。 PC访问地址: isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c…...
单条视频涨粉50w,逃出大英博物馆背后的逻辑是什么?
为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出8月月度榜单,从创作者、品牌、品类多方面入手,解析月榜数据,为从业者提供参考。 一条视频涨粉50w 情感共鸣是爆火的核心 据8月的『涨粉排行榜』TOP500数据显示,…...
AIGC(生成式AI)试用 1 -- 基本文本查询
以一个字起,依次加一个字构成新句,不断加字使句子越来越长,也许越来越有趣。 1. 使用不同的生成AI提问,提取结果(全部 或 第一句),对比结果,个人评价更喜欢哪个(绿色底色…...
php如何处理高并发请求
PHP 处理高并发请求的方法: 使用异步框架:通过使用异步处理方式,可以有效地降低 PHP 处理请求的响应时间,避免因为 IO 操作而导致的等待阻塞。常用的异步框架有ReactPHP和Swoole等。 使用缓存:使用缓存可以减少每个请求…...
控制台实现汽车租赁系统
汽车租赁系统需求:(基于控制台实现,适合基础小白练习使用) 1、包含汽车租赁和汽车管理两个模块 2、汽车租赁需要包含汽车租赁天数以及汽车租金结算功能 3、汽车管理需要包含租赁汽车的添加、删除、修改、查询功能 代码如下&#…...
机器学习和数据挖掘03-模型性能评估指标
Accuracy(准确率) 概念:模型正确预测的样本数量与总样本数量的比例。 公式:Accuracy (TP TN) / (TP TN FP FN) TP (True Positives):正确预测为正例的样本数。即模型正确地将正例判定为正例。 TN (True Negati…...
PageNumberPagination、LimitOffsetPagination、CursorPagination
数据 from django.db import modelsclass User(models.Model):username models.CharField(max_length64, verbose_name用户名)password models.CharField(max_length64, verbose_name密码)# 用户类型user_type models.IntegerField(choices((1, 菜鸟用户), (2, 普通用户), …...
怎么把视频转换成mp4格式
怎么把视频转换成mp4格式?如今,随着科技的不断发展,我们在工作中接触到的多媒体视频格式也越来越多。其中,MP4作为一种广泛兼容的视频格式,在许多软件中都能轻松播放,并且成为了剪辑与裁剪视频时大家常用的…...
正则判断字符是否包含手机号
字符前后不能是数字,满足手机号标准 String msg "19009098989";String mobliePattern "((?<!\\d))(mobile|手机号|)(|\\[|\\\":\\\"|:|:||:|)(1)([3-9]{1}\\d{1})(\\d{4})(\\d{4})(\\]|\\\"||)((?!\\d))";String mobileR…...
OSCP系列靶场-Esay-Sumo
OSCP系列靶场-Esay-Sumo 总结 getwebshell : nikto扫描 → 发现shellshock漏洞 → 漏洞利用 → getwebshell 提 权 思 路 : 内网信息收集 → 内核版本较老 →脏牛提权 准备工作 启动VPN 获取攻击机IP → 192.168.45.194 启动靶机 获取目标机器IP → 192.168.190.87 信息收…...
本地电脑搭建web服务器、个人博客网站并发布公网访问 【无公网IP】(1)
文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会,网络已经成为我们生活离不开的必需品,而纷繁…...
Python基础List列表定义与函数
如何定义一个非空的列表? name_list ["liming","xiaohong",15,{"hobby":"basketball"}] 列表的特点: 1.列表是有序的 2.可以存放多个元素 3.每个元素可以是任何数据类型 定义一个空列表 name_list [] 访…...
typeScript--[数据定义]
一.安装ts 1.命令行运行如下命令,全局安装 TypeScript: npm install -g typescript2.安装完成后,在控制台运行如下命令,检查安装是否成功 tsc -V 二.创建ts文件 1.创建一个day01.ts文件,随便在里面码一点代码&…...
【常见相机模型】
常见相机模型 enum class Type {kPinhole 0,kUnifiedProjection 1,kOmni 2, //optimize_on_spherekEqFisheye 3};其余类型optimize_on_plane这4种类型的相机模型具有以下差异: kPinhole (针孔相机模型):这是最基本和常见的相机模型。它假设光线通过…...
大数据-玩转数据-Flink状态编程(上)
一、Flink状态编程 有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。 SparkStreaming在状态管理这块做的不好, 很多时候需要借助于外部存储(例如Redis)来手动管理状态, 增加了编…...
主动获取用户的ColaKey接口
主动获取用户的ColaKey接口 一、主动获取用户的ColaKey接口二、使用步骤1、接口***重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议***2、请求参数 三、 请求案例和demo1、请求参数例子(POST请求,参数json格式)2、响应返…...
C#写一个UDP程序判断延迟并运行在Centos上
服务端 using System.Net.Sockets; using System.Net;int serverPort 50001; Socket server; EndPoint client new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号CreateSocket();void CreateSocket() {server new Socket(AddressFamily.InterNetwork, SocketT…...
Kafka核心原理第二弹——更新中
架构原理 一、高吞吐机制:Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的? 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区,默认是轮询来负载均衡,但是如果指定了一个分区key&#x…...
巨人互动|游戏出海H5游戏出海规模如何?
H5游戏出海是指将H5游戏推广和运营扩展到国外市场的行为,它的规模受到多个因素的影响。本文小编讲一些关于H5游戏出海规模的详细介绍。 1、市场规模 H5游戏出海的规模首先取决于目标市场的规模。不同国家和地区的游戏市场规模差异很大,有些市场庞大而成…...
【爬虫】实验项目三:验证码处理与识别
目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求: 改进要求A: 改进要求B: 四、实验过程 基本要求 五、源码如下 六、资料 一、实验目的 部分网站可能会使用验证机制来阻止用户无效登录或者是验证用户不是用程…...
广东成人高考报名将于9月14日开始!
截图来自广东省教育考试院官网* 今年的广东成人高考正式报名时间终于确定了! 报名时间:2023年 9 月14—20日 准考证打印时间:考前一周左右 考试时间:2023年10月21—22日 录取时间:2023年12 月中上旬 报名条件: …...
pytorch中文文档学习笔记
先贴上链接 torch - PyTorch中文文档 首先我们需要安装拥有pytorch的环境 conda指令 虚拟环境的一些指令 查看所有虚拟环境 conda info -e 创建新的虚拟环境 conda create -n env_name python3.6 删除已有环境 conda env remove -n env_name 激活某个虚拟环境 activate env…...
element-ui全局导入与按需引入
全局引入 npm i element-ui -S 安装好depencencies里面可以看到安装的element-ui版本 然后 在 main.js 中写入以下内容: import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue;Vue.…...
建设网站找谁/百度搜索竞价推广
happens-before和as-if-serial并发编程系列汇总先行发生原则(happens-before)什么是happens-beforehappens-before规则示例as-if-serial语义总结并发编程系列汇总 并发编程系列文章飞机票Thread生命周期及interrupted登机入口synchronized锁升级原理分析登机入口volatile内存屏…...
建设网站的提成是多少/百度营销后台
邮件列表每天都能让我学到新东西,感谢他!有朋友问PREEMPT_ACTIVE有什么用,我给出了最简单的回答,就是避免被抢占的进程被无情的赶出运行队列。这个回答显然不能让那位朋友满意... 进程一旦调用了schedule,如果再次被调…...
网站建设前言/网络营销产品的首选产品
登录weblogic管控制台http://127.0.0.1:7001/console,Service->Jdbc->DataSources,点击lock&edit,建立数据源,并测试成功。测试weblogic92配置的jndi数据源的java代码package com.css.test;import java.sql.Connection;…...
甘肃手机网站建设/seo算法是什么
新人大礼包,30G Java架构资料,免费领取zhuanlan.zhihu.comTomcat性能调优:找到Tomcat根目录下的conf目录,修改server.xml文件的内容。对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomc…...
地图素材如何做ppt模板下载网站/销售平台
干掉庞大的Binlog文件 想要恢愎数据库以前的资料,执行:show binlog events;屏幕就开始闪,闪的人眼花,心里烦(那有这么多没有用的破LOG^0^),还是删除一些去吧!1.查找binary logs mysql> show binary logs; --------------------------- | Log_name | File_size | -----…...
建筑模型网站/武汉seo网站优化排名
今天来跟大家分享一个通道指标,一个趋势型指标,供大家参考交易思路思维!大家要明白一点就是指标一定是存在滞后性的,所以不要盲目的崇拜指标所谓的圣杯,交易市场根本就不存在圣杯!1)顺势操盘,多…...