当前位置: 首页 > news >正文

永州市住房和城乡建设厅网站/上海网络推广招聘

永州市住房和城乡建设厅网站,上海网络推广招聘,网站怎么做隐藏真实ip,使用的是什么网站模板初始化集群 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君…

初始化集群

专栏内容

  • postgresql内核源码分析
  • 手写数据库toadb
  • 并发编程

开源贡献

  • toadb开源库

个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

系列文章

  • 初始化集群
  • 数据库服务管理

一、前言

postgresql 数据库是一款通用的关系型数据,在开源数据库中能与商业数据媲美,在业界也越来越流行。

因为是开源数据库,不仅公开源码,还有很多使用案例,好用的插件,所以它的慢慢变成了数据库的先驱和标准,通过postgresql可以很好从使用到原理,彻底搞懂;

如果是学习编程,也可以学到丰富的编程知识,数据结构,编程技巧,它里面还有很多精妙的架构设计,分层思想,可以灵活定制的思想。

本专栏主要介绍postgresql 入门使用,数据库维护管理,通过这些使用来了解数据库原理,慢慢了解postgresql是什么样的数据库,能做那些事情,以及如何做好服务,最关键的是这些知识都是面试的必备项。

二、概述

本文主要介绍postgresql 的数据库集群,它的初始化,配置,以及它的物理结构。

在源码编译安装后,第一步就是初始化集群, 而通过安装包安装后,已经初始化了一个默认的数据库集群,启动服务后就可以直接进行SQL命令操作。

而在我们应用部署时,不同的应用往往使用不同的数据库集群目录,在物理上进行隔离,那么我们就需要对不同应用分别初始化各自的数据库集群。

三、原理

我们知道数据库主要是帮助存储和管理数据,方便我们检索,那么数据库存储数据的目录,这在postgresql中叫做集群目录,有些翻译的叫集簇目录。

集群目录下面,存放用户的数据,如创建的表,用户,索引等数据外,还有数据库组织数据,如数据库与表的映射关系,数据库的数量,表的结构定义等,我们称之为数据字典;
另外,还有一类数据是为了数据库服务运行稳定,高性能的辅助数据,如系统字典的缓存数据,空闲空间的管理数据等等。

数据库服务运行时,就会从这个目录下进行加载,所以这个目录非常重要,在实际项目中,都会有专门的系统用户才可以操作,同时还要对它进行冷备,还要进行各种策略的热备。

呃,泄漏了删库跑路原来这样子的,什么都没说。。。

三、命令介绍

在安装目录下的bin目录中,有初始化数据库集群的命令 initdb,我们一起来看下它的介绍。

# 安装后的目录大概有以下四个子目录, 
# bin 命令目录 include 是开发所需的头文件,
# lib是开发所需的库,share中包括模版配置文件,插件等 
[senllang@hatch postgres]$ ll
total 16
drwxr-xr-x. 2 senllang develops 4096 Aug  2 09:26 bin
drwxr-xr-x. 6 senllang develops 4096 Aug  2 09:24 include
drwxr-xr-x. 4 senllang develops 4096 Aug  2 09:26 lib
drwxr-xr-x. 7 senllang develops 4096 Aug  2 09:26 share
[senllang@hatch postgres]$ cd bin/

查看帮助

[senllang@hatch bin]$ ./initdb --help
initdb initializes a PostgreSQL database cluster.Usage:initdb [OPTION]... [DATADIR]Options:-A, --auth=METHOD         default authentication method for local connections--auth-host=METHOD    default authentication method for local TCP/IP connections--auth-local=METHOD   default authentication method for local-socket connections[-D, --pgdata=]DATADIR     location for this database cluster-E, --encoding=ENCODING   set default encoding for new databases-g, --allow-group-access  allow group read/execute on data directory--icu-locale=LOCALE   set ICU locale ID for new databases--icu-rules=RULES     set additional ICU collation rules for new databases-k, --data-checksums      use data page checksums--locale=LOCALE       set default locale for new databases--lc-collate=, --lc-ctype=, --lc-messages=LOCALE--lc-monetary=, --lc-numeric=, --lc-time=LOCALEset default locale in the respective category fornew databases (default taken from environment)--no-locale           equivalent to --locale=C--locale-provider={libc|icu}set default locale provider for new databases--pwfile=FILE         read password for the new superuser from file-T, --text-search-config=CFGdefault text search configuration-U, --username=NAME       database superuser name-W, --pwprompt            prompt for a password for the new superuser-X, --waldir=WALDIR       location for the write-ahead log directory--wal-segsize=SIZE    size of WAL segments, in megabytesLess commonly used options:-c, --set NAME=VALUE      override default setting for server parameter-d, --debug               generate lots of debugging output--discard-caches      set debug_discard_caches=1-L DIRECTORY              where to find the input files-n, --no-clean            do not clean up after errors-N, --no-sync             do not wait for changes to be written safely to disk--no-instructions     do not print instructions for next steps-s, --show                show internal settings-S, --sync-only           only sync database files to disk, then exitOther options:-V, --version             output version information, then exit-?, --help                show this help, then exitIf the data directory is not specified, the environment variable PGDATA
is used.Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

参数说明

常用的参数,主要有

  • -D 指定集群目录所在的路径,这是必选的参数;比如~/testdemo,那么testdemo就是集群目录, 当然也可以设置环境变量 PGDATA 来代替-D
  • -U 指定数据库的超级管理员用户名,它具有所有权限,这是可选参数;如果不指定,默认数据库超级管理员与当前的系统用户名 同名;
  • -W 提示输入密码,这个密码是超级管理员用户的登陆密码;这也是可选参数,默认为空;

其它参数,可以在后继学习中再了解。

四、初始化集群

了解了初始化集群命令后,现在让我们初始化一个属于我们自己的数据库集群。

在当前目录下,创建testdemo的数据库集群目录,同时将数据库超级用户命名为postgres

[senllang@hatch bin]$ ./initdb -D testdemo -W -U postgres
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.Enter new superuser password:
Enter it again:creating directory testdemo ... 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:pg_ctl -D testdemo -l logfile start

这样在当前目录下,就生成了一个testdemo的目录,里面有好多子目录和文件,下面我们来认识一下。

五、集群目录

[senllang@hatch bin]$ cd testdemo/
[senllang@hatch testdemo]$ ll
total 56
drwx------. 5 senllang develops    33 Sep  2 14:42 base
drwx------. 2 senllang develops  4096 Sep  2 14:42 global
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_commit_ts
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_dynshmem
-rw-------. 1 senllang develops  5711 Sep  2 14:42 pg_hba.conf
-rw-------. 1 senllang develops  2640 Sep  2 14:42 pg_ident.conf
drwx------. 4 senllang develops    68 Sep  2 14:42 pg_logical
drwx------. 4 senllang develops    36 Sep  2 14:42 pg_multixact
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_notify
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_replslot
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_serial
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_snapshots
drwx------. 2 senllang develops    25 Sep  2 14:42 pg_stat
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_stat_tmp
drwx------. 2 senllang develops    18 Sep  2 14:42 pg_subtrans
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_tblspc
drwx------. 2 senllang develops     6 Sep  2 14:42 pg_twophase
-rw-------. 1 senllang develops     3 Sep  2 14:42 PG_VERSION
drwx------. 3 senllang develops    60 Sep  2 14:42 pg_wal
drwx------. 2 senllang develops    18 Sep  2 14:42 pg_xact
-rw-------. 1 senllang develops    88 Sep  2 14:42 postgresql.auto.conf
-rw-------. 1 senllang develops 29708 Sep  2 14:42 postgresql.conf

先来看几个重要的目录和文件

  • base 目录 它里面存储各个database中的数据,包括table,index, sequence, view等等;
  • pg_wal 目录 存放我们常说的redo日志
  • log 目录 数据库服务运行的日志,上图中没有,默认没有打开日志输出到文件的开关
  • postgresql.conf 数据库服务的配置文件,比如数据库服务的监听IP,端口等大量配置
  • pg_hba.conf 主机访问控制的配置文件,默认只能本机登陆,如果需要远程访问,就需要配置许可;

其它文件我们后面慢慢了解;

六、配置文件

我们重点介绍 数据库配置文件和主机访问控制配置,先来介绍几个入门级参数,这样就可以解决刚开始使用的问题,其它参数会随着其它功能介绍一起了解。

数据库配置

默认参数的前面都会加 # ,如果需要修改的话,需要去掉前面的#,修改才能生效。

监听配置

默认localhost 和 5432,如果要远程客户端访问,可以修改为具体IP或*

listen_addresses = '*'
# port = 5432

数据库连接数

数据库服务启动时,内存分配,锁的分配都和连接数有关,当然也不能无限大,默认连接数为100,这里可以根据自己的需求修改, 越大占用的内存和系统资源越多,够用即可;

max_connections = 100

数据库缓存大小

在select查询或insert插入数据时,并不是直接操作磁盘上的文件,而是操作缓存中的数据,如果数据不在缓存中,才会与磁盘进行交互,所以缓存当然是越大越好,能把需要的数据都加载进来,那性能就会提升。

默认是128MB,当然根据自己的数据量和机器的内存来定,如果只是尝试一下,默认也足够了,如果发现磁盘的IO很高,那就需要适当调大一些;

shared_buffers = 128MB 

数据库运行日志

调试过程序的都知道,运行日志的重要性,默认是关闭的,也就是不输出到文件中,建议打开,这样在发生异常时,可以通过运行日志文件来分析;

logging_collector = on 

主机访问控制

数据库有严格的访问控制,可以精确到某个database, user, 或网段,它的配置格式如下

# local         DATABASE  USER  METHOD  [OPTIONS]
# host          DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl     DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostgssenc    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnogssenc  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]

我们想到配置远程访问,比如图形化客户端访问,可以加入一行, 允许所有IP可以访问所有数据库,必须使用密码校验。

host    all             all             0.0.0.0/0            md5

七、总结

通过本文,分享了postgresql 数据存储目录-数据集群目录概念,初始化数据库集群,以及一些入门级参数配置,期待您的反馈和加入。

结尾

非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。

注:未经同意,不得转载!

相关文章:

【postgresql基础入门】 新建数据库服务集群目录,定制属于自己的独享数据区

初始化集群 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君…...

808协议是指中国国标GB/T 32960-2017《道路车辆运行数据远程监管与服务》通信协议,也被称为JT/T808协议

808协议是指中国国标GB/T 808协议是指中国国标GB/T 32960-2017《道路车辆运行数据远程监管与服务》通信协议&#xff0c;也被称为JT/T808协议。该协议规定了车辆与监管平台之间的通信规范&#xff0c;用于实现对道路车辆的远程监管和服务。 JT/T808协议主要包含以下几个方面的…...

DDD 与 CQRS 才是黄金组合

在日常工作中&#xff0c;你是否也遇到过下面几种情况&#xff1a; 使用一个已有接口进行业务开发&#xff0c;上线后出现严重的性能问题&#xff0c;被老板当众质疑&#xff1a;“你为什么不使用缓存接口&#xff0c;这个接口全部走数据库&#xff0c;这怎么能抗住&#xff01…...

运维Shell脚本小试牛刀(八): case模式忽略命令行参数大小写演示

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…...

【个人博客系统网站】项目的发布 · 通过公网IP访问我们的网站 · 思考总结

【JavaEE】进阶 个人博客系统&#xff08;6&#xff09; 文章目录 【JavaEE】进阶 个人博客系统&#xff08;6&#xff09;1. 项目发布1.1 后端代码修改1.1.1 数据库密码1.1.2 端口号修改1.1.3 文件保存地址修改1.1.4 静态资源映射修改 1.2 云服务器1.2.1 建库建表1.2.2 必要…...

网络类型(通信分类)

网络类型是根据数据链路层所使用的协议及规则进行划分&#xff0c;大致可分为两类网络&#xff1a; 点到点&#xff08;p2p&#xff0c;point to point&#xff09;MA&#xff08;multiple access&#xff09;多路访问&#xff1a;BMA、NBMA 不同的网络类型实际为不同的数据链…...

python基础语法(一)

目录 常量和表达式变量和类型变量是什么变量的语法定义变量使用变量 变量的类型整形浮点数(小数)字符串布尔其他 变量为什么会有这么多类型动态类型特征 常量和表达式 python中有许多和C语言相同的知识,但是也有一些不同的知识,比如: print(1 2 - 3)打印12-3的结果 print(1 …...

C语言学习笔记——常见问题

VS执行结果一闪而过 生成的 *.exe 文件打开时会一闪而过&#xff0c;从而观察不到其运行的结果————这是因为 main() 函数结束时&#xff0c;DOS 窗口会自动关闭 1、通过改变设置来解决 按以下顺序打开配通过改变设置来置窗口&#xff1a;项目->属性->配置属性->…...

使用GPU虚拟化技术搭建支持3D设计的职校学生机房(云教室)

背景 学校为职业学校&#xff0c;计算机教室需要进行Maya、Adobe Illustrator、Adobe Dreamweaver、Adobe PhotoShop等软件的教学。每个教室为35用户。资源需求为4核、8G内存、80G硬盘。 基于桌面虚拟化VDI技术的机房在成本、可管理性方面&#xff0c;相对于传统胖终端的机房…...

【C++入门】C语言的不足之处

概要 C入门主要讲的是C语言的一些不足&#xff0c;C作为补充&#xff0c;来补充C的不足之处 C的关键字有63个&#xff0c;C语言有32个&#xff08;作为了解&#xff0c;不需要专门记&#xff09; 变量的命名规则&#xff1a; 变量名必须以字母或下划线开头。变量名只能包含字…...

【已解决】oracle获取最近2学年的数据

已解决 &#xff1a;oracle获取最近2学年的数据 SELECT * FROM (SELECT * FROM xx.JWXT_XSKB WHERE AND xn IN (‘2023-2024’,‘2022-2023’)); 问题 某某系统课表数据过大&#xff0c;要求只获取最近2学年的数据&#xff0c;不能写死。 思路 mysql 在子查询的WHERE子句中…...

【图卷积神经网络】1-入门篇:为什么使用图神经网络(下)

为什么使用图神经网络? 在本书中,我们将重点介绍图学习技术中的深度学习家族,通常称为图神经网络。GNNs是一种新的深度学习架构类别,专门设计用于处理图结构化数据。与主要用于文本和图像的传统深度学习算法不同,GNNs明确地用于处理和分析图数据集(见图1.4)。 图1.4 - …...

AIGC(生成式AI)试用 2 -- 胡言乱语

小时候曾希望做个科学家&#xff0c;才师笑着说&#xff1a;努力、加油&#xff0c;一定会实现的。 也曾说要做个发明家&#xff0c;家人一笑了之&#xff1a;你那笨手笨脚的&#xff0c;想啥呢。 也曾幻想自己要成为英雄&#xff0c;被朋友嘲笑&#xff1a;连架都不敢…...

爬虫逆向实战(30)-某查查股东关联公司(HmacSHA512)

一、数据接口分析 主页地址&#xff1a;某查查 1、抓包 通过抓包可以发现数据接口是api/people/getRelatCompany 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无 请求头是否加密&#xff1f; 通过查看“标头”可以发现&#xff0c;请求头中有一个key和value都是…...

多态(个人学习笔记黑马学习)

多态分为两类 静态多态: 函数重载和 运算符重载属于静态多态&#xff0c;复用函数名动态多态: 派生类和虚图数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 编译阶段确定函数地址动态多态的函数地址晚绑定 运行阶段确定函数地址 1、基本语法 #include &…...

线程中future/atomic/async及nlohmann json的学习

1)std::future的其他成员函数 wait_for()成员函数&#xff0c;wait_for返回的是一个std::future_status枚举类型,根据返回值做相应处理 std::future_status state result.wait_for(std::chrono::seconds(1)); if(state std::future_status::ready) { cout<<result.get…...

windows安装MongoDB后进入命令交互界面失败解决方案

MongoDB下载链接&#xff1a;https://www.mongodb.com/download-center MongoDB安装教程&#xff1a;https://juejin.cn/post/6844903912000978952 不要安装最新的高版本MongoDB&#xff0c;因为配置方法可能会有差别&#xff0c;比如7.0一直失败的话就换5.0及以下版本试试&am…...

基于Java+SpringBoot+Vue前后端分离高校专业实习管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

E. Hanging Hearts

Problem - E - Codeforces 思路&#xff1a;我们考虑用树形dp&#xff0c;用f[i][0]表示以i为根&#xff0c;并且当前节点不在最长上升子序列中&#xff0c;用f[i][1]表示以i为根&#xff0c;当前节点在最长上升子序列中&#xff0c;那么f[i][0]max(f[j][0],f[j][1])&#xff0…...

docker安装RabbitMQ教程

可以通过Docker来安装RabbitMQ&#xff0c;具体步骤如下&#xff1a; 安装Docker&#xff1a;请参考官方文档进行安装。 拉取RabbitMQ镜像&#xff1a;通过以下命令拉取最新版本的RabbitMQ镜像。 docker pull rabbitmq:latest运行RabbitMQ容器&#xff1a;通过以下命令运行Rab…...

Java虚拟机整型数加载指令学习

JVM中 int 类型数值&#xff0c;根据 取值范围将 入栈的 字节码指令 就分为4类&#xff1a; 取值 -1~5 采用 iconst 指令&#xff1b; 取值 -128~127 采用 bipush 指令&#xff1b; 取值 -32768~32767 采用 sipush指令&#xff1b; 取值 -2147483648~2147483647 采用 ldc 指令。…...

Docker 实现 MySQL 一主一从配置

1、新建主服务器容器实例&#xff0c;端口&#xff1a; 3307 docker run \ -p 3307:3306 \ --name mysql-master \ -v /var/docker/mysql-master/log:/var/log/mysql \ -v /var/docker/mysql-master/data:/var/lib/mysql \ -v /var/docker/mysql-master/conf:/etc/mysql \ --p…...

Python编程练习与解答 练习113:避免重复

本练习将创建一个程序&#xff0c;从用户处读取单词&#xff0c;直到用户输入空行&#xff0c;在用户输入空行之后&#xff0c;程序应该显示一次用户输入的每个单词。单词应该按照他们最初的输入顺序显示。例如如果用户输入&#xff1a; first second first third second …...

线上 udp 客户端请求服务端客户端句柄泄漏问题

本题分别从如下三个方面来分享&#xff1a; 问题描述 自定义连接池的编写 common_pool 的使用 问题描述 线上有一个业务&#xff0c;某个通服务通知 udp 客户端通过向 udp 服务端&#xff08;某个硬件设备&#xff09;发送 udp 包来进行用户上线操作 当同时有大量的请求打到…...

合宙Air724UG LuatOS-Air LVGL API控件-窗口 (Window)

窗口 (Window) 分 享导出pdf 示例代码 win lvgl.win_create(lvgl.scr_act(), nil) lvgl.win_set_title(win, "Window title") -- close_btn lvgl.win_add_btn_right(win, "\xef\x80\x8d") -- --lvgl.obj_set_event_cb(cl…...

80 # 图片防盗链

referer 来源&#xff0c;表示这个资源被谁引用过&#xff0c;可以用来做防盗链。 我们新建文件 no-referer.js const fs require("fs"); const path require("path"); const url require("url"); const http require("http");h…...

App自动化测试持续集成效率提高50%

持续集成是一种开发实践&#xff0c;它倡导团队成员需要频繁的集成他们的工作&#xff0c;每次集成都通过自动化构建&#xff08;包括编译、构建、自动化测试&#xff09;来验证&#xff0c;从而尽快地发现集成中的错误。让正在开发的软件始终处于可工作状态&#xff0c;让产品…...

LeetCode —— 复写零(双指针)

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 将数组中出现的每个零复写一遍&#xff0c;然后将其他元素向右平移&#xff0c;数组长度不能改变。 法一&#xff1a;使用额外空间的做法 class Solution { public:void duplica…...

【Vue篇】Vue 项目下载、介绍(详细版)

如何创建一个vue项目&#xff1f;首先要有环境&#xff0c;如下&#xff1a; nodejs vue-cli如果有以上的工具就直接跳过安装教程 【Vue篇】mac上Vue 开发环境搭建、运行Vue项目&#xff08;保姆级&#xff09; 创建vue项目 选择一个位置&#xff0c;你要存放项目的路径&…...

Python批处理(一)提取txt中数据存入excel

Python批处理&#xff08;一&#xff09;提取txt中数据存入excel 问题描述 现从冠层分析软件中保存了叶面积指数分析的结果&#xff0c;然而软件保存格式为txt&#xff0c;且在不同的文件夹中&#xff0c;每个文件夹的txt文件数量不固定&#xff0c;但是txt文件格式固定。现需…...