修改归档模式
1.修改三个节点的patroni.yml文件,将
archive_mode: on
archive_command: 'cp %p /data01/postgres/pgsql/pgarch/%f'
添加到patroni.yml文件里面(如下文件,只写了一个节点,每个节点都需要写)
[root@xyrtddb03 patroni]# cat patroni.yml
scope: pgsql16
namespace: /pgsql01/
name: pg03
restapi:
listen: 0.0.0.0:8008
connect_address: 10.40.2.43:8008
etcd3:
hosts: 10.40.2.41:2379,10.40.2.42:2379,10.40.2.43:2379
bootstrap:
dcs:
ttl: 6
loop_wait: 3
retry_timeout: 3
maximum_lag_on_failover: 1048576
master_start_timeout: 300
synchronous_mode: true
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
max_connections: 8000
superuser_reserved_connections: 10
shared_buffers: 8GB
wal_buffers: 2GB
effective_cache_size: 24GB
work_mem: 8MB
maintenance_work_mem: 512MB
max_wal_size: 2GB
min_wal_size: 256MB
idle_in_transaction_session_timeout: 0
effective_io_concurrency: 8
parallel_workers_per_gather: 8
wal_level: "replica"
hot_standby: "on"
wal_keep_size: 40000M
max_wal_senders: 10
max_replication_slots: 10
wal_log_hints: "on"
logging_collector: "on"
log_directory: "/data01/postgres/pgsql/pglog"
log_filename: "postgresql-%Y-%m-%d.log"
archive_mode: on
archive_command: 'cp %p /data01/postgres/pgsql/pgarch/%f'
initdb:
- encoding: UTF8
- locale: C
- lc-ctype: zh_CN.UTF-8
- data-checksums
pg_hba:
- host replication repuser 0.0.0.0/0 md5
- host all all 0.0.0.0/0 md5
users:
admin:
password: adm45612398!
options:
- createrole
- createdb
postgresql:
listen: 0.0.0.0:5432
connect_address: 10.40.2.43:5432
data_dir: /data01/postgres/pgsql/pgdata
bin_dir: /data01/postgres/pgsql/bin
authentication:
replication:
username: repuser
password: 'Rep1231331#'
superuser:
username: postgres
password: Asdfsd123569!
callbacks:
on_start: /etc/patroni/patroni_callback.sh
on_stop: /etc/patroni/patroni_callback.sh
on_role_change: /etc/patroni/patroni_callback.sh
on_reload: /etc/patroni/patroni_callback.sh
on_reload: /etc/patroni/patroni_callback.sh
basebackup:
max-rate: 10000M
checkpoint: fast
#callbacks:
# on_start: /etc/patroni/patroni_callback.sh
# on_stop: /etc/patroni/patroni_callback.sh
# on_role_change: /etc/patroni/patroni_callback.sh
#callbacks:
# on_start: /etc/patroni/patroni_callback.sh
# on_stop: /etc/patroni/patroni_callback.sh
# on_role_change: /etc/patroni/patroni_callback.sh
#log:
# level: DEBUG
# format: '%(asctime)s - %(levelname)s - %(message)s'
watchdog:
mode: automatic
device: /dev/watchdog
safety_margin: 2
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
[root@xyrtddb03 patroni]# pwd
/etc/patroni
[root@xyrtddb03 patroni]#
2.分别轮巡重启三个节点的patroni服务
[root@xyrtddb03 patroni]# systemctl restart patroni.service
[root@xyrtddb03 patroni]# patronictl -c /etc/patroni/patroni.yml list
+ Cluster: pgsql16 (7586886844482273799) --------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------+------------+--------------+-----------+----+-----------+
| pg01 | 10.40.2.41 | Replica | streaming | 12 | 0 |
| pg02 | 10.40.2.42 | Sync Standby | streaming | 12 | 0 |
| pg03 | 10.40.2.43 | Leader | running | 12 | |
+--------+------------+--------------+-----------+----+-----------+
[root@xyrtddb03 patroni]#
3.因为修改完patroni文件重启patroni服务,尝试切了一下归档日志,发现没有生效。
原因是etcd的文件没有更新,可以手动更新一下etcd文件
[root@xyrtddb03 patroni]# etcdctl get /pgsql01/pgsql16/config > /tmp/pgsql02.json
[root@xyrtddb03 patroni]# cat /tmp/pgsql02.json
/pgsql01/pgsql16/config
{"ttl":20,"loop_wait":3,"retry_timeout":3,"maximum_lag_on_failover":1048576,"master_start_timeout":300,"synchronous_mode":true,"postgresql":{"use_pg_rewind":true,"use_slots":true,"parameters":{"max_connections":8000,"superuser_reserved_connections":10,"shared_buffers":"8GB","wal_buffers":"2GB","effective_cache_size":"24GB","work_mem":"8MB","maintenance_work_mem":"512MB","max_wal_size":"2GB","min_wal_size":"256MB","idle_in_transaction_session_timeout":0,"effective_io_concurrency":8,"parallel_workers_per_gather":8,"wal_level":"replica","hot_standby":"on","wal_keep_size":"40000M","max_wal_senders":10,"max_replication_slots":10,"wal_log_hints":"on","logging_collector":"on","log_directory":"/data01/postgres/pgsql/pglog","log_filename":"postgresql-%Y-%m-%d.log"}}}
[root@xyrtddb03 patroni]#
方法:手动put一下(下面内容可以直接复制)put操作只需要在任意节点执行即可,不需要在每一台执行。
etcdctl put /pgsql01/pgsql16/config '{"ttl":20,"loop_wait":3,"retry_timeout":3,"maximum_lag_on_failover":1048576,"master_start_timeout":300,"synchronous_mode":true,"postgresql":{"use_pg_rewind":true,"use_slots":true,"parameters":{"max_connections":8000,"superuser_reserved_connections":10,"shared_buffers":"8GB","wal_buffers":"2GB","effective_cache_size":"24GB","work_mem":"8MB","maintenance_work_mem":"512MB","max_wal_size":"2GB","min_wal_size":"256MB","idle_in_transaction_session_timeout":0,"effective_io_concurrency":8,"parallel_workers_per_gather":8,"wal_level":"replica","hot_standby":"on","wal_keep_size":"40000M","max_wal_senders":10,"max_replication_slots":10,"wal_log_hints":"on","logging_collector":"on","log_directory":"/data01/postgres/pgsql/pglog","log_filename":"postgresql-%Y-%m-%d.log","archive_mode":"on","archive_command":"cp %p /data01/postgres/pgsql/pgarch/%f"}}}'
(注意:切记添加归档路径的时候,里面要把单引号去掉,上面的内容是正确的,下面的示例是错误的
"archive_mode":"on","archive_command":"'cp %p /data01/postgres/pgsql/pgarch/%f'" (错误) )
4.再重启三台patroni服务
systemctl restart patroni
5.手动切换日志试一下
psql
SELECT pg_switch_wal();

发现已经有归档日志了。

浙公网安备 33010602011771号