PostgreSQL是加州大学伯克利分校计算机系开发的对象关系型数据库管理系统,目前拥有活跃的开源社区贡献,最近排名也不断前进,pgsql中其实有很多有点和设计理念都要比mysql更好一些,比如稳定性比较强;高并发读写情况下性能依然较好;支持丰富的几何类型并且在GIS领域地位领先;text支持各种长度,无需区分;nosql特性,支持array和json存储和搜索等,因为这些优点,pgsql应用场景也不断扩展,下面详细写一下pgsql入门的第一步,即先将pgsql安装至操作系统,过程如下:
OushuDB兼容PostgreSQL,允许使用除了 SQL 和 C 之外的其他语言编写用户定义的函数。这些其他的 语言通常被称作过程语言(Procedural Language, PL)。对于一个用过程语言编写的函数,数据库服务 器没有关于如何解释该函数的源文本的内建知识。因此,这个任务被交给一个了解语言细节的特殊处理 器。该处理器能够自己处理所有的解析、语法分析、执行工作,或者它可以作为一种PostgreSQL和编程 语言既有实现之间的“粘合剂”。就像任何其他 C 函数一样,处理器本身是一个编译到共享对象并且按需 载入的 C 语言函数。 在OushuDB的标准发布中当前有四种过程语言可用: PL/pgSQL、 PL/Perl、 PL/Python以及 PL/Java, 其中PL/pgSQL是默认安装可用的。 另外还有其他过程语言可用,但是它们没有被包括在核心发布中, 如PL/R等,我们可以在第三方开源网站来获取它们的源码。 接下来我们主要看一下 PL/pgSQL - SQL过程语言。 PL/pgSQL - SQL过程语言 PL/pgSQL 是 PostgreSQL 数据库系统的一个可加载的过程语言,它的设计目标是创建一种可加载的过 程语言,可以: 用于创建函数和触发器过程 为 SQL 语言增加控制结构 执行复杂的计算 继承所有用户定义类型、函数、操作符 定义为被服务器信任的语言 容易使用 除了用于用户定义类型的输入/输出转换和计算函数以外,任何可以在 C 语言函数里定义的东西都可以在 PL/pgSQL 里使用。比如,可以创建复杂的条件计算函数,并随后将之用于定义操作符或者用于函数索 引中。 一、概述: PL/pgSQL函数在第一次被调用时,其函数内的源代码(文本)将被解析为二进制指令树,但是函数内的表 达式和SQL命令只有在首次用到它们的时候,PL/pgSQL解释器才会为其创建一个准备好的执行规划,随 后对该表达式或SQL命令的访问都将使用该规划。如果在一个条件语句中,有部分SQL命令或表达式没 有被用到,那么PL/pgSQL解释器在本次调用中将不会为其准备执行规划,这样的好处是可以有效地减少 为PL/pgSQL函数里的语句生成分析和执行规划的总时间,然而缺点是某些表达式或SQL命令中的错误只 有在其被执行到的时候才能发现。 由于PL/pgSQL在函数里为一个命令制定了执行计划,那么在本次会话中该计划将会被反复使用,这样做 往往可以得到更好的性能,但是如果你动态修改了相关的数据库对象,那么就有可能产生问题,如:
postgresql13 for window 搭建及备份还原数据 安装 下载 win x86-64 https://www.enterprisedb.com/download-postgresql-binaries 初始化 C:\install\postgres\pgsql\bin\initdb.exe -D C:\install\postgres\pgsql\data -E UTF8 启动服务 C:\install\postgres\pgsql\bin\pg_ctl -D C:\in
项目须要使用gisgraphy,怎奈gisgraphy3.0仅仅支持postgis1.5.因此仅仅能安装老版本号的posgresql和postgis了。从postgis的support matrix图能够看到postgis不同版本号支持的postgresql,
PostgreSQL 被称为是“最高级的开源数据库”,它的数据类型非常丰富,用它来解决一些比较偏门的需求非常适合。
PostGIS作为PostgreSQL数据库的空间扩展,提供了对空间数据管理的支持。对于空间矢量数据,PostGIS提供了Geometry和Geography俩种类型用于空间对象的存储,Geometry使用笛卡尔坐标系,而Geography使用球面坐标系(默认是WGS84坐标系)。对于空间栅格数据,则提供了Raster类型。
postgresql中文社区:http://www.postgres.cn/v2/document
当涉及到数据库管理系统(DBMS)时,PostgreSQL(通常简称为pgsql)是一个备受青睐的选择。作为一款功能强大、开源的关系型数据库管理系统,pgsql具有广泛的应用领域和强大的特性,为用户提供了可靠的数据存储和处理解决方案。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。
\1. 赋值: PL/pgSQL中赋值语句的形式为:identIFier := expression,等号两端的变量和表达式的类型或者一致, 或者可以通过PostgreSQL的转换规则进行转换,否则将会导致运行时错误,见如下示例: \2. SELECT INTO: 通过该语句可以为记录变量或行类型变量进行赋值,其表现形式为:SELECT INTO target select_expressions FROM ...,该赋值方式一次只能赋值一个变量。表达式中的target可以表示为是一个 记录变量、行变量,或者是一组用逗号分隔的简单变量和记录/行字段的列表。select_expressions以及 剩余部分和普通SQL一样。 如果将一行或者一个变量列表用做目标,那么选出的数值必需精确匹配目标的结构,否则就会产生运行 时错误。如果目标是一个记录变量,那么它自动将自己构造成命令结果列的行类型。如果命令返回零 行,目标被赋予空值。如果命令返回多行,那么将只有第一行被赋予目标,其它行将被忽略。在执行 SELECT INTO语句之后,可以通过检查内置变量FOUND来判断本次赋值是否成功,如: name RECORD; user_id := 20;
PgSQL在启动前需要配置listen_addresses配置项,该配置项表示允许PgSQL服务监听程序绑定的IP。我们知道一个host上可以有多个网卡,每个网卡可以绑定多个IP,该参数就是控制PgSQL服务绑定在哪个或者哪几个IP上。即控制服务使用哪个网络接口进行监听连接请求。对于网络接口而言,这样可以有效阻止大量恶意重复的连接。
随着k8s的成熟,在k8s上使用ingress-nginx、traefik、apisix等各类ingress的人也越来越多。ingress-kong也可以作为k8s的ingress使用,当然kong也可以单独作为微服务的gateway网关来使用。
-bash-4.2$ egrep "^\w+" postgresql.conf 参数如下:
sentry是python开发的一个应用,使用python uWSG框架运行,所有安装完sentry要记得在nginx的代理上禁用掉/admin路径,不然uwsg的后台管理入口就泄漏了 具体的安装资料地址为:
②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可
rpm -e --nodeps postgresql95-contrib-9.5.3-2PGDG.rhel7.x86_64
pgenv只能做到单机单实例PG。如果你要搞PG流复制等环境,需要多台机器上部署pgenv,然后各自启动一个PG实例。
vsftpd可能是世界上最好的ftpd。它在linux世界非常流行,安全,性能高。 本文的目的是让PgSQL存储你的vsftp的虚拟用户和密码,通过一个叫做pam的来认证。 零、简述PAM原理。 如果你已经对pam有所了解,请跳过,我知道的可能还不如你多。你不感兴趣也请跳过,因为不看这个也可配置。 代码: 用户 vsftpd PAM模块 用户和密码数据库 vsftpd用了一种很聪明同时也是unix/linux规范的方法来认证用户,就是PAM。大家对于PAM,也许有些陌生,但是一直在用。所谓PAM,英文是:Pluggable Authentication Modules,可拔插认证模块(不知道这样翻译对不对)。看见plug这个关键字,就知道是很灵活的。 现在几乎所有daemon程序一般都是用PAM来进行认证的,包括telnet/sshd/imapd,甚至你的login,都是用PAM。在 fbsd 4上的朋友,你可以打ps -ax|grep pam,你会发现login了多少个控制台,就会有多少个写着pam的进程。 PAM的最大好处是灵活。它不管你的用户和密码用什么数据格式存储(数据库也好,通常用的密码文件也好),只要有相应的PAM模块就可以存储。比如说,大家不仅可以用vsftpd + PgSQL做用户登陆验证,只要你喜欢你还可以用MySQL,Oracle,LDAP数据库存储用户数据,只要有相应的PAM就可以。所有的daemon 都可以用一个后台数据库来做用户验证登陆,包括telnet/sshd等等。 pam的配置机制在不同版本的freebsd上有差异。 freebsd-4放在/etc/pam.conf,一个文件记录所有pam服务。 freebsd-5放在/etc/pam.d,/usr/local/etc/pam.d。每个pam服务由一个独立的文件记录。 本文不打算详细叙述PAM的配置。PAM的配置不是很难,毕竟,只是要你配置一些参数,不是叫你开发一个pam模块出来。而且本文的篇幅所限,偶刚刚知道的一点东西希望能够起到抛砖引玉的作用。等偶对pam再玩得深入和熟一点的时候,再写一篇关于深入一点关于pam的东东? 准备开始:提要 简单讲讲要用到的配置文件的作用。 引用: /etc/pam.conf #pam服务的配置 /etc/pam_pgsql.conf #pam_pgsql.so的配置 /usr/local/etc/vsftpd.conf #vsftpd的配置 一、安装vsftpd,PostgreSQL,pam_pgsql。 我都是使用port来安装的,请大家用port/package来安装,不要自己下载源码来编译,否则可能根据本文的方法可能无法正常使用。其中vsftpd和pam-pgsql一定要用port/package来安装。 以下是他们的port目录: 引用: /usr/ports/ftp/vsftpd /usr/ports/databases/postgresql7 /usr/ports/security/pam-pgsql 安装:只要cd进去,然后make install就OK了。 二、PostgreSQL安装(如果你已经有了PostgreSQL,不需要看这一节) 简单提提用port来装PostgreSQL的过程,因为BSD版上的装PgSQL的方法都是自己下载源码编译的。我是用port来编译安装,因为这是fbsd推荐的安装方法,而且安装的软件会根据bsd的hier(目录结构)来安装,比较便于管理。 当用port来安装好PostgreSQL,默认的数据库管理用户是pgsql(port里头的安装程序自动添加的),其他系统默认的是postgres。初始化PostgreSQL的程序如下: 1、初始数据库。请先用root登陆或者su到root。然后,打命令: 代码: # su pgsql # initdb 正常初始化的应该有以下提示: 引用:
由于工作需要,最近开始接触各种数据库,并尝试各种数据库产品的高可用方案。今天分享的是postgresSQL的主从配置,其实还是蛮简单的,跟随本文的步骤,保证能实现PG主从的搭建。
当前PostgreSQL版本号由主要版本号和次要版本号组成。 例如,在版本号10.1中,10是主要版本号,1是次要版本号,这意味着这将是主版本10的第一个次要版本。 对于PostgreSQL版本10.0之前的版本,版本号由三个数字组成,例如9.5.3。 在这些情况下,主要版本由版本号的前两个数字组(例如9.5)组成,次要版本是第三个数字, 例如3,这意味着这将是主要版本9.5的第三次要版本。
PG学习初体验--源码安装和简单命令(r8笔记第97天) 记得在2年前写过一篇PostgreSQL的文章,当时处于兴趣,本来想在工作中接一下PG的业务,最后因为各种各样的原因就搁置了。 今天整理了下PostgreSQL的一些基础内容,参考的书是唐成老师的那本《PostgreSQL修炼之道》,有了Oracle和MySQL的基础,看起来会比从零开始要容易一些,总体的感觉,PG功能确实很多很全,功能上像Oracle看齐,技术风格和MySQL很像,在做一些总结的时候,不停的在两个数据库之间来回切换。 关于主备环
安装yum更新源 yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-re
zabbix5.0—agent2监控PostgreSQL-11.4(linux)PostgreSQL版本需要10以上
下载 首先从下面的链接地址下载对应平台和版本的安装包。 https://www.enterprisedb.com/download-postgresql-binaries 安装 # 以普通用户运行下面命令 # 解压压缩包到/opt目录下,如果对/opt目录没有写权限,先增加写权限再运行下面命令。 $ tar zxvf postgresql-9.6.10-1-linux-x64-binaries.tar.gz # 创建数据目录 $ cd /opt/pgsql $ mkdir data # 设置环境
最近在使用PostgreSQL的时候,在执行一些数据库事务的时候,先后出现了statement timetout 和idle-in-transaction timeout的问题,导致数据库操作失败。
在任何人可以访问数据库前,你必须启动数据库服务器。 数据库服务器程序是postgres,它必须知道在哪里能找到它要用的数据。这是用-D选项实现的。 因此,启动服务器最简单的方法是:
问题重现: 在bundle的时候出现gem包pg-0.18.4安装出错的情况,错误代码如下:
Zabbix 支持 PostgreSQL 作为后台数据库,相比 Mysql,PostgreSQL 可加载 timescaledb 插件,提升 Zabbix 性能,同时还支持数据的压缩,因此对于 PostgreSQL 数据库的监控是非常需要的。使用 zabbix5.0 自带的数据库模版及脚本即可实现对 PostgreSQL 的监控。
前面介绍了 HeartBeat 及其集群高可用部署、DRBD原理与实践、DRBD配置与管理、高可用集群架构 corosync+pacemaker、LVS+KeepAlived、haproxy+keepalived+nginx 实现 k8s 集群负载均衡等相关的知识点,今天我将详细的为大家介绍Pacemaker+Corosync 高可用架构实战相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
一、进入PostgreSQL数据库 Linux下切换到postgres用户,执行psql即可进入
\1. 函数返回: 1). RETURN expression 该表达式用于终止当前的函数,然后再将expression的值返回给调用者。如果返回简单类型,那么可以 使用任何表达式,同时表达式的类型也将被自动转换成函数的返回类型,就像我们在赋值中描述的那 样。如果要返回一个复合类型的数值,则必须让表达式返回记录或者匹配的行变量。 2). RETURN NEXT expression 如果PL/pgSQL函数声明为返回SETOF sometype,其行记录是通过RETURN NEXT命令进行填充的,直 到执行到不带参数的RETURN时才表示该函数结束。因此对于RETURN NEXT而言,它实际上并不从函数 中返回,只是简单地把表达式的值保存起来,然后继续执行PL/pgSQL函数里的下一条语句。随着 RETURN NEXT命令的迭代执行,结果集最终被建立起来。该类函数的调用方式如下: SELECT * FROM some_func(); 它被放在FROM子句中作为数据源使用。最后需要指出的是,如果结果集数量很大,那么通过该种方式 来构建结果集将会导致极大的性能损失。 \2. 条件: 在PL/pgSQL中有以下三种形式的条件语句。 1). IF-THEN 2). IF-THEN-ELSE IF boolean-expression THEN
开源lorawan server 项目chirpstack的helm chart , 项目源码
上一篇博文PostGIS导入导出ESRI Shapefile数据介绍了如何导入空间矢量数据到PostgreSQL中,紧接上一篇,本文将介绍如何使用PostGIS导入导出空间栅格数据。 实验环境和上一篇的博文一样: Ubuntu 16.04 LTS 。 数据为全球影像(ESRI ArcGIS提供的示例数据),下载连接:全球影像百度网盘下载 可以使用GDAL的gdalinfo命令查看其详细信息:
在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应。大家发现了另一款开源的数据库: PostgreSQL。
CentOS7默认yum源的PostgreSQL版本过低,不适合在本版本上使用。在https://yum.postgresql.org/repopackages.php上找到适合CentOS7的RPM源,复制其url地址,使用yum安装。
PostgreSQL,也称为Postgres,是一个功能强大的开源对象关系数据库管理系统,它使用并扩展了SQL语言,并结合了许多功能,可以安全地保存和扩展最复杂的数据工作负载。
其中,mysqluser指定目标数据库账号,mysqlpass指定目标数据库密码,如果密码为空则不填写任何东西。
上一篇文章说道PostgreSQL 12 的源码部署,这里我们说一下PostgreSQl 12的主从流复制和归档配置。
每个人都有自己习惯的项目结构,有人的喜欢在项目里面建解决方案文件夹;有的人喜欢传统的三层命名;有的人喜欢单一,简单的项目一个csproj就搞定。。
和对外部世界可访问的任何服务器守护进程一样,我们也建议在一个独立的用户账户下运行PostgreSQL。这个用户账户应该只拥有被该服务器管理的数据,并且应该不能被其他守护进程共享(例如,使用用户nobody是一个坏主意)。我们不建议把可执行文件安装为属于这个用户,因为妥协系统可能接着修改它们自己的二进制文件。
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
第一步:下载keycloak安装包 https://www.keycloak.org/downloads
最近用到自动交互脚本进行数据库备份,以前虽然也有用来使用 ftp 远程获取文件,还来没有系统记录过,趁这次机会总结一下。
Prometheus使用postgresql需要使用postgresql-adapter进行数据转换。在安装postgresql-adapter之前需要安装2个扩展:pg_prometheus和timescaledb
本文延续上一篇文章 云数据库MySQL导入云数据仓库PostgreSQL最佳实践,继续介绍云数据库MySQL导入云数据仓库PostgreSQL的使用问题。其中描述的问题及解决方法同样适用于 腾讯云 云数据仓库 PostgreSQL(CDWPG)。
下面会用到一个perl脚本来做数据格式的转换: https://github.com/ahammond/mysql2pgsql
最近加群的人太多了,可能是因为这篇 Peace and love,从今天开始我们群正式加入 ORACLE ,因为群里的ORACLE 大佬也很多,所以基本上市面上能见到的常见的数据库产品,群里都有大佬和各种厂商,和工作者,我们准备把 Peace and love 发扬光大,都是数据库,大家一起学。
ref: https://zhuanlan.zhihu.com/p/665042157 系列
领取专属 10元无门槛券
手把手带您无忧上云