postgresql数据库的安装

image

image

 

 

image

image

 

-01.hosts文件配置

echo "127.0.0.1 localhost localhost,localdomain localhost4 localhost4.localdomain4">/etc/hosts

echo "::1 localhost localhost,localdomain localhost6 localhost6.localdomain6">> /etc/hosts

echo"192.168.10.100 cdgqpg">> /etc/hosts

cat /etc/hosts

02.准备文件系统

pvcreate /dev/sdb /dev/sdc

pvcreate /dev/sdd
pvcreate /dev/sde /dev/sdf /dev/sdg
pvs
vgcreate vgdata /dev/sdb /dev/sdc

vgcreate vgarch /dev/sdd

vgcreate vgback /dev/sde /dev/sdf /dev/sdg

vgdisplay
vgs
Ivcreate -n lvdata -L 2000G vgdata

Ivcreate -n lvarch -L 599G vgarch

Ivcreate -n lvback -L 5999G vgback

lvdisplay

lvs

mkfs.xfs /dev/vgdata/lvdata

mkfs.xfs /dev/vgarch/lvarch

mkfs.xfs /dev/vgback/lvback

cat>>/etc/fstab << EOF

/dev/vgdata/lvdata/postgresql/data xfs defaults,noatime,nodiratime 0 0

/dev/vgarch/lvarch/postgresql/arch xfs defaults,noatime,nodiratime 0 0

/dev/vgback/lvback /backup xfs defaults,noatime,nodfratime 0 0

EOF
cat /etc/fstab

mkdir -p /backup

mkdir -p /postgresql/data

mkdir -p /postgresql/arch

mount /backup

mount /postgresql/data

mount /postgresql/arch

--3、yum源环境配置

mount /dev/cdrom /mnt--下次重启手工挂

cd /etc/yum.repos.d
mkdir bk
mv pub*repo bk/

vi itpux.repo
[OEL6]
name= linux 6.9
baseurl=file:///mnt
gpgcheck=0
enabled=1

yum list

yum-y groupinstall "Development Tools"
yum-y install coreutils glilb2 lrzsz dstat sysstat e4fsprogs xfsprogs readline-devel zlib-devel gcc gcc-c++ make

yum-y install cmake smartmontools flex bison perl-devel perl-ExtUtils* openldap-devel iadetex bzin2 openssl-devel

yum -y install pam-devel libxml2-devel libxslt-devel pvthon-devel tcl-devel lz4 clang-devel libicu-devel lvm-devel

yum -y install systemtap-sdt-devel perl krb5-devel pam libuuid libuuid-devel systemd-devel tcl lz4-devel

yum -y install python3 python3-devel libzstd-devel libselinux-devel pcre-devel tree psmisc libicu-devel

4.设置资源限制参数
cat >> /etc/security/limits.conf << EOF

* soft nofile 1024000

* hard nofile 1024000
* soft nproc 1024000
* hard nproc 1024000

* hard core unlimited

* soft  core unlimited
* soft memlock unlimited
* hard memlock unlimited
EOF
cat /etc/security/limits.conf

--05.设置内核参数cat>>/etc/sysctl.conf <<EOF
# file
fs.aio-max-nr=2097152

fs.file-max=76724600

fs.nr open=20480000
#vm
vm.swappiness=1

vm.min free kbytes=2048000

vm.overcommit memory=0

vm.overcommit rati0=90

vm.dirty background bytes=409600000

vm.dirty_expire_centisecs=3000

vm.dirty_ratio =95

vm.dirty_writeback centisecs =100

vm.mmap min addr=65536

vm.zone reclaim mode=0

vm.nr hugepages=750

#kernel
kernel.shmmax=4012843008

kernel.shmall=979698

kernel.shmmni=16384

kernel.sem=4096 2048000 200 32768

kernel.numa balancing=0

 

#tcp-part1-load-balancer

net.ipv4.ip forward =1

net.ipv4.ip_nonlocal bind=1

net.netfilter.nf conntrack max=1048576

net.ipv4.ip local port range=40000 65535

net.ipv4.tcp_max_tw buckets=262144

net.core.somaxconn=16384

net.ipv4.tcp_max syn backlog=8192

net.core.netdev max backlog=10000

 

#tcp-part2-buffer

net.ipv4.tcp rmem=8192 65536 16777216

net.ipv4.tcp wmem=8192 65536 16777216

net.ipv4.tcp mem=8388608 12582912 16777216

net.core.rmem default=262144

net.core.rmem max=4194304

net.core.wmem default = 262144

net.core.wmem max=4194304

#tcp-part3-keepalive

net.ipv4.tcp keepalive intvl=20

net.ipv4.tcp keepalive probes=3

net.ipv4.tcp keepalive time=60


#tcp-part4-port resure

net.ipv4.tcp tw reuse=1

net.ipv4.tcp fin timeout=5

net.ipv4.tcp timestamps=1

#tcp-part4-anti-flood

net.ipv4.tcp max syn backlog=4096

net.ipv4.tcp_syncookies =1

net.ipv4.tcp synack retries=2

net.ipv4.tcp syn retries=1

EOF

sysctl -p

 

#file:
参数备注
fs.aio-max-nr=1048576 --# 限制并发未完成的异步请求数目,不应小于1

Mfs.file-max=76724600--# 最大打开XXX个文件

fs.nr open=20480000--#单个进程打开文件句柄数上限

#kernel
kernel.shmmax=4012843008
--#shmmax是最大的共享内存段的大小,单位是字节

--保守计算:echo $(expr$(getconf PHYS PAGES)/2\*$(getconf PAGE SIZE))

---我一般为:>DB内存shared buffers<物理内存(建议不超过内存的80%)

 

kernel.shmall=979698
-整个系统的内存segment的总个数
保守建议设置为:系统可用的内存页总量的一半,可以用getcOnf PHYS PAGES查看系统可用的内存页总量

echo $(expr$(getconf PHYS PAGES)/ 2),

我一般为:kernel.shmmax/PAGE SIZE

ernel.shmmni=16384
-#一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段,
系统范围内共享内存段的最大数量

kernel.sem=H096 134217728 200 32768

SEMMSL含义:每个信号量set中信号量最大个数设置:最小250;对于processes参数设置较大的系统建议设置为processes+10

SEMMNS含义:linux系统中信号量最大个数设置:至少32000;SEMMSL*SEMMNI

SEMOPM含义:semop系统调用允许的信号量最大个数设置:至少100;或者等于SEMMSL

SEMMNI含义:linux系统信号量set最大个数设置:最少128

kernel.numa balancing=0
-是否启用NUMA平衡功能,将任务移动到最近的内存或移动内存到任务执行最近的地方,0表上关闭:

# tcp load-balancer
net.ipv4.ip forward =1--# IP转发net.ipv4.ip nonlocal bind=1--# 绑定非本机地址net.netfilter.nf conntrack max=1048576--#最大跟踪连接数net.ipv4.ip local port range=10000 65535 --#端口范围net.ipv4.tcp max tw buckets=262144 --#256k TIME WAITnet.core.somaxconn=65535--# 限制LISTEN队列最大数据包量,触发重传机制net.ipv4.tcp max syn backlog=8192--# SYN队列大小--# 网卡收包快于内核时,允许队列长度net.core.netdev max backlog=8192#tcp buffer
net.ipv4.tcp rmem=81926553616777216 --# tcp读buffernet.ipv4.tcp wmem=81926553616777216--#tcp写buffernet.ipv4.tcp mem=131072 26214416777216 --# tcp 内存使用
net.core.rmem default=262144--# 接受缓冲区默认大小
net.core.rmem max=4194304
--# 接受缓冲区最大大小
net.core.wmem default=262144--#发送缓冲区默认大小:256K

net.core.wmem max=4194304 --#发送缓冲区最大大小:4M

# tcp keepalive超时检测

net.ipv4.tcp_keepalive intvl=20--# 探测没有确认时,重新发送探测的频度

net.ipv4.tcp keepalive probes=3--#3*20=1分钟超时断开

net.ipv4.tcp keepalive time=60--# 探活周期1分钟

#tcp keepalive 超时检测

net.ipv4.tcp keepalive intvl= 20--# 探测没有确认时,重新发送探测的频度

net.ipv4.tcp keepalive probes=3--#3*20=1分钟超时断开

net.ipv4.tcp keepalive time=60--# 探活周期1分钟

#tcp port 重用

net.ipv4.tcp tw reuse=1--# 允许将TIME WAIT socket用于新的TCP连接。默认为0
net.ipv4.tcp fin timeout=5--# 保持在FIN-WAIT-2状态的秒时间

net.ipv4.tcp timestamps=1--对TCP时间戳的支持

#tcp anti-flood 防洪
net.ipv4.tcp_syncookies=1--# SYN RECV队列满后发cookie,防止恶意攻击

net.ipv4.tcp synack retries=2--# 收到不完整sync后的重试次数

net.ipv4.tcp syn retries =1--#表示在内核放弃建立连接之前发送SYN包的数量,
ym.overcommit memor=0

内存分配策略
0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用程序

1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。它根据某种算法决定是否可以overcommit

2:表示内核允许分配超过所有物理内存和交换空间总和的内存,禁止超过值的overcommit。

vm,overcommit rati0=90 值为0到100,表示允许内核分配的内存超过实际物理内存的百分比。

当overcommit memov=2时,用于参与计算允许指派的内存大小

vm.dirty_background bytes=409600000 --#系统脏页到达400M这个值,系统后台刷脏页调度进程 pdflush(或其他) 自动将(dirty expire centisecs/100)秒前的脏页刷到磁盘

dirtyvm.dirty expire centisecs=3000--#比这个值老的脏页,将被刷到磁盘。3000表示30秒。#1分钟前的数据被认为需要刷盘

vm.dirty ratio=95 --#如果系统进程刷脏页太慢,使得系统脏页超过内存 95 % 时,则用户进程如果有写磁盘的操作(如fsync, fdatasync等调用),则需要主动把系统脏页刷出,

vm.dirty writeback centisecs=100--# pdflush(或其他)后台刷脏页进程的唤醒间隔,100表示1秒。

vm.mmap min addr=65536 --#禁止访问0x10000下的内存

vm.zone reclaim mode=0 --# 禁用 numa,或者在vmlinux中禁止.(这里可以介绍一下NUMA)

vm.swappiness=1

-要不要使用交换页面,0禁用,非0启动

RHEL6.X之前,这个参数设置0,不代表禁用交换页;RHEL6.0之后这里设置0就是禁用交换页

--0:OMM

--1:当物理内存使用99%/只有1%的时候才使用交换页面。1%~5% 8G

vm.min free kbytes=2048000

vm.nr hugepages=750

 

--06.关闭NUMA与透明大页

cp /etc/default/grub /etc/default/grub bak

line_num=`cat -n /etc/default/grub | grep 'GRUB_CMDLINE_LINUX' | awk '{print $1}'| head -n 1`

sed -i--follow-symlinks 's/numa=off//g' /etc/default/grub

sed -i--follow-symlinks 's/transparent_hugepage=never//g' /etc/default/grub

sed -i --follow-symlinks ""${line_num}" s/\"$/ numa=off\"/g" /etc/default/grub

sed-i--follow-symlinks ""$fline_nums/\"$/transparent_hugepage=never\"/g"/etc/default/grub

cat /etc/default/grub

grub2-mkconfig -o /boot/grub2/grub.cfg



 

自动将(dirty_expire_centisecs/100)秒前的脏页刷到磁盘

作者:白帅_8267

来源:金蝶云社区

原文链接:https://vip.kingdee.com/knowledge/444798080332936448?productLineId=29&isKnowledge=2&lang=zh-CN

著作权归作者所有。未经允许禁止转载,如需转载请联系作者获得授权。

posted @ 2025-10-27 15:34  悠悠球  阅读(3)  评论(0)    收藏  举报