Re: pg_stat_progress_basebackup - progress reporting forpg_basebackup, in the server side

Поиск
Список
Период
Сортировка
От Kyotaro Horiguchi
Тема Re: pg_stat_progress_basebackup - progress reporting forpg_basebackup, in the server side
Дата
Msg-id 20200130.125841.2006218843084031993.horikyota.ntt@gmail.com
обсуждение исходный текст
Ответ на pg_stat_progress_basebackup - progress reporting for pg_basebackup,in the server side  (Fujii Masao <masao.fujii@oss.nttdata.com>)
Ответы Re: pg_stat_progress_basebackup - progress reporting forpg_basebackup, in the server side
Список pgsql-hackers
At Wed, 29 Jan 2020 23:16:08 +0900, Fujii Masao <masao.fujii@oss.nttdata.com> wrote in 
> Hi,
> 
> pg_basebackup reports the backup progress if --progress option is
> specified,
> and we can monitor it in the client side. I think that it's useful if
> we can
> monitor the progress information also in the server side because, for
> example,
> we can easily check that by using SQL. So I'd like to propose
> pg_stat_progress_basebackup view that allows us to monitor the
> progress
> of pg_basebackup, in the server side. Thought?
> 
> POC patch is attached.

| postgres=# \d pg_stat_progress_basebackup
|          View "pg_catalog.pg_stat_progress_basebackup"
|        Column        |  Type   | Collation | Nullable | Default 
| ---------------------+---------+-----------+----------+---------
|  pid                 | integer |           |          | 
|  phase               | text    |           |          | 
|  backup_total        | bigint  |           |          | 
|  backup_streamed     | bigint  |           |          | 
|  tablespace_total    | bigint  |           |          | 
|  tablespace_streamed | bigint  |           |          | 

I think the view needs client identity such like host/port pair
besides pid (host/port pair fails identify client in the case of
unix-sockets.).  Also elapsed time from session start might be
useful. pg_stat_progress_acuum has datid, datname and relid.

+    if (backup_total > 0 && backup_streamed > backup_total)
+    {
+        backup_total = backup_streamed;

Do we need the condition "backup_total > 0"?


+        int        tblspc_streamed = 0;
+
+        pgstat_progress_update_param(PROGRESS_BASEBACKUP_PHASE,
+                                     PROGRESS_BASEBACKUP_PHASE_STREAM_BACKUP);

This starts "streaming backup" phase with backup_total = 0. Coudln't
we move to that phase after setting backup total and tablespace total?
That is, just after calling SendBackupHeader().

+            WHEN 3 THEN 'stopping backup'::text

I'm not sure, but the "stop" seems suggesting the backup is terminated
before completion. If it is following the name of the function
pg_stop_backup, I think the name is suggesting to stop "the state for
performing backup", not a backup.

In the first place, the progress is about "backup" so it seems strange
that we have another phase after the "stopping backup" phase.  It
might be better that it is "finishing file transfer" or such.

   "initializing"
-> "starting file transfer"
-> "transferring files"
-> "finishing file transfer"
-> "transaferring WAL"

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: closesocket behavior in different platforms
Следующее
От: Kyotaro Horiguchi
Дата:
Сообщение: Re: pause recovery if pitr target not reached