Markus Wanner wrote:
You will definitely find different definitions and requirements of what
synchronous replication means there.
To quote from the Wikipedia entry on "Database Replication" that Simon
pointed to during the earlier discussion,
http://en.wikipedia.org/wiki/Database_replication
"Synchronous replication - guarantees "zero data loss" by the means of
atomic write operation, i.e. write either completes on both sides or not
at all. Write is not considered complete until acknowledgement by both
local and remote storage."
That last part is the critical one: "acknowledgement by both local and
remote storage" is required before you can label something truly
synchronous replication. In implementation terms, that means you must
have both local and slave fsync calls finish to be considered truly
synchronous. That part is not ambiguous at all.
There's a definition of the weaker form in there too, which is where the
ambiguity is at:
"Semi-synchronous replication - this usually means that a write is
considered complete as soon as local storage acknowledges it and a
remote server acknowledges that it has received the write either into
memory or to a dedicated log file."
I don't consider that really synchronous replication anymore, but as you
say it's been strengthened by marketing enough to be a valid industry
term at this point. Since it's already gained traction we might use it,
as long as it's defined properly and its trade-offs vs. a true
synchronous implementation are documented.
--
Greg Smith 2ndQuadrant Baltimore, MD
PostgreSQL Training, Services and Support
g...@2ndquadrant.com www.2ndQuadrant.com
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers