推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > ITPUB > Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!

ITPUB 2018-10-18
点击上方 “ITPUB” 一起玩耍哦~


目的:将PostgreSQL安装和配置为客户端或服务器。



平台:Debian7+、ubuntu 12.04+、Red Hat/ CentOS / Scientific(6.0+) - “EL6系列”、Fedora、SLES12+、openSUSE13+ / openSUSE Leap

Chef:12.1+以上

Cookboo            ks:compat_resource、openssl、build-essential

属性


基于平台设置以下属性,请参阅attributes/default.rb文件(所有文件及英文原版可参见:https://github.com/sous-chefs/postgresql)。


Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


以下属性在recipe [postgresql :: server]中生成。

Configuration


postgresql.conf和pg_hba.conf文件是从属性动态生成的。 节点['postgresql'] ['config']中的每个键都是一个postgresql配置指令,并将在配置文件中呈现。例如:

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!

将影响postgresql.conf文件中的以下行:


listen_addresses ='localhost'


属性文件包含Debian和RHEL平台系列的默认值(根据节点['platform_family'])。这些默认值在平台之间具有差异,因为它们最初是从该cookbook先前版本的postgresql.conf文件中提取出来的,它们的默认配置不同。生成的配置文件将与之前相同,但内容将从属性中动态呈现。有关具体配置的详细信息,请参考该开源项目中的PostgreSQL文档。


对于“on”或“off”的值,应将其指定为文字true或false。字符串值将与单引号一起使用。设置为literal nil的配置选项将被完全跳过。所有其他值(例如,数字文字)将被原样使用。 例如:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


将导致以下配置行:


logging_collector ='on'

datestyle ='iso,mdy'

端口= 5432

(没有为ident_file打印的行,因为它为零)


请注意,unix_socket_directory配置已重命名为Postgres 9.3中的unix_socket_directories,因此请确保使用节点['postgresql'] ['unix_socket_directories']属性而不是node ['postgresql'] ['unix_socket_directory']。


pg_hba.conf文件是从节点['postgresql'] ['pg_hba']属性动态生成的。该属性必须是散列数组,每个散列包含授权数据。因为它是一个数组,开发者可以附加到自己的cookbook。数组中的哈希键必须是符号,每个哈希将被写入pg_hba.conf中的一行。例如,fromnode ['postgresql'] ['pg_hba']:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


将导致pg_hba.conf中的以下行:


Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


如果CIDR-ADDRESS应为空,则使用nil(如上所述)。

请注意,cookbook模板自动提供以下授权规则。该cookbook在PostgreSQL服务器中执行SQL,不提供明文密码。因此,节点['postgresql'] ['pg_hba']属性不需要指定此授权规则:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


(顺便说一句,模板使用peer而不是Ident,用于PostgreSQL 9.1及以上版本,具有相同的效果。)


客户端


安装节点['postgresql'] ['client'] ['packages']属性中定义的包。


ruby

在Ruby环境下安装pg gem,以便可以在其他环境中使用。build-essential包和postgresql客户端包将在编译阶段安装,以便可以编译pg的本机扩展。

服务器


包括server_debian或server_redhat,以获取安装和服务管理的相应服务器软件包。并管理服务器的配置:


•为postgres创建强大的默认密码(通过openssl)


•设置postgres的密码


•管理postgresql.conf文件。


•管理pg_hba.conf文件。


config_initdb


从系统配置获取区域设置和时区设置。创建符合系统的区域设置和时区的node.default ['postgresql'] ['config']属性。此外,还可创建与initdb相同的错误报告和日志记录设置:可存储7天的名为postgresql-Mon.log的日志文件等。


由于Chef属性优先,此方法创建的默认属性很容易被普通属性覆盖。例如,假设DBA希望无限期地保存日志文件,每天滚动或者增长到10MB。Chef安装可包括用于区域设置和时区设置的postgresql :: config_initdb,但需要根据节点的JSON属性自定义日志记录设置:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


注意:postgresql :: config_initdb基于PostgreSQL initdb实用程序的源代码中的算法。


config_pgtune


性能调优。使用wimpy默认的postgresql.conf,并将数据库服务器扩展为与正在部署的硬件一样强大。这将为专用的Postgresql系统创建一个在正确范围内node.default ['postgresql'] ['config']属性的基线配置,大多数安装不需要额外的性能调整。


需要做的唯一决定是从以下数据库工作负载中选择一个db_type。(有关详细说明,请参阅代码注释。)

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!

该属性可使用具有三个输入参数的性能模型。这些节点属性是完全可选的,但是正确选择db_type显然很重要:

node ['postgresql'] ['config_pgtune'] ['db_type'] - 从上述五个选项列表中指定数据库类型。如果未指定,默认为“mixed”。


node ['postgresql'] ['config_pgtune'] ['max_connections'] - 指定预期的最大连接数。如果没有指定,就取决于数据库类型:“web”:200,“oltp”:300,“dw”:20,“mixed”:80,“desktop”:5

node ['postgresql'] ['config_pgtune'] ['total_memory'] - 以kB为单位指定系统总内存。(例如“49416564kB”)如果没有指定,将从Ohai自动属性中获取。这可以用于调整不是专用数据库的系统。


由于Chef属性优先,此方法创建的默认属性很容易被普通属性覆盖。例如,如果正在运行应用程序基准测试不同的缓冲区高速缓存大小,那么将尝试使用此节点JSON属性:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


请注意,该属性在其计算中使用max_connections。如果想覆盖这个设置,你应该指定一个['postgresql'] ['config_pgtune'] ['max_connections']而不是node ['postgresql'] ['config'] ['max_connections']。


注意:postgresql :: config_pgtune基于由Greg Smith和其他pgsql-hackers开发的pgtune python脚本。

contrib


安装节点['postgresql'] ['contrib'] ['packages']属性中定义的包。PostgreSQL发行版的contrib目录包括数据库工程师经常需要的移植工具、分析工具和插件功能。有些(如pgbench)是可执行的,其他(如pg_buffercache)将需要安装到数据库中。


安装在节点['postgresql'] ['contrib'] ['extensions']属性中定义的任何contrib模块扩展。这些将在集群随后创建的数据库中可用,因为它们将使用CREATE EXTENSION命令安装到template1数据库中。

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


请注意,pg_stat_statements视图仅在postgresql.conf加载其共享库时有效,可以使用此node属性:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


如果将shared_preload_libraries与contrib结合使用,请确保在server之前调用contrib(以确保按顺序安装和设置)。

apt_pgdg_postgresql


启用由DevrimGündüz维护的PostgreSQL全球开发组织yum存储库,以便更新PostgreSQL软件包。如果节点['postgresql'] ['enable_pgdg_apt']属性为true,则自动包含,并将节点['postgresql'] ['client'] ['packages']和node ['postgresql'] ['server] ['packages']设置为从该存储库使用的包列表,并设置节点 ['postgresql'] ['version']属性到要使用的版本(例如,“9.2”)。

yum_pgdg_postgresql


启用由DevrimGündüz维护的PostgreSQL全球开发组织yum存储库,以便更新PostgreSQL软件包。如果节点['postgresql'] ['enable_pgdg_yum']属性为true,则自动包含。还可以使用override_attributes来设置一些需要嵌入版本号的值。例如:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


您可以设置节点['postgresql'] ['pgdg'] ['repo_rpm_url']属性来获取最近的PGDG repo包。


用法


在需要连接到PostgreSQL数据库的系统上,添加到运行列表属性[postgresql] orrecipe [postgresql :: client]。


在应该是PostgreSQL服务器的系统上,在运行列表中使用recipe [postgresql :: server],此属性确实为postgres用户设置了密码。如果你正在使用chef服务器,如果找不到属性节点['postgresql'] ['password'] ['postgres'],则会生成一个随机密码并执行一个node.save。如果你使用chef-solo,你需要设置属性节点['postgresql'] ['password'] ['postgres']在节点json_attribs上的文件或角色。


在Debian系统中,SSL将被启用,因为Debian / Ubuntu上的软件包也会生成SSL证书。在服务器系统上,配置文件更改后,postgres服务器将重新启动。只能通过设置以下属性将其更改为重新加载:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


使用Chef-client时,以下节点属性存储在Chef Server上。因为不能连接到服务器或保存节点对象,要使密码在主菜单独立运行中保持不变,必须在使用的json_attribs文件中指定它们。 例如:


Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


这实际上应该是“加密密码”而不是明文,所以应该使用PostgreSQL算法将其生成为md5哈希。


• ·如果具备Postgres访问权限并且想要使用相同的密码,则可以从现有postgres数据库复制md5-hashed密码:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


·可以从任何postgres数据库会话运行此操作以使用新密码:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


·可以从Linux命令行运行它:

 

Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!


Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!

与 100 + 技术大牛面对面

SACC2017

作为国内最受欢迎的架构师盛会,2017 第九届中国系统架构师大会 (SACC) 将于将于 2017 年 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。


大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。

点击 “阅读原文” 与 100 + 技术大牛面对面,立享购票 7.8 折优惠~

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Github经典案例第三期:PostgreSQL 实操!安装配置客户端或服务器详解!》的版权归原作者「ITPUB」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注ITPUB微信公众号

ITPUB微信公众号:itpuber

ITPUB

手机扫描上方二维码即可关注ITPUB微信公众号

ITPUB最新文章

精品公众号随机推荐