On Fri, Sep 24, 2021 at 5:02 PM Tim <timfo...@gmail.com> wrote:

> I'm currently doing this with a 2.2 TB database.
>
> Best way IMO is to (UPDATE pg_index SET indisready = false ... ) for non
> PK indexes for the largest tables. Then just set it back to indisready =
> true after its done and run a REINDEX CONCURRENTLY on the indexes that were
> disabled.
>
> Got about a transfer speed of 100GB per 50 minutes with this method with
> consistent results.
>

Thanks Tim, that has worked great. I'm trying to automate the whole process
but I can't see a way of seeing when the initial pglogical copy is complete
short of checking the disk space.

All I've found is:-

select * from pglogical.local_sync_status;
 sync_kind | sync_subid | sync_nspname | sync_relname | sync_status |
sync_statuslsn
-----------+------------+--------------+--------------+-------------+----------------
 d         | 1821676733 |              |              | d           | 0/0
(1 row)

or

xxx=# select * from pg_stat_replication ;
-[ RECORD 1 ]----+--------------------------------
pid              | 3469521
usesysid         | 77668435
usename          | xxx
application_name | xxxx_snap
client_addr      | 10.44.16.83
client_hostname  |
client_port      | 52594
backend_start    | 2021-10-27 12:51:17.618734+00
backend_xmin     | 221892481
state            | startup
sent_lsn         |
write_lsn        |
flush_lsn        |
replay_lsn       |
write_lag        |
flush_lag        |
replay_lag       |
sync_priority    | 0
sync_state       | async

Reply via email to