Fix the pg_basebackup call when adding standby nodes
authorTomas Vondra <tomas@2ndquadrant.com>
Sat, 30 Sep 2017 16:58:53 +0000 (18:58 +0200)
committerTomas Vondra <tomas@2ndquadrant.com>
Sat, 30 Sep 2017 16:58:53 +0000 (18:58 +0200)
When adding standby nodes using pgxc_ctl, it's calling pg_basebackup
internally. But the "-x" option was removed in PostgreSQL 10, so the
call is failing.

A straightforward fix would be to use "-X fetch" which does exactly
what "-x" used to do. But I've decided to use "-X stream" instead,
as that does not rely on wal_keep_segments.

Reported by Tank.zhang"<6220104@qq.com>, along with "-X fetch" fix.

contrib/pgxc_ctl/coord_cmd.c
contrib/pgxc_ctl/datanode_cmd.c

index b1cd50fd4e96d3be2c348f91ced8805e26009f96..40612dbf5d86d8459cec117afa9c1c8f50928953 100644 (file)
@@ -304,7 +304,7 @@ cmd_t *prepare_initCoordinatorSlave(char *nodeName)
         */
        appendCmdEl(cmdBuildDir, (cmdBaseBkup = initCmd(aval(VAR_coordSlaveServers)[idx])));
        snprintf(newCommand(cmdBaseBkup), MAXLINE,
-                        "pg_basebackup -p %s -h %s -D %s -x",
+                        "pg_basebackup -p %s -h %s -D %s -X stream",
                         aval(VAR_coordPorts)[idx], aval(VAR_coordMasterServers)[idx], aval(VAR_coordSlaveDirs)[idx]);
 
        /* Configure recovery.conf file at the slave */
@@ -1414,7 +1414,7 @@ int add_coordinatorSlave(char *name, char *host, int port, int pooler_port, char
        doImmediate(aval(VAR_coordMasterServers)[idx], NULL, 
                                "pg_ctl start -w -Z coordinator -D %s", aval(VAR_coordMasterDirs)[idx]);
        /* pg_basebackup */
-       doImmediate(host, NULL, "pg_basebackup -p %s -h %s -D %s -x",
+       doImmediate(host, NULL, "pg_basebackup -p %s -h %s -D %s -X stream",
                                aval(VAR_coordPorts)[idx], aval(VAR_coordMasterServers)[idx], dir);
        /* Update the slave configuration with hot standby and port */
        if ((f = pgxc_popen_w(host, "cat >> %s/postgresql.conf", dir)) == NULL)
index 5d39e709a52b42baaf150f188d977516fdf9caf7..ee048d9711cd2e60f62a6ac05ef28dab3e5276eb 100644 (file)
@@ -327,7 +327,7 @@ cmd_t *prepare_initDatanodeSlave(char *nodeName)
        /* Obtain base backup of the master */
        appendCmdEl(cmdBuildDir, (cmdBaseBkup = initCmd(aval(VAR_datanodeSlaveServers)[idx])));
        snprintf(newCommand(cmdBaseBkup), MAXLINE, 
-                        "pg_basebackup -p %s -h %s -D %s -x",
+                        "pg_basebackup -p %s -h %s -D %s -X stream",
                         aval(VAR_datanodePorts)[idx], aval(VAR_datanodeMasterServers)[idx],
                         aval(VAR_datanodeSlaveDirs)[idx]);
 
@@ -1484,7 +1484,7 @@ int add_datanodeSlave(char *name, char *host, int port, int pooler, char *dir,
        doImmediate(aval(VAR_datanodeMasterServers)[idx], NULL, 
                                "pg_ctl start -w -Z datanode -D %s", aval(VAR_datanodeMasterDirs)[idx]);
        /* pg_basebackup */
-       doImmediate(host, NULL, "pg_basebackup -p %s -h %s -D %s -x %s %s",
+       doImmediate(host, NULL, "pg_basebackup -p %s -h %s -D %s -X stream %s %s",
                                aval(VAR_datanodePorts)[idx],
                                aval(VAR_datanodeMasterServers)[idx], dir,
                                wal ? "--xlogdir" : "",