mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-27 08:56:29 +00:00
@@ -49,31 +49,31 @@
|
|||||||
<para>
|
<para>
|
||||||
<application>repmgrd</application> running normally on all nodes:
|
<application>repmgrd</application> running normally on all nodes:
|
||||||
<programlisting>$ repmgr -f /etc/repmgr.conf daemon status
|
<programlisting>$ repmgr -f /etc/repmgr.conf daemon status
|
||||||
ID | Name | Role | Status | repmgrd | PID | Paused?
|
ID | Name | Role | Priority | Status | repmgrd | PID | Paused?
|
||||||
----+-------+---------+---------+---------+------+---------
|
----+-------+---------+----------+---------+---------+------+---------
|
||||||
1 | node1 | primary | running | running | 7851 | no
|
1 | node1 | primary | 100 | running | running | 5722 | no
|
||||||
2 | node2 | standby | running | running | 7889 | no
|
2 | node2 | standby | 100 | running | running | 5731 | no
|
||||||
3 | node3 | standby | running | running | 7918 | no</programlisting>
|
3 | node3 | standby | 100 | running | running | 5779 | no</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<application>repmgrd</application> paused on all nodes (using <xref linkend="repmgr-daemon-pause">):
|
<application>repmgrd</application> paused on all nodes (using <xref linkend="repmgr-daemon-pause">):
|
||||||
<programlisting>$ repmgr -f /etc/repmgr.conf daemon status
|
<programlisting>$ repmgr -f /etc/repmgr.conf daemon status
|
||||||
ID | Name | Role | Status | repmgrd | PID | Paused?
|
ID | Name | Role | Priority | Status | repmgrd | PID | Paused?
|
||||||
----+-------+---------+---------+---------+------+---------
|
----+-------+---------+----------+---------+---------+------+---------
|
||||||
1 | node1 | primary | running | running | 7851 | yes
|
1 | node1 | primary | 100 | running | running | 5722 | yes
|
||||||
2 | node2 | standby | running | running | 7889 | yes
|
2 | node2 | standby | 100 | running | running | 5731 | yes
|
||||||
3 | node3 | standby | running | running | 7918 | yes</programlisting>
|
3 | node3 | standby | 100 | running | running | 5779 | yes</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<application>repmgrd</application> not running on one node:
|
<application>repmgrd</application> not running on one node:
|
||||||
<programlisting>$ repmgr -f /etc/repmgr.conf daemon status
|
<programlisting>$ repmgr -f /etc/repmgr.conf daemon status
|
||||||
ID | Name | Role | Status | repmgrd | PID | Paused?
|
ID | Name | Role | Priority | Status | repmgrd | PID | Paused?
|
||||||
----+-------+---------+---------+-------------+------+---------
|
----+-------+---------+----------+---------+-------------+------+---------
|
||||||
1 | node1 | primary | running | running | 7851 | yes
|
1 | node1 | primary | 100 | running | running | 5722 | yes
|
||||||
2 | node2 | standby | running | not running | n/a | n/a
|
2 | node2 | standby | 100 | running | not running | n/a | n/a
|
||||||
3 | node3 | standby | running | running | 7918 | yes</programlisting>
|
3 | node3 | standby | 100 | running | running | 5779 | yes</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</refsect1>
|
</refsect1>
|
||||||
@@ -92,9 +92,9 @@
|
|||||||
parsing by scripts, e.g.:
|
parsing by scripts, e.g.:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ repmgr -f /etc/repmgr.conf daemon status --csv
|
$ repmgr -f /etc/repmgr.conf daemon status --csv
|
||||||
1,node1,primary,1,1,10204,1
|
1,node1,primary,1,1,5722,1,100
|
||||||
2,node2,standby,1,0,-1,1
|
2,node2,standby,1,0,-1,1,100
|
||||||
3,node3,standby,1,1,10225,1</programlisting>
|
3,node3,standby,1,1,5779,1,100</programlisting>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The columns have following meanings:
|
The columns have following meanings:
|
||||||
@@ -141,6 +141,12 @@
|
|||||||
</simpara>
|
</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<simpara>
|
||||||
|
<application>repmgrd</application> priority
|
||||||
|
</simpara>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|||||||
@@ -43,13 +43,14 @@ typedef enum
|
|||||||
STATUS_ID = 0,
|
STATUS_ID = 0,
|
||||||
STATUS_NAME,
|
STATUS_NAME,
|
||||||
STATUS_ROLE,
|
STATUS_ROLE,
|
||||||
|
STATUS_PRIORITY,
|
||||||
STATUS_PG,
|
STATUS_PG,
|
||||||
STATUS_RUNNING,
|
STATUS_RUNNING,
|
||||||
STATUS_PID,
|
STATUS_PID,
|
||||||
STATUS_PAUSED
|
STATUS_PAUSED
|
||||||
} StatusHeader;
|
} StatusHeader;
|
||||||
|
|
||||||
#define STATUS_HEADER_COUNT 7
|
#define STATUS_HEADER_COUNT 8
|
||||||
|
|
||||||
struct ColHeader headers_status[STATUS_HEADER_COUNT];
|
struct ColHeader headers_status[STATUS_HEADER_COUNT];
|
||||||
|
|
||||||
@@ -89,6 +90,12 @@ do_daemon_status(void)
|
|||||||
strncpy(headers_status[STATUS_ID].title, _("ID"), MAXLEN);
|
strncpy(headers_status[STATUS_ID].title, _("ID"), MAXLEN);
|
||||||
strncpy(headers_status[STATUS_NAME].title, _("Name"), MAXLEN);
|
strncpy(headers_status[STATUS_NAME].title, _("Name"), MAXLEN);
|
||||||
strncpy(headers_status[STATUS_ROLE].title, _("Role"), MAXLEN);
|
strncpy(headers_status[STATUS_ROLE].title, _("Role"), MAXLEN);
|
||||||
|
|
||||||
|
if (runtime_options.compact == true)
|
||||||
|
strncpy(headers_status[STATUS_PRIORITY].title, _("Prio."), MAXLEN);
|
||||||
|
else
|
||||||
|
strncpy(headers_status[STATUS_PRIORITY].title, _("Priority"), MAXLEN);
|
||||||
|
|
||||||
strncpy(headers_status[STATUS_PG].title, _("Status"), MAXLEN);
|
strncpy(headers_status[STATUS_PG].title, _("Status"), MAXLEN);
|
||||||
strncpy(headers_status[STATUS_RUNNING].title, _("repmgrd"), MAXLEN);
|
strncpy(headers_status[STATUS_RUNNING].title, _("repmgrd"), MAXLEN);
|
||||||
strncpy(headers_status[STATUS_PID].title, _("PID"), MAXLEN);
|
strncpy(headers_status[STATUS_PID].title, _("PID"), MAXLEN);
|
||||||
@@ -105,6 +112,7 @@ do_daemon_status(void)
|
|||||||
for (cell = nodes.head; cell; cell = cell->next)
|
for (cell = nodes.head; cell; cell = cell->next)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
|
PQExpBufferData buf;
|
||||||
|
|
||||||
repmgrd_info[i] = pg_malloc0(sizeof(RepmgrdInfo));
|
repmgrd_info[i] = pg_malloc0(sizeof(RepmgrdInfo));
|
||||||
repmgrd_info[i]->node_id = cell->node_info->node_id;
|
repmgrd_info[i]->node_id = cell->node_info->node_id;
|
||||||
@@ -191,6 +199,12 @@ do_daemon_status(void)
|
|||||||
|
|
||||||
headers_status[STATUS_NAME].cur_length = strlen(cell->node_info->node_name);
|
headers_status[STATUS_NAME].cur_length = strlen(cell->node_info->node_name);
|
||||||
headers_status[STATUS_ROLE].cur_length = strlen(get_node_type_string(cell->node_info->type));
|
headers_status[STATUS_ROLE].cur_length = strlen(get_node_type_string(cell->node_info->type));
|
||||||
|
|
||||||
|
initPQExpBuffer(&buf);
|
||||||
|
appendPQExpBuffer(&buf, "%i", cell->node_info->priority);
|
||||||
|
headers_status[STATUS_PRIORITY].cur_length = strlen(buf.data);
|
||||||
|
termPQExpBuffer(&buf);
|
||||||
|
|
||||||
headers_status[STATUS_PID].cur_length = strlen(repmgrd_info[i]->pid_text);
|
headers_status[STATUS_PID].cur_length = strlen(repmgrd_info[i]->pid_text);
|
||||||
headers_status[STATUS_RUNNING].cur_length = strlen(repmgrd_info[i]->repmgrd_running);
|
headers_status[STATUS_RUNNING].cur_length = strlen(repmgrd_info[i]->repmgrd_running);
|
||||||
headers_status[STATUS_PG].cur_length = strlen(repmgrd_info[i]->pg_running_text);
|
headers_status[STATUS_PG].cur_length = strlen(repmgrd_info[i]->pg_running_text);
|
||||||
@@ -218,20 +232,22 @@ do_daemon_status(void)
|
|||||||
{
|
{
|
||||||
if (runtime_options.output_mode == OM_CSV)
|
if (runtime_options.output_mode == OM_CSV)
|
||||||
{
|
{
|
||||||
printf("%i,%s,%s,%i,%i,%i,%i\n",
|
printf("%i,%s,%s,%i,%i,%i,%i,%i\n",
|
||||||
cell->node_info->node_id,
|
cell->node_info->node_id,
|
||||||
cell->node_info->node_name,
|
cell->node_info->node_name,
|
||||||
get_node_type_string(cell->node_info->type),
|
get_node_type_string(cell->node_info->type),
|
||||||
repmgrd_info[i]->pg_running ? 1 : 0,
|
repmgrd_info[i]->pg_running ? 1 : 0,
|
||||||
repmgrd_info[i]->running ? 1 : 0,
|
repmgrd_info[i]->running ? 1 : 0,
|
||||||
repmgrd_info[i]->pid,
|
repmgrd_info[i]->pid,
|
||||||
repmgrd_info[i]->paused ? 1 : 0);
|
repmgrd_info[i]->paused ? 1 : 0,
|
||||||
|
cell->node_info->priority);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf(" %-*i ", headers_status[STATUS_ID].max_length, cell->node_info->node_id);
|
printf(" %-*i ", headers_status[STATUS_ID].max_length, cell->node_info->node_id);
|
||||||
printf("| %-*s ", headers_status[STATUS_NAME].max_length, cell->node_info->node_name);
|
printf("| %-*s ", headers_status[STATUS_NAME].max_length, cell->node_info->node_name);
|
||||||
printf("| %-*s ", headers_status[STATUS_ROLE].max_length, get_node_type_string(cell->node_info->type));
|
printf("| %-*s ", headers_status[STATUS_ROLE].max_length, get_node_type_string(cell->node_info->type));
|
||||||
|
printf("| %-*i ", headers_status[STATUS_PRIORITY].max_length, cell->node_info->priority);
|
||||||
|
|
||||||
printf("| %-*s ", headers_status[STATUS_PG].max_length, repmgrd_info[i]->pg_running_text);
|
printf("| %-*s ", headers_status[STATUS_PG].max_length, repmgrd_info[i]->pg_running_text);
|
||||||
printf("| %-*s ", headers_status[STATUS_RUNNING].max_length, repmgrd_info[i]->repmgrd_running);
|
printf("| %-*s ", headers_status[STATUS_RUNNING].max_length, repmgrd_info[i]->repmgrd_running);
|
||||||
@@ -245,11 +261,11 @@ do_daemon_status(void)
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
free(repmgrd_info[i]);
|
pfree(repmgrd_info[i]);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(repmgrd_info);
|
pfree(repmgrd_info);
|
||||||
|
|
||||||
/* emit any warnings */
|
/* emit any warnings */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user