设为首页 收藏本站

运维网

查看: 361|回复: 1

[经验分享] postgres 搭建

[复制链接]

尚未签到

发表于 2018-6-13 15:11:23 | 显示全部楼层 |阅读模式
• 源码包下载
– wget
https://ftp.postgresql.org/pub/source/v9.6.6/po
stgresql-9.6.6.tar.gz
• 建议下载到/usr/src目录下:
• tar -zxvf postgresql-9.6.6.tar.gz

安装系统需求软件:
依赖包安装
• 最小化安装:
– yum -y install zlib-devel readline-devel gcc gccc++
bisin flex
• 建议安装:
– yum -y install cmake perl-Extutils-Embed pad-devel \
libxml2-devel libxslt-devel openldap-devel \
python-devel perl-devel openssl-devel perl- \
ExtUtils-Embed pam pam-devel

创建安装目录:
mkdir -p /usr/local/pg10.2



• configure:
./configure --prefix=/usr/local/pg10.3 --with-pgport=6810 --with-perl --with-python --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt --enable-thread-safety

• make
• make install

编译与安装
• configure参数详解:
– --prefix=/usr/local/pg96:在后面的make install需要把
PostgreSQL安装到哪个目录下。
– --with-pgport=6810:指定PostgreSQL的默认端口,如果
没有特殊需要,建议不使用此参数,保持默认端口
5432
– --with-perl:如果后面需要使用pl/perl,需要加上此参
数,否则编译出来的版本不支持pl/perl,建议加上此参
数。注意前面需要安装依赖包perl-devel
– --with-python:如果需要使用pl/python,需要加上此参
数,建议加上此参数。注意前面需要安装依赖包
python-devel

• configure参数详解(续):
– --with-openssl:需要ssl支持时,需要加上此参数。建议
加上此参数。
– --with-pam:需要pam需要加上此参数。建议加上此参
数。
– --with-ldap:如果需要ldap支持,可以加上此参数。如果
加了此参数,在Linux下需要安装OpenLDAP包。
– --with-libxml --with-libxslt:xml支持,建议加上此参数
– --enable-thread-safety:对于9.0的版本,建议加上此参
烽,9.0之后的版本不需要加此参数,因为默认情况下
已带上参数了。

– --with-blocksize=BLOCKSIZE :指定数据块的大小,默认
是8k,一般对于OLTP的应用来说,不需要改变此数据
块的大小。只有在为一些OLAP的场景下,需要改变此
数据块的大小。最大32k,必须是2的n次方的数字
– --with-segsize=SEGSIZE:默认为1G,一般也不需要改变
– --with-wal-segsize=SEGSIZE:默认为16M,最大64M。
– --with-wal-blocksize=BLOCKSIZE:默认为8k,通常与
block size保持一致
• 这些参数需要小心设置,如无必要,不要设置。




操作系统配置
• 关闭selinux
– 修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
– 修改完后需要重启
– 用getenforce或sestatus -v检查是否真的关闭了
• 关闭防火墙
– systemctl status iptables
– systemctl status firewalld
– systemctl stop iptables
– systemctl disable iptables
– systemctl stop firewalld
– systemctl disable firewalld


[root@mysql01 postgresql-10.2]# service  status iptables   
[root@mysql01 postgresql-10.2]# chkconfig --list|grep iptable
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@mysql01 postgresql-10.2]#
1、        关闭iptables
chkconfig iptables off
chkconfig ip6tables off
service ip6tables stop
service iptables stop


• /etc/sysctl.conf
– kernel.shmmax = 16724692992
– kernel.shmall = 4083177
– kernel.shmmni = 4096
– kernel.sem=250 162500 250 650
– fs.file-max = 7672460
– net.ipv4.ip_local_port_range = 9000 65000
– net.core.rmem_default = 1048576
– net.core.rmem_max = 4194304
– net.core.wmem_default = 262144
– net.core.wmem_max = 1048576
– fs.aio-max-nr = 1048576
• 使系统参数生效:sysctl -p
• kernel.shmmax:机器的物理内存数,单位字节
• kernel.shmall:机器的物理内存的页面数,单位是页
页数,即物理内存的大小除以4k
• kernel.sem=250 162500 250 650
– 4个数据SEMMSL SEMMNS SEMOPM SEMMNI
– SEMMSL(信号集的最大信号量数):需要大于17,我们取
250
– SEMMNS(整个系统范围内的最大信息量数):SEMMSL *
SEMMNI = 650*250
– SEMOPM(semop函数在一次调用中所能操作一个信号量集
中最大的信号量数): 与SEMMSL相同,为250
– SEMMNI(信号量集的最大数目):ceil(max_conntions +
autovacuum_max_workers + 4)/16,如果对于10000个连接,
而autovacuum_max_workers=3,所以SEMMNI最少要大于626,
我们取650
• /etc/security/limits.conf:
*   soft     nofile     65536
*   hard     nofile     65536
*   soft     nproc      131072
*   hard     nproc      131072
*   soft     memlock    -1
*   hard     memlock    -1
• /etc/security/limits.d/20-nproc.conf
– * soft nproc 131072


创建操作系统用户
groupadd -g 701 postgres
useradd -m -g postgres -u 701 postgres
• 创建数据库实例的数据目录
– mkdir /home/postgres/pgdata
• 配置用户的.bash_profile
export PATH=/usr/local/pg96/bin:$PATH
expot LD_LIBRARY_PATH=/usr/local/pg96/lib:$LD_LIBRARY_PATH
export PGHOST=/tmp
export PGDATA=~/pgdata

• initdb
• initdb –k
– crc校验
[postgres@mysql01 ~]$ initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "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.

fixing permissions on existing directory /home/postgres/pgdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
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 /home/postgres/pgdata -l logfile start

[postgres@mysql01 ~]$ initdb –k
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "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 –k ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
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 '–k' -l logfile start

[postgres@mysql01 ~]$
• initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W
– -W输入超级用户的密码
[postgres@mysql01 pgdata]$ initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".

Data page checksums are disabled.

Enter new superuser password:
Enter it again:

fixing permissions on existing directory /home/postgres/pgdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
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 /home/postgres/pgdata -l logfile start

[postgres@mysql01 pgdata]$



创建实例
基本语法支持参数参数含义
initdb
--auth 本地local连接的口令认证方式
--auth-host TCP/IP连接的口令认证方式
--auth-local 本地socket连接的口令认证方式
--pgdata 存放数据的data目录
--encoding 数据库使用的字符集编码
--locale 数据库使用的本地字符集
--lc-collate 数据库中字符串排序顺序
--lc-ctype 数据库中的字符分类
--lc-messages 数据库中消息的使用语言
--lc-monetary 数据库中money类型的格式
--lc-numeric 数据库中numeric类型的格式
--lc-time 数据库中时间日期类型的格式
--no-locale 等同于--locale=C
--pwfile 初始化时从该文件中读取超级用户的密码


基本语法支持参数参数含义
initdb
--text-search-config 缺省的文件检索配置
--username 定义数据库中的超级用户
--apwprompt 用户交互模式,输入并确认超级用户密码
--xlogdir 定义联机事务日志的位置
--debug debug模式运行
--data-checksums 弃用数据库校验功能
--noclean initdb命令失败后,不进行清理
--nosync initdb操作不等待所有文件都安全的写入到物理磁盘
--sync-only 与--nosync相反


配置数据库
• postgresql.conf
listen_addresses = '*'
log_destination = 'csvlog'
logging_collector = on
wal_level = replica
hot_standby = on
max_wal_senders = 10
• pg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
host all all 0/0 md5
host replication all 192.168.56.0/24 md5



数据库的启停操作
• pg_ctl start -D $PGDATA
• pg_ctl stop -D $PGDATA -m fast
– 9.5以上的版本默认就是fast停库的方式,旧版本需要加
上这个参数
• pg_ctl restart -D $PGDATA
• pg_ctl status -D $PGDATA
• pg_ctl reload -D $PGDATA

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


独家合作伙伴: 青云cloud

快速回复 返回顶部 返回列表