【转】:https://www.modb.pro/course/149
修改hosts文件
[root@pg1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.75.91 pg1
192.168.75.92 pg2
192.168.75.93 pg3
[root@pg1 ~]#
防火墙设定
将同PostgreSQL相关的服务、协议、IP以及端口添加到PostgreSQL各主机的防火墙白名单中,或关闭防火墙。
方式一:关闭防火墙
# 查看防火墙状态
systemctl status firewalld
# 停用防火墙
systemctl stop firewalld
# 禁用防火墙,避免重开机重启防火墙
systemctl disable firewalld
方式二:开放PostgreSQL端口,本次主备库均使用5432端口
# 加入开放5432端口
firewall-cmd --zone=public --permanent --add-port=5432/tcp
# 重加载服务生效
firewall-cmd --reload
# 查看追加开放的端口
firewall-cmd --list-ports
# 查看系统开放的网络配置
iptables -L -v -n
关闭SELINUX
# 修改“SELINUX”的值“disabled”(重启生效)
vi /etc/selinux/config
SELINUX=disabled
# 临时关闭SELINUX(重启失效)
set enforce 0
# 查看SELINUX状态
sestatus -v
设置root允许远程登录
# 安装PostgreSQL时需要root帐户远程登录访问权限, 修改PermitRootLogin配置,允许用户远程登录。
# 注释掉“PermitRootLogin no” 或 将“PermitRootLogin”改为“yes”
vi /etc/ssh/sshd_config
#PermitRootLogin no
PermitRootLogin yes
# 重启 ssh 服务使其生效
service sshd restart
操作系统参数(根据性能需要可选修改)
vi /etc/sysctl.conf
# 在linux6和7上,使用aio的话,需要设置它,适应异步IO,可以不需要重新修改该值
fs.aio-max-nr = 1048576
# 在linux6和7上,允许打开文件数,pg参数max_files_per_process对应,不重新修改该值
fs.file-max = 76724600
# 信号量, ipcs -l 或 -u 查看,每16个进程一组,每组信号量需要17个信号量。不重新修改该值
(四个参数,第一个参数*第四个参数= 第二个参数, 第一个参数和第三个参数相等)
第一个代表信号量, 第四个代表是组, 第三个参数设置大于等于17
kernel.sem = 4096 2147483647 2147483646 512000
# 所有共享内存段相加大小限制(建议内存的80%,单位page,查看page大小getconf PAGE_SIZE)
# 例如:page大小4096, 在128G内存设置80%的值如下
# 128*0.8*1024*1024K/4k
kernel.shmall = 26843545 (需计算)
# 最大单个共享内存段大小(建议为大于shared_buffer值),单位bytes。
# shared_buffers 是查询缓存,设置比较大可以提高PostgreSQL的效率,
# 一般建议设置为系统内存的3/4,但是必须不少于128KB,并且不少于16KB乘以max_connections
kernel.shmmax = 51539607552 (需计算)
# 一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段,不重新修改该值
kernel.shmmni = 819200
#iptables防火墙链表相关,不重新修改该值
net.core.netdev_max_backlog = 10000
# 网络接收buffer大小,单位bytes,不重新修改该值
net.core.rmem_default = 262144
# 允许最大网络接收buffer大小,单位bytes,不重新修改该值
net.core.rmem_max = 4194304
# 网络传输buffer大小,单位bytes,不重新修改该值
net.core.wmem_default = 262144
# 网络传输最大buffer大小,单位bytes,不重新修改该值
net.core.wmem_max = 4194304
# socket监听数,默认128,不重新修改该值
net.core.somaxconn = 4096
# 加快僵尸进程回收速度,不重新修改该值
net.ipv4.tcp_fin_timeout = 5
#系统脏页到达这个值,脏页刷到磁盘,当前设置390M,如果磁盘IO能力是512M/s
vm.dirty_background_bytes = 409600000 (需计算)
# 比这个值老的脏页,将被刷到磁盘。3000表示30秒。不重新修改该值
vm.dirty_expire_centisecs = 3000
#如果系统进程刷脏页太慢,使得系统脏页超过内存 80 % 时,则用户进程如果有写磁盘的操作(如fsync, fdatasync等调用),则需要主动把系统脏页刷出,不重新修改该值
vm.dirty_ratio = 80
# 有效防止用户进程刷脏页,在单机多实例,并且使用CGROUP限制单实例IOPS的情况下非常有效。
# pdflush(或其他)后台刷脏页进程的唤醒间隔, 100表示1秒。 不重新修改该值
vm.dirty_writeback_centisecs = 50
# 在分配内存时,设置为0,vm.overcommit_ratio参数可以不设置, 不重新修改该值
vm.overcommit_memory = 1
# 关闭交换分区, 数据库服务器不建议使用swap,不重新修改该值
vm.swappiness = 0
# 限制本地动态端口分配范围,防止占用监听端口 ,不重新修改该值
net.ipv4.ip_local_port_range = 40000 65535
#建议shared buffer设置超过64GB时使用大页,查看页大小more /proc/meminfo |grep Hugepagesize, 大于数据库需要的shared_buffer内存即可,即HugePages_Total * Hugepagesize > shared_buffers。
vm.nr_hugepages = 66536 (需计算)
# 单个进程的打开句柄不能大于fs.nr_open, 对于有很多对象(表、视图、索引、序列、物化视图等)的PostgreSQL数据库,建议设置为2000万,不重新修改该值
fs.nr_open=20480000
# 执行命令使参数生效
sysctl –p
资源限制
#修改/etc/security/limits.conf
cat >> /etc/security/limits.conf << EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 65535
* hard stack 65535
* hard memlock unlimited
* soft memlock unlimited
EOF
#修改/etc/security/limits.d/20-nproc.conf
sed -i 's/4096/65535/g' /etc/security/limits.d/20-nproc.conf
标签:操作系统,该值,pg14,vm,防火墙,修改,重新,net,安装
From: https://blog.51cto.com/u_175779/6010443