PG 数据库安装优化

------------------------------------------------------------------------------------------------------------------------------------------
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.1.51 fgedu51">> /etc/hosts
cat /etc/hosts
-----------------------------------------------------------------------------------------------------------------------
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
lvcreate -n lvdata -L 2000G vgdata
lvcreate -n lvarch -L 599G vgarch
lvcreate -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,nodiratime 0 0
EOF

---------------------------------------------------------------------------------------------------

cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/
echo "[EL9-1]" >> /etc/yum.repos.d/fgedu.repo
echo "name =Linux-9-DVD1" >> /etc/yum.repos.d/fgedu.repo
echo "baseurl=file://mnt/AppStream" >> /etc/yum.repos.d/fgedu.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/fgedu.repo
echo "enabled=1" >> /etc/yum.repos.d/fgedu.repo
echo "[EL9-2]" >> /etc/yum.repos.d/fgedu.repo
echo "name =Linux-9-DVD2" >> /etc/yum.repos.d/fgedu.repo
echo "baseurl=file///mnt/BaseOS" >> /etc/yum.repos.d/fgedu.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/fgedu.repo
echo "enabled=1" >> /etc/yum.repos.d/fgedu.repo

dnf -y groupinstall "Development Tools"
dnf -y install coreutils glib2 lrzsz dstat sysstat e4fsprogs xfsprogs readline-devel zlib-devel gcc
gcc-c++ make
dnf -y install cmake smartmontools flex bison perl-devel perl-ExtUtils* openldap-devel jadetex bzip2
openssl-devel
dnf -y install pam-devel libxml2-devel libxslt-devel python-devel tcl-devel lz4 clang-devel
libicu-devel llvm-devel
dnf -y install systemtap-sdt-devel perl krb5-devel pam libuuid libuuid-devel systemd-devel tcl
lz4-devel
dnf -y install python3 python3-devel libzstd-devel libselinux-devel pcre-devel tree psmisc libicu-devel
-------------------------------------------------------------------------------------------------------------------------------------------------------------

cat >> /etc/security/limits.conf << EOF
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 1024000
* hard nproc 1024000
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
EOF
cat /etc/security/limits.conf
cat >> /etc/sysctl.conf <<EOF
# file
fs.aio-max-nr = 2097152
fs.file-max = 76724600
fs.nr_open= 20480000
# vm
vm.swappiness=100
vm.min_free_kbytes = 20480000
vm.overcommit_memory = 0
vm.overcommit_ratio = 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 = 7500
#kernel
kernel.shmall = 644245094
kernel.shmmax =  10307921510
kernel.shmmni = 4096
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

---------------------------------------------------------------------------------------------------------------------------------

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 ""${line_num}" s/\"$/ transparent_hugepage=never\"/g" /etc/default/grub
cat /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
chmod +x /etc/rc.d/rc.local
cat >> /usr/lib/systemd/system/rc-local.service << EOF
[Install]
WantedBy=multi-user.target
EOF
systemctl enable rc-local
systemctl start rc-local
cat >> /etc/rc.d/rc.local << EOF
echo deadline > /sys/block/sdb/queue/scheduler
echo deadline > /sys/block/sdc/queue/scheduler
echo deadline > /sys/block/sdd/queue/scheduler
echo deadline > /sys/block/sde/queue/scheduler
echo deadline > /sys/block/sdf/queue/scheduler
echo deadline > /sys/block/sdg/queue/scheduler
EOF

echo "SELINUX=disabled" > /etc/selinux/config
echo "#SELINUXTYPE=targeted " >> /etc/selinux/config
cat /etc/selinux/config
setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service
timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 0
systemctl restart rsyslog
systemctl restart crond

---------------------------------------------------------------------------------------------------------------------------------------------------

su - root

echo "pgsql ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

exit
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
service systemd-logind restart
systemctl set-default multi-user.target
mkdir /postgresql/log
mkdir /postgresql/app
mkdir /postgresql/soft
groupadd -g 60000 pgsql
useradd -u 60000 -g pgsql pgsql
echo "pgsql" |passwd --stdin pgsql
chown -R pgsql:pgsql /postgresql
chmod -R 775 /postgresql
cd /postgresql/soft
tar -zxvf postgresql-15.3.tar.gz
cd postgresql-15.3
./configure --prefix=/postgresql/app/postgresql \
--with-icu \
--with-perl \
--with-python \
--with-tcl \
--with-tclconfig=/usr/lib64 \
--with-openssl \
--with-includes=/usr/include/openssl \
--with-readline \
--with-pam \
--with-gssapi \
--with-libraries=/usr/lib64 \
--enable-nls \
--enable-dtrace \
--with-uuid=e2fs \
--with-libxml \
--with-libxslt \
--with-ldap \
--with-selinux \
--with-systemd \
--with-system-tzdata=/usr/share/zoneinfo \
--with-lz4 \
--with-zstd
make -j 4 world
make install world
#make -j 4 world \
#make -j 4 install-world
cd /postgresql/soft/postgresql-15.3/contrib
make && make install
cd /postgresql/soft/postgresql-15.3/contrib/pg_stat_statements
make && make install
cd /postgresql/soft/postgresql-15.3/contrib/auto_explain
make && make install
tar czvf /postgresql/soft/postgresql-15.3-el9-x86_64-20230606.tar.gz /postgresql/app/postgresql
#./configure --prefix=/postgresql/app/postgresql --with-openssl --with-includes=/usr/include/openssl
#--with-readline
#make uninstall
#make clean
 
------------------------------------------------------------------------------------------------------------------------------------
 
su - pgsql
vi ~/.bash_profile
追加
export TZ='Asia/Shanghai'
export LANG=en_US.UTF8
export PS1="[`whoami`@`hostname`:"'$PWD]$'
export PGPORT=5432
export PGDATA=/postgresql/data
export PGHOME=/postgresql/app/postgresql
export
LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIB
RARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export DATE=`date +"%Y%m%d%H%M"`
export MANPATH=$PGHOME/share/man:$MANPATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
source ~/.bash_profile

 ---------------------------------------------------------------------------------------------------------------------------------

/postgresql/app/postgresql/bin/initdb -D /postgresql/data -E UTF8 --lc-collate=C --lc-ctype=en_US.utf8 -U postgres
可以单独设置 pg_xlog 事务日志建议放在性能最好的分区,这里 data 一般就是性能最好的,所以不需要单独配置
了。
-X /postgresql/pg_xlog$PGPORT
-E encoding/--encoding=encoding 选择模板数据库的编码。这也是您稍后创建的任何数据库的默认编码,
--lc-collate/--lc-ctype 更改默认的排序顺序或字符集类。
要更改默认的排序顺序或字符集类,请使用——lc-collate 和——lc-ctype 选项。
除了 C 或 POSIX 之外的排序顺序也会造成性能损失。
------------------------------------------------------------------------------------------------------------------------------------
 
cp /postgresql/data/postgresql.conf /postgresql/data/postgresql.conf.bak
cp /postgresql/soft/postgresql-fgedu.conf /postgresql/data/postgresql.conf
 
listen_addresses = '0.0.0.0' --#指定服务器在哪些 TCP/IP 地址上监听客户端连接。
port = 5432 --#服务器监听的 TCP 端口;默认是 5432 。
max_connections = 100 --#决定数据库的最大并发连接数,建议值(1 核 CPU:50)
unix_socket_directories = '.' --socket 生成的目录,DATA 当前
superuser_reserved_connections = 10 --#为超级用户保留的连接数,默认是 3,不能小于 max_connections。
ssl = off --关才 SSL
tcp_keepalives_idle = 60 --规定在操作系统向客户端发送一个 TCP keepalive 消息后无网络活动的时间总量,
以秒为单位。
tcp_keepalives_interval = 10 --规定未被客户端确认收到的 TCP keepalive 消息应重新传输的时间长度,则以
秒为单位
tcp_keepalives_count = 10 --指定服务器到客户端的连接被认为中断之前可以丢失的 TCP keepalive 消息的数
--可以及时发现无效连接
#shared_buffers
shared_buffers = 1GB --设置数据库服务器可以使用的共享内存数量,推荐将该值设置为系统内存的 25%。
maintenance_work_mem = 256MB --它决定数据库的维护操作使用的内存空间的大小。数据库的维护操作包括
VACUUM、CREATE INDEX 和 ALTER TABLE ADD FOREIGN KEY 等操作。
temp_buffers = 64MB --为每个数据库会话设置用于临时缓冲区的最大内存.这些是仅用于访问临时表的会话
本地缓冲。
work_mem = 5592kB --指定在写到临时磁盘文件之前用于内部排序操作和哈希表的内存量。
huge_pages = try --让 PG 尽量使用大内存页
dynamic_shared_memory_type = posix --服务器使用的内存管理方式,posix 用于使用 shm_open 分配的 POSIX
共享内存,dynamic_shared_memory_type 设置为 POSIX 时,动态共享内存控制文件存储在/ dev/shm
bgwriter_delay = 10ms --后台写入器活动轮次之间的延迟
effective_io_concurrency = 0 --设置了该值,磁盘的预读会失效,顺序扫描和索引扫描都可以利用磁盘预读,建
议关闭,默认值为 1。
max_worker_processes = 20 --系统能够支持的后台进程的最大数量
max_parallel_workers = 20 --设置系统支持的最大并行数量
old_snapshot_threshold = 3h --通过 old_snapshot_threshold 来强制删除为过老的事务快照保留的死元组
wal_level = replica --控制 PostgreSQL 数据库的 WAL 量,replica 模式会记录更新操作和查询语句,但不记录
查询参数
wal_log_hints = on --在 PostgreSQL 服务器一个检查点之后页面被第一次修改期间,把该磁盘页面的整个内容
都写入 WAL
wal_buffers = 16MB --用于还未写入磁盘的 WAL 数据的共享内存量
synchronous_commit = off --同步提交关闭
min_wal_size = 2GB --# 在自动 WAL 检查点之间允许 WAL 增长到的最小尺寸,max_wal_size/4
max_wal_size = 8GB --# 在自动 WAL 检查点之间允许 WAL 增长到的最大尺寸,这是一个软限制, 在特殊的情
况下 WAL 尺寸可能会超过 max_wal_size
checkpoint_timeout = 30min --自动 WAL 检查点之间的最长时间
checkpoint_warning = 60s --由于填充 WAL 导致的检查点之间的间隔时间低于这个值,就会向服务器日志中写入
一个消息
checkpoint_completion_target = 0.9 --增加 checkpoint_completion_target 来降低检查点的 I/O 负载, 默认
0.5
archive_mode = always --当启用 archive_mode 时,可以通过设置 archive_command 命令将完成的 WAL 段发送
到归档存储;在 always 模式下,所有从归档恢复 的或者用流复制传来的文件将被(再次)归档。
archive_command = 'test ! -f /postgresql/archive/%f && cp %p /postgresql/archive/%f' --归档命令
archive_timeout = 1800 --强制服务器来周期性地切换到一个新的 WAL 段文件,30 分钟切换一次。
max_wal_senders = 32 --即同时运行 WAL 发送进程的最大数
max_replication_slots = 10 --指定服务器可以支持的复制槽最大数量
wal_sender_timeout = 600s --中断那些停止活动超过这个时间量的复制连接
track_commit_timestamp = on --记录事务的提交时间
hot_standby = on --指定在恢复期间,你是否能够连接并运行查询
hot_standby_feedback = on --指定一个热后备机是否将会向主服务器或上游后备机发送有关于后备机上当前正
被执行的查询的反馈。
log_destination = 'stderr' --PostgreSQL 支持多种方法来记录服务器消息,默认值是只记录到 stderr,只记
录错误输出,推荐 csvlog,这样可以很方便地把日志载入到程序中,也可以同时使用 csvlog 和 stderr,会记录两
种格式的日志。
logging_collector = on --打开日志收集器
log_directory = '/postgresql/log/pg_log' --日志保存路径,
log_filename = 'postgresql-%m-%d.log' --:日志名格
log_line_prefix = '%t:%r:%u@%d:[%p]: ' --#控制每条日志信息的前缀格式,默认值是空串
log_truncate_on_rotation = on --#覆盖同名文件#只保留 7 天日志,循环覆盖
log_rotation_age = 1d --#每天生成一个新的日志文件
log_rotation_size = 0 --#不限制单个日志文件大小
log_timezone = 'Asia/Shanghai' --设置在服务器日志中写入的时间戳的时区
log_min_duration_statement = 1000 --记录慢 sql 的时间阀值,超过这个时间的 sql 将会被记录到日志中
log_checkpoints = on --控制检查点和重启点是否被记录在服务器日志中,一些统计信息也被包括在日志消息中,
包括写入缓冲区的数据和写它们所花的时间,默认值是关闭。
log_connections = on --控制连接信息是否被记录,尝试对服务器的连接被记录,客户端认证的成功完成也会被
记录,在会话中它不能被更改,默认为 off。
log_disconnections = on --控制会话终止是否被记录。
log_lock_waits = on --记录锁等待
log_statement = 'ddl' --控制哪些 SQL 语句被记录
log_replication_commands = on --导致每一个复制命令都被记录在服务器日志中
log_temp_files = -1 --控制记录临时文件名和尺寸
cluster_name = 'fgedu51' --为不同目的设置标识这个数据库集群(实例)的名称。此集群名称出现在该集群中所
有服务器进程的进程标题中。 此外,它还是备用连接的默认应用名称。
effective_cache_size = 3GB --对一个单一查询可用的有效磁盘缓冲区的预估大小,更高的数值会使得索引扫描
更可能被使用,更低的数值会使得顺序扫描更可能被使用。推荐值是系统内存的 50%或更大。
default_statistics_target = 200 --为没有通过 ALTER TABLE SET STATISTICS 设置列相关目标的表列设置默
认统计目标。
track_activities = on --启用对每个会话的当前执行命令的信息收集,还有命令开始执行的时间。
track_counts = on --启用在数据库活动上的统计收集。
track_io_timing = on --启用对系统 I/O 调用的计时。
track_functions = pl --启用跟踪函数调用计数和用时。指定 pl 只跟踪过程语言函数
track_activity_query_size = 10240 --为每个活动会话指定存储当前执行命令的文本所保留的内存量,以字节
为单位。
autovacuum = on --控制服务器是否运行自动清理启动器后台进程
autovacuum_max_workers = 5 --指定能同时运行的 autovacuum 进程的最大数量, 适当调大, 避免 vacuum 不
及时导致表膨胀
log_autovacuum_min_duration = 1000 --如果自动清理运行至少该值所指定的时间量,被自动清理执行的每一个
动作都会被日志记录。以毫秒为单位
deadlock_timeout = 5s --这是进行死锁检测之前在一个锁上等待的时间量
max_locks_per_transaction = 1024 --这个参数控制为每个事务分配的对象锁的平均数量
timezone = 'Asia/Shanghai' --设置用于显示和解释时间戳的时区。
datestyle = 'iso, mdy' --设置日期和时间值的显示格式
lc_messages = 'en_US.UTF-8' --设置消息显示的语言。
lc_monetary = 'en_US.UTF-8' --设置用于格式化货币量的区域,
lc_numeric = 'en_US.UTF-8' --设置用于格式化数字的区域,
lc_time = 'en_US.UTF-8' -设置用于格式化日期和时间的区域
default_text_search_config = 'pg_catalog.english' --选择被那些没有显式参数指定配置的文本搜索函数变
体使用的文本搜索配置
shared_preload_libraries = 'pg_stat_statements,auto_explain' --这个变量指定一个或者多个要在服务器启
动时预载入的共享库。
pg_stat_statements.max = 1000 --# 在 pg_stat_statements 中最多保留多少条统计信息,通过 LRU 算法,覆盖
老的记录。
pg_stat_statements.track = top --all - (所有 SQL 包括函数内嵌套的 SQL), top - 直接执行的 SQL(函数内的
sql 不被跟踪), none - (不跟踪)
pg_stat_statements.track_utility = true --# 是否跟踪非 DML 语句 (例如 DDL,DCL),on 表示跟踪, off 表
示不跟踪
pg_stat_statements.save = true -- 重启后是否保留统计信息
auto_explain.log_min_duration = 10s --代表了决定了超过多长时间的慢 SQL 语句需要对执行计划进行记录
auto_explain.log_nested_statements = on --该参数用于控制是否支持嵌套语句(在一个函数内执行的语句)
的执行计划输出
auto_explain.log_analyze = true --这个参数主要是在输出的内容上进行调整,如果不写这个参数则输出的内
容仅仅是 explain 的内容
auto_explain.log_verbose = true --这个值主要控制 explain 中的 verbose 信息的信息输出。
auto_explain.log_timing = true --这个值主要控制在打印这个语句执行的时间有多长
auto_explain.log_buffers = true --这个值是在开启了 log_analyze 后产生的在 analzye 后打印 buffers 的
auto_explain.log_format = json --选择要使用的 EXPLAIN 输出格式
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
vi /postgresql/data/pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
这个防火墙文件在数据文件目录 pgdata 中。
将以下内容追加到文件末尾,表示允许网络用户使用用户密码连接你的 postgresql 数据库.
# 流复制
host replication xx 0.0.0.0/0 scram-sha-256
# 拒绝超级用户从网络登录
host all postgres 0.0.0.0/0 reject
#其他用户登陆
host all all 0.0.0.0/0 scram-sha-256
#后期要改成 md5,目前还没设置用户与密码
#禁用复制用户的参数
# replication privilege.
#local replication all
peer
#host replication all
127.0.0.1/32
ident
#host replication all
::1/128
ident
---
pg_ctl start
pg_ctl stop
or:
/postgresql/app/postgresql/bin/pg_ctl start -D /postgresql/data
/postgresql/app/postgresql/bin/pg_ctl stop -D /postgresql/data
vi /etc/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=pgsql
Group=pgsql
# PGSTARTTIMEOUT should be less than TimeoutSec value.
Environment=PGSTARTTIMEOUT=300
Environment=PGDATA=/postgresql/data
ExecStart=/postgresql/app/postgresql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}
ExecStop=/postgresql/app/postgresql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/postgresql/app/postgresql/bin/pg_ctl reload -D ${PGDATA} -s
TimeoutSec=300
KillMode=mixed
[Install]
WantedBy=multi-user.target
[Unit]
Description=PostgreSQL database server
After=network.target --有哪个服务模块之后启动
[Service]
Type=forking --要求 ExecStart 启动的命令自身就是以 daemon 模式运行的,不会因为退出终端而停止运行
User=pgsql
Group=pgsql
# PGSTARTTIMEOUT should be less than TimeoutSec value.
Environment=PGSTARTTIMEOUT=300 --PG 启动超时时间
Environment=PGDATA=/postgresql/data
ExecStart=/postgresql/app/postgresql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}
--就是实际执行此服务的程序。
ExecStop=/postgresql/app/postgresql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
--用来实现 systemctl stop 命令,关闭服务。
ExecReload=/postgresql/app/postgresql/bin/pg_ctl reload -D ${PGDATA} -s
--用来实现 systemctl reload 命令,重新加载服务的配置信息。
TimeoutSec=300
--设置如果在关闭或打开服务时并不顺利,则强制打开或关闭在 300 秒后开始
KillMode=mixed --主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
[Install]
WantedBy=multi-user.target --指的是服务所在的 Target 是 multi-user.target,就是 multi-user.target,在
这个组里的所有服务,都将开机启动。
然后执行命令
systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql
systemctl status postgresql
--------------------------------------------------------------------------------------------------------------------------
检查进程:
ps -ef|grep postgre
netstat -an |grep 5432
psql -h 192.168.1.51 -p 5432 -U postgres
psql -h localhost -p 5432 -U postgres
---------------------------------------------------------------------------------------------------------------------------
开启归档模式
mkdir /postgresql/log/archive
cat >> /postgresql/data/postgresql.conf << EOF
archive_mode = always
wal_level = replica
archive_command = 'test ! -f /postgresql/log/archive/%f && cp %p /postgresql/log/archive/%f'
archive_timeout = 300
max_wal_senders = 32
wal_sender_timeout = 60s
max_replication_slots = 10
hot_standby_feedback = on
wal_log_hints = on
hot_standby = on
EOF
pg_ctl stop
pg_ctl start
 
posted @ 2025-05-28 15:32  风中阿阳  阅读(33)  评论(0)    收藏  举报