Felhasználói eszközök

Eszközök a webhelyen


postgresql:replikacio

Ez a dokumentum egy előző változata!


Replikáció

Primary

[postgres@pg01 data]$ cat <<EOF | psql 
SHOW wal_level;
SHOW max_wal_senders;
SHOW max_replication_slots;
SHOW wal_keep_size;
SHOW archive_mode;
SHOW archive_command;
SHOW listen_addresses;
EOF
 wal_level 
-----------
 replica
(1 row)

 max_wal_senders 
-----------------
 10
(1 row)

 max_replication_slots 
-----------------------
 10
(1 row)

 wal_keep_size 
---------------
 0
(1 row)

 archive_mode 
--------------
 off
(1 row)

 archive_command 
-----------------
 (disabled)
(1 row)

 listen_addresses 
------------------
 *
(1 row)

Standby

[root@pg02 ~]# systemctl stop postgresql-18

[root@pg02 ~]# su - postgres

[postgres@pg02 ~]$ rm -rf $PGDATA/*

[postgres@pg02 ~]$ pg_basebackup -h 192.168.100.71 -U postgres -D /var/lib/pgsql/18/data -X stream -P -R
23747/23747 kB (100%), 1/1 tablespace

[postgres@pg02 ~]$ ls -l $PGDATA/standby.signal
-rw-------. 1 postgres postgres 0 Apr 21 03:55 /var/lib/pgsql/18/data/standby.signal

[postgres@pg02 ~]$ cat $PGDATA/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=postgres passfile=''/var/lib/pgsql/.pgpass'' channel_binding=prefer host=192.168.100.71 port=5432 sslmode=prefer sslnegotiation=postgres sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable'

Ellenőrzés (primary)

[postgres@pg01 data]$ psql -x -c 'select * from pg_stat_replication'
-[ RECORD 1 ]----+------------------------------
pid              | 367
usesysid         | 10
usename          | postgres
application_name | walreceiver
client_addr      | 192.168.100.72
client_hostname  | 
client_port      | 43906
backend_start    | 2026-04-21 03:58:36.752383+02
backend_xmin     | 
state            | streaming
sent_lsn         | 0/E000060
write_lsn        | 0/E000060
flush_lsn        | 0/E000060
replay_lsn       | 0/E000060
write_lag        | 00:00:00.009987
flush_lag        | 00:00:00.010273
replay_lag       | 00:00:00.010329
sync_priority    | 0
sync_state       | async
reply_time       | 2026-04-21 03:58:36.766307+02

Ellenőrzés (standby)

[postgres@pg02 ~]$ psql -x -c 'SELECT * FROM pg_stat_wal_receiver'
-[ RECORD 1 ]---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pid                   | 276
status                | streaming
receive_start_lsn     | 0/E000000
receive_start_tli     | 1
written_lsn           | 0/E000168
flushed_lsn           | 0/E000168
received_tli          | 1
last_msg_send_time    | 2026-04-21 04:01:44.521496+02
last_msg_receipt_time | 2026-04-21 04:01:44.521568+02
latest_end_lsn        | 0/E000168
latest_end_time       | 2026-04-21 04:00:44.499053+02
slot_name             | 
sender_host           | 192.168.100.71
sender_port           | 5432
conninfo              | user=postgres passfile=/var/lib/pgsql/.pgpass channel_binding=prefer dbname=replication host=192.168.100.71 port=5432 fallback_application_name=walreceiver sslmode=prefer sslnegotiation=postgres sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable

Replikáció típus váltás

Standby oldalon módosítani kell az appliction_name paramétert

[postgres@pg02 data]$ cat $PGDATA/postgresql.auto.conf.orig
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=postgres passfile=''/var/lib/pgsql/.pgpass'' channel_binding=prefer host=192.168.100.71 port=5432 sslmode=prefer sslnegotiation=postgres sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable'

[postgres@pg02 data]$ cat $PGDATA/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=postgres passfile=''/var/lib/pgsql/.pgpass'' channel_binding=prefer host=192.168.100.71 port=5432 sslmode=prefer sslnegotiation=postgres sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable application_name=pg02'

[postgres@pg02 data]$ psql -x -c 'SELECT pg_reload_conf()'
-[ RECORD 1 ]--+--
pg_reload_conf | t

Ellenőrzés a primary oldalon

[postgres@pg01 data]$ psql -x -c 'select * from pg_stat_replication'
-[ RECORD 1 ]----+------------------------------
pid              | 388
usesysid         | 10
usename          | postgres
application_name | pg02
client_addr      | 192.168.100.72
client_hostname  | 
client_port      | 57966
backend_start    | 2026-04-21 04:04:49.263132+02
backend_xmin     | 
state            | streaming
sent_lsn         | 0/E000168
write_lsn        | 0/E000168
flush_lsn        | 0/E000168
replay_lsn       | 0/E000168
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 0
sync_state       | async
reply_time       | 2026-04-21 04:05:09.28512+02

Replikáció módosítása

[postgres@pg01 data]$ psql -c 'SHOW synchronous_standby_names'
 synchronous_standby_names 
---------------------------
 
(1 row)

[postgres@pg01 data]$ psql -c "ALTER SYSTEM SET synchronous_standby_names = 'pg02'"
ALTER SYSTEM
[postgres@pg01 data]$ psql -c "SELECT pg_reload_conf();"
 pg_reload_conf 
----------------
 t
(1 row)

[postgres@pg01 data]$ psql -c 'SHOW synchronous_standby_names'
 synchronous_standby_names 
---------------------------
 pg02
(1 row)

[postgres@pg01 data]$ psql -x -c 'select * from pg_stat_replication'
-[ RECORD 1 ]----+------------------------------
pid              | 388
usesysid         | 10
usename          | postgres
application_name | pg02
client_addr      | 192.168.100.72
client_hostname  | 
client_port      | 57966
backend_start    | 2026-04-21 04:04:49.263132+02
backend_xmin     | 
state            | streaming
sent_lsn         | 0/E000168
write_lsn        | 0/E000168
flush_lsn        | 0/E000168
replay_lsn       | 0/E000168
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 1
sync_state       | sync
reply_time       | 2026-04-21 04:12:48.93553+02

Teszteléshez állítsuk le a standby oldalon a PostgreSQL szerver, majd primary oldalon próbáljunk létrehozni egy új adatbázist.

Visszaállítás

[postgres@pg01 data]$ psql -c 'ALTER SYSTEM RESET synchronous_standby_names'
ALTER SYSTEM
[postgres@pg01 data]$ psql -c "SELECT pg_reload_conf();"
 pg_reload_conf 
----------------
 t
(1 row)

[postgres@pg01 data]$ psql -x -c 'select * from pg_stat_replication'
-[ RECORD 1 ]----+------------------------------
pid              | 463
usesysid         | 10
usename          | postgres
application_name | pg02
client_addr      | 192.168.100.72
client_hostname  | 
client_port      | 46046
backend_start    | 2026-04-21 04:19:05.289065+02
backend_xmin     | 
state            | streaming
sent_lsn         | 0/E87E830
write_lsn        | 0/E87E830
flush_lsn        | 0/E87E830
replay_lsn       | 0/E87E830
write_lag        | 00:00:00.00049
flush_lag        | 00:00:00.001067
replay_lag       | 00:00:00.001073
sync_priority    | 0
sync_state       | async
reply_time       | 2026-04-21 04:19:39.612299+02

2. módszer

[root@pg01 ~]# systemctl is-active postgresql-18
active
[root@pg02 ~]# systemctl stop postgresql-18

[root@pg02 ~]# su - postgres

[postgres@pg02 ~]$ rm -rf $PGDATA/*

[root@pg02 ~]# rsync -a root@pg01:/var/lib/pgsql/18/data/ /var/lib/pgsql/18/data/
receiving incremental file list
sent 24,579 bytes  received 116,074,568 bytes  21,108,935.82 bytes/sec
total size is 115,970,939  speedup is 1.00
[root@pg01 ~]# systemctl stop postgresql-18
[root@pg01 ~]# systemctl is-active postgresql-18
inactive
[root@pg02 ~]# rsync -avc root@192.168.100.71:/var/lib/pgsql/18/data/ /var/lib/pgsql/18/data/
root@192.168.100.71's password: 
receiving incremental file list
./
global/pg_control
log/postgresql-Tue.log
pg_logical/
pg_stat/
pg_stat/pgstat.stat
pg_wal/00000001000000000000000E

sent 24,877 bytes  received 196,380 bytes  63,216.29 bytes/sec
total size is 116,101,403  speedup is 524.74
[root@pg01 ~]# systemctl start postgresql-18
[root@pg01 ~]# systemctl is-active postgresql-18
active
[root@pg02 ~]# chown -R postgres:postgres /var/lib/pgsql/18/data

[root@pg02 ~]# cp -a /var/lib/pgsql/18/data/postgresql.auto.conf /var/lib/pgsql/18/data/postgresql.auto.conf.orig

[root@pg02 ~]# echo "primary_conninfo = 'user=postgres host=pg01 port=5432 application_name=pg02'" >> /var/lib/pgsql/18/data/postgresql.auto.conf 

[root@pg02 ~]# touch /var/lib/pgsql/18/data/standby.signal

[root@pg02 ~]# chmod 0600 /var/lib/pgsql/18/data/standby.signal

[root@pg02 ~]# chown postgres:postgres /var/lib/pgsql/18/data/standby.signal

[root@pg02 ~]# systemctl start postgresql-18
[root@pg01 ~]# su - postgres

[postgres@pg01 ~]$ psql -x -c 'select * from pg_stat_replication'
-[ RECORD 1 ]----+------------------------------
pid              | 743
usesysid         | 10
usename          | postgres
application_name | pg02
client_addr      | 192.168.100.72
client_hostname  | 
client_port      | 47134
backend_start    | 2026-04-21 04:42:27.779197+02
backend_xmin     | 
state            | streaming
sent_lsn         | 0/E87EB80
write_lsn        | 0/E87EB80
flush_lsn        | 0/E87EB80
replay_lsn       | 0/E87EB80
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 0
sync_state       | async
reply_time       | 2026-04-21 04:45:18.963055+02
postgresql/replikacio.1776739571.txt.gz · legutóbbi módosítás: – Szerkesztő: riba.zoltan