mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
33
HISTORY
33
HISTORY
@@ -1,34 +1,35 @@
|
|||||||
4.1.0 2018-??-??
|
4.1.0 2018-??-??
|
||||||
repmgr: change default log_level to INFO, add documentation; GitHub #470 (Ian)
|
repmgr: change default log_level to INFO, add documentation; GitHub #470 (Ian)
|
||||||
repmgr: add "--missing-slots" check to "repmgr node check" (Ian)
|
repmgr: add "--missing-slots" check to "repmgr node check" (Ian)
|
||||||
repmgr: improve command line error handling; GitHub #464 (Ian)
|
repmgr: improve command line error handling; GitHub #464 (Ian)
|
||||||
repmgr: fix "standby register --wait-sync" when no timeout provided (Ian)
|
repmgr: fix "standby register --wait-sync" when no timeout provided (Ian)
|
||||||
repmgr: "cluster show" returns non-zero value if an issue encountered;
|
repmgr: "cluster show" returns non-zero value if an issue encountered;
|
||||||
GitHub #456 (Ian)
|
GitHub #456 (Ian)
|
||||||
repmgr: "node check" and "node status" returns non-zero value if an issue
|
repmgr: "node check" and "node status" returns non-zero value if an issue
|
||||||
encountered (Ian)
|
encountered (Ian)
|
||||||
|
repmgr: add CSV output mode to "cluster event"; GitHub #471 (Ian)
|
||||||
repmgr: "node status" returns non-zero value if an issue encountered (Ian)
|
repmgr: "node status" returns non-zero value if an issue encountered (Ian)
|
||||||
repmgrd: create a PID file by default; GitHub #457 (Ian)
|
repmgrd: create a PID file by default; GitHub #457 (Ian)
|
||||||
repmgrd: daemonize process by default; GitHub #458 (Ian)
|
repmgrd: daemonize process by default; GitHub #458 (Ian)
|
||||||
|
|
||||||
4.0.6 2018-06-14
|
4.0.6 2018-06-14
|
||||||
repmgr: (witness register) prevent registration of a witness server with the
|
repmgr: (witness register) prevent registration of a witness server with the
|
||||||
same name as an existing node (Ian)
|
same name as an existing node (Ian)
|
||||||
repmgr: (standby follow) check node has actually connected to new primary
|
repmgr: (standby follow) check node has actually connected to new primary
|
||||||
before reporting success; GitHub #444 (Ian)
|
before reporting success; GitHub #444 (Ian)
|
||||||
repmgr: (standby clone) improve handling of external configuration file copying,
|
repmgr: (standby clone) improve handling of external configuration file copying,
|
||||||
including consideration in --dry-run check; GitHub #443 (Ian)
|
including consideration in --dry-run check; GitHub #443 (Ian)
|
||||||
repmgr: (standby clone) don't require presence of "user" parameter in
|
repmgr: (standby clone) don't require presence of "user" parameter in
|
||||||
conninfo string; GitHub #437 (Ian)
|
conninfo string; GitHub #437 (Ian)
|
||||||
repmgr: (standby clone) improve documentation of --recovery-conf-only
|
repmgr: (standby clone) improve documentation of --recovery-conf-only
|
||||||
mode; GitHub #438 (Ian)
|
mode; GitHub #438 (Ian)
|
||||||
repmgr: (node rejoin) fix bug when parsing --config-files parameter;
|
repmgr: (node rejoin) fix bug when parsing --config-files parameter;
|
||||||
GitHub #442 (Ian)
|
GitHub #442 (Ian)
|
||||||
repmgr: when using --dry-run, force log level to INFO to ensure output
|
repmgr: when using --dry-run, force log level to INFO to ensure output
|
||||||
will always be displayed; GitHub #441 (Ian)
|
will always be displayed; GitHub #441 (Ian)
|
||||||
repmgr: (cluster matrix/crosscheck) return non-zero exit code if node
|
repmgr: (cluster matrix/crosscheck) return non-zero exit code if node
|
||||||
connection issues detected; GitHub #447 (Ian)
|
connection issues detected; GitHub #447 (Ian)
|
||||||
repmgrd: ensure local node is counted as quorum member; GitHub #439 (Ian)
|
repmgrd: ensure local node is counted as quorum member; GitHub #439 (Ian)
|
||||||
|
|
||||||
4.0.5 2018-05-02
|
4.0.5 2018-05-02
|
||||||
repmgr: poll demoted primary after restart as a standby during a
|
repmgr: poll demoted primary after restart as a standby during a
|
||||||
|
|||||||
@@ -68,14 +68,21 @@
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<command><link linkend="repmgr-cluster-show">repmgr cluster-show</link></command>,
|
<command><link linkend="repmgr-cluster-show">repmgr cluster show</link></command>,
|
||||||
<command><link linkend="repmgr-node-check">repmgr node check</link></command> and
|
<command><link linkend="repmgr-node-check">repmgr node check</link></command> and
|
||||||
<command><link linkend="repmgr-node-status">repmgr node status</link></command>
|
<command><link linkend="repmgr-node-status">repmgr node status</link></command>
|
||||||
return non-zero exit code if node status issues detected. (GitHub #456).
|
return non-zero exit code if node status issues detected. (GitHub #456).
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Add <option>--csv</option> output option for
|
||||||
|
<command><link linkend="repmgr-cluster-event">repmgr cluster event</link></command>.
|
||||||
|
(GitHub #471).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|||||||
@@ -49,6 +49,22 @@
|
|||||||
</para>
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
<title>Output format</title>
|
||||||
|
<para>
|
||||||
|
<itemizedlist spacing="compact" mark="bullet">
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<simpara>
|
||||||
|
<literal>--csv</literal>: generate output in CSV format. Note that the <literal>Details</literal>
|
||||||
|
column will currently not be emitted in CSV format.
|
||||||
|
</simpara>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
<title>Example</title>
|
<title>Example</title>
|
||||||
<para>
|
<para>
|
||||||
|
|||||||
@@ -463,6 +463,7 @@ do_cluster_show(void)
|
|||||||
* --all
|
* --all
|
||||||
* --node-[id|name]
|
* --node-[id|name]
|
||||||
* --event
|
* --event
|
||||||
|
* --csv
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -507,8 +508,12 @@ do_cluster_event(void)
|
|||||||
strncpy(headers_event[EV_TIMESTAMP].title, _("Timestamp"), MAXLEN);
|
strncpy(headers_event[EV_TIMESTAMP].title, _("Timestamp"), MAXLEN);
|
||||||
strncpy(headers_event[EV_DETAILS].title, _("Details"), MAXLEN);
|
strncpy(headers_event[EV_DETAILS].title, _("Details"), MAXLEN);
|
||||||
|
|
||||||
/* if --terse provided, simply omit the "Details" column */
|
/*
|
||||||
if (runtime_options.terse == true)
|
* If --terse or --csv provided, simply omit the "Details" column.
|
||||||
|
* In --csv mode we'd need to quote/escape the contents "Details" column,
|
||||||
|
* which is doable but which will remain a TODO for now.
|
||||||
|
*/
|
||||||
|
if (runtime_options.terse == true || runtime_options.output_mode == OM_CSV)
|
||||||
column_count --;
|
column_count --;
|
||||||
|
|
||||||
for (i = 0; i < column_count; i++)
|
for (i = 0; i < column_count; i++)
|
||||||
@@ -531,47 +536,64 @@ do_cluster_event(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < column_count; i++)
|
if (runtime_options.output_mode == OM_TEXT)
|
||||||
{
|
{
|
||||||
if (i == 0)
|
for (i = 0; i < column_count; i++)
|
||||||
printf(" ");
|
{
|
||||||
else
|
if (i == 0)
|
||||||
printf(" | ");
|
printf(" ");
|
||||||
|
else
|
||||||
|
printf(" | ");
|
||||||
|
|
||||||
printf("%-*s",
|
printf("%-*s",
|
||||||
headers_event[i].max_length,
|
headers_event[i].max_length,
|
||||||
headers_event[i].title);
|
headers_event[i].title);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
printf("-");
|
||||||
|
for (i = 0; i < column_count; i++)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for (j = 0; j < headers_event[i].max_length; j++)
|
||||||
|
printf("-");
|
||||||
|
|
||||||
|
if (i < (column_count - 1))
|
||||||
|
printf("-+-");
|
||||||
|
else
|
||||||
|
printf("-");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
}
|
}
|
||||||
printf("\n");
|
|
||||||
printf("-");
|
|
||||||
for (i = 0; i < column_count; i++)
|
|
||||||
{
|
|
||||||
int j;
|
|
||||||
|
|
||||||
for (j = 0; j < headers_event[i].max_length; j++)
|
|
||||||
printf("-");
|
|
||||||
|
|
||||||
if (i < (column_count - 1))
|
|
||||||
printf("-+-");
|
|
||||||
else
|
|
||||||
printf("-");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
for (i = 0; i < PQntuples(res); i++)
|
for (i = 0; i < PQntuples(res); i++)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
printf(" ");
|
if (runtime_options.output_mode == OM_CSV)
|
||||||
for (j = 0; j < column_count; j++)
|
|
||||||
{
|
{
|
||||||
printf("%-*s",
|
for (j = 0; j < column_count; j++)
|
||||||
headers_event[j].max_length,
|
{
|
||||||
PQgetvalue(res, i, j));
|
printf("%s", PQgetvalue(res, i, j));
|
||||||
|
if ((j + 1) < column_count)
|
||||||
|
{
|
||||||
|
printf(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf(" ");
|
||||||
|
for (j = 0; j < column_count; j++)
|
||||||
|
{
|
||||||
|
printf("%-*s",
|
||||||
|
headers_event[j].max_length,
|
||||||
|
PQgetvalue(res, i, j));
|
||||||
|
|
||||||
if (j < (column_count - 1))
|
if (j < (column_count - 1))
|
||||||
printf(" | ");
|
printf(" | ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@@ -581,7 +603,8 @@ do_cluster_event(void)
|
|||||||
|
|
||||||
PQfinish(conn);
|
PQfinish(conn);
|
||||||
|
|
||||||
puts("");
|
if (runtime_options.output_mode == OM_TEXT)
|
||||||
|
puts("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1414,6 +1437,7 @@ do_cluster_help(void)
|
|||||||
printf(_(" --event filter specific event\n"));
|
printf(_(" --event filter specific event\n"));
|
||||||
printf(_(" --node-id restrict entries to node with this ID\n"));
|
printf(_(" --node-id restrict entries to node with this ID\n"));
|
||||||
printf(_(" --node-name restrict entries to node with this name\n"));
|
printf(_(" --node-name restrict entries to node with this name\n"));
|
||||||
|
printf(_(" --csv emit output as CSV\n"));
|
||||||
puts("");
|
puts("");
|
||||||
|
|
||||||
printf(_("CLUSTER CLEANUP\n"));
|
printf(_("CLUSTER CLEANUP\n"));
|
||||||
|
|||||||
Reference in New Issue
Block a user