Thread: pgsql: Introduce Streaming Replication.

pgsql: Introduce Streaming Replication.

From
heikki@postgresql.org (Heikki Linnakangas)
Date:
Log Message:
-----------
Introduce Streaming Replication.

This includes two new kinds of postmaster processes, walsenders and
walreceiver. Walreceiver is responsible for connecting to the primary server
and streaming WAL to disk, while walsender runs in the primary server and
streams WAL from disk to the client.

Documentation still needs work, but the basics are there. We will probably
pull the replication section to a new chapter later on, as well as the
sections describing file-based replication. But let's do that as a separate
patch, so that it's easier to see what has been added/changed. This patch
also adds a new section to the chapter about FE/BE protocol, documenting the
protocol used by walsender/walreceivxer.

Bump catalog version because of two new functions,
pg_last_xlog_receive_location() and pg_last_xlog_replay_location(), for
monitoring the progress of replication.

Fujii Masao, with additional hacking by me

Modified Files:
--------------
    pgsql/doc/src/sgml:
        backup.sgml (r2.135 -> r2.136)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/backup.sgml?r1=2.135&r2=2.136)
        client-auth.sgml (r1.125 -> r1.126)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/client-auth.sgml?r1=1.125&r2=1.126)
        config.sgml (r1.243 -> r1.244)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/config.sgml?r1=1.243&r2=1.244)
        func.sgml (r1.495 -> r1.496)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/func.sgml?r1=1.495&r2=1.496)
        high-availability.sgml (r1.35 -> r1.36)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/high-availability.sgml?r1=1.35&r2=1.36)
        perform.sgml (r1.72 -> r1.73)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/perform.sgml?r1=1.72&r2=1.73)
        protocol.sgml (r1.76 -> r1.77)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/protocol.sgml?r1=1.76&r2=1.77)
    pgsql/src:
        Makefile (r1.47 -> r1.48)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/Makefile?r1=1.47&r2=1.48)
    pgsql/src/backend:
        Makefile (r1.139 -> r1.140)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/Makefile?r1=1.139&r2=1.140)
    pgsql/src/backend/access/nbtree:
        nbtsort.c (r1.121 -> r1.122)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsort.c?r1=1.121&r2=1.122)
    pgsql/src/backend/access/transam:
        recovery.conf.sample (r1.5 -> r1.6)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/recovery.conf.sample?r1=1.5&r2=1.6)
        xlog.c (r1.357 -> r1.358)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlog.c?r1=1.357&r2=1.358)
    pgsql/src/backend/bootstrap:
        bootstrap.c (r1.255 -> r1.256)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootstrap.c?r1=1.255&r2=1.256)
    pgsql/src/backend/commands:
        cluster.c (r1.192 -> r1.193)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/cluster.c?r1=1.192&r2=1.193)
        copy.c (r1.320 -> r1.321)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/copy.c?r1=1.320&r2=1.321)
        tablecmds.c (r1.314 -> r1.315)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablecmds.c?r1=1.314&r2=1.315)
    pgsql/src/backend/executor:
        execMain.c (r1.341 -> r1.342)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c?r1=1.341&r2=1.342)
    pgsql/src/backend/libpq:
        be-secure.c (r1.95 -> r1.96)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/be-secure.c?r1=1.95&r2=1.96)
        hba.c (r1.194 -> r1.195)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/hba.c?r1=1.194&r2=1.195)
        pg_hba.conf.sample (r1.68 -> r1.69)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/pg_hba.conf.sample?r1=1.68&r2=1.69)
        pqcomm.c (r1.201 -> r1.202)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/pqcomm.c?r1=1.201&r2=1.202)
    pgsql/src/backend/postmaster:
        bgwriter.c (r1.65 -> r1.66)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/bgwriter.c?r1=1.65&r2=1.66)
        postmaster.c (r1.600 -> r1.601)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/postmaster.c?r1=1.600&r2=1.601)
    pgsql/src/backend/storage/ipc:
        ipci.c (r1.102 -> r1.103)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/ipci.c?r1=1.102&r2=1.103)
        pmsignal.c (r1.29 -> r1.30)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/pmsignal.c?r1=1.29&r2=1.30)
    pgsql/src/backend/storage/lmgr:
        proc.c (r1.211 -> r1.212)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/proc.c?r1=1.211&r2=1.212)
    pgsql/src/backend/tcop:
        postgres.c (r1.581 -> r1.582)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/postgres.c?r1=1.581&r2=1.582)
    pgsql/src/backend/utils/init:
        postinit.c (r1.200 -> r1.201)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/postinit.c?r1=1.200&r2=1.201)
    pgsql/src/backend/utils/misc:
        guc.c (r1.532 -> r1.533)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/guc.c?r1=1.532&r2=1.533)
        postgresql.conf.sample (r1.272 -> r1.273)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/postgresql.conf.sample?r1=1.272&r2=1.273)
    pgsql/src/include:
        Makefile (r1.30 -> r1.31)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/Makefile?r1=1.30&r2=1.31)
    pgsql/src/include/access:
        xlog.h (r1.95 -> r1.96)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlog.h?r1=1.95&r2=1.96)
        xlog_internal.h (r1.27 -> r1.28)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlog_internal.h?r1=1.27&r2=1.28)
        xlogdefs.h (r1.24 -> r1.25)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlogdefs.h?r1=1.24&r2=1.25)
    pgsql/src/include/bootstrap:
        bootstrap.h (r1.54 -> r1.55)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/bootstrap/bootstrap.h?r1=1.54&r2=1.55)
    pgsql/src/include/catalog:
        catversion.h (r1.572 -> r1.573)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h?r1=1.572&r2=1.573)
        pg_proc.h (r1.561 -> r1.562)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_proc.h?r1=1.561&r2=1.562)
    pgsql/src/include/libpq:
        libpq-be.h (r1.73 -> r1.74)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/libpq/libpq-be.h?r1=1.73&r2=1.74)
        libpq.h (r1.73 -> r1.74)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/libpq/libpq.h?r1=1.73&r2=1.74)
    pgsql/src/include/storage:
        pmsignal.h (r1.27 -> r1.28)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/pmsignal.h?r1=1.27&r2=1.28)
        proc.h (r1.116 -> r1.117)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/proc.h?r1=1.116&r2=1.117)
    pgsql/src/include/utils:
        guc_tables.h (r1.47 -> r1.48)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/guc_tables.h?r1=1.47&r2=1.48)
    pgsql/src/interfaces/libpq:
        fe-connect.c (r1.382 -> r1.383)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/libpq/fe-connect.c?r1=1.382&r2=1.383)
        fe-protocol3.c (r1.41 -> r1.42)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/libpq/fe-protocol3.c?r1=1.41&r2=1.42)
        libpq-int.h (r1.147 -> r1.148)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/libpq/libpq-int.h?r1=1.147&r2=1.148)

Added Files:
-----------
    pgsql/src/backend/replication:
        Makefile (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/replication/Makefile?rev=1.1&content-type=text/x-cvsweb-markup)
        README (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/replication/README?rev=1.1&content-type=text/x-cvsweb-markup)
        walreceiverfuncs.c (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/replication/walreceiverfuncs.c?rev=1.1&content-type=text/x-cvsweb-markup)
        walsender.c (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/replication/walsender.c?rev=1.1&content-type=text/x-cvsweb-markup)
    pgsql/src/backend/replication/walreceiver:
        Makefile (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/replication/walreceiver/Makefile?rev=1.1&content-type=text/x-cvsweb-markup)
        walreceiver.c (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/replication/walreceiver/walreceiver.c?rev=1.1&content-type=text/x-cvsweb-markup)
    pgsql/src/include/replication:
        walreceiver.h (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/replication/walreceiver.h?rev=1.1&content-type=text/x-cvsweb-markup)
        walsender.h (r1.1)

(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/replication/walsender.h?rev=1.1&content-type=text/x-cvsweb-markup)