Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
postgres-lambda-diff
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jakob Huber
postgres-lambda-diff
Commits
fcb99609
Commit
fcb99609
authored
14 years ago
by
Robert Haas
Browse files
Options
Downloads
Patches
Plain Diff
Replication README updates.
Fujii Masao
parent
74a09d92
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/backend/replication/README
+18
-13
18 additions, 13 deletions
src/backend/replication/README
with
18 additions
and
13 deletions
src/backend/replication/README
+
18
−
13
View file @
fcb99609
...
@@ -4,11 +4,11 @@ Walreceiver - libpqwalreceiver API
...
@@ -4,11 +4,11 @@ Walreceiver - libpqwalreceiver API
----------------------------------
----------------------------------
The transport-specific part of walreceiver, responsible for connecting to
The transport-specific part of walreceiver, responsible for connecting to
the primary server
and
receiving WAL files
, is loaded dynamically to avoi
d
the primary server
,
receiving WAL files
and sending messages, is loade
d
having to link the main server binary with libpq.
The dynamically loaded
dynamically to avoid
having to link the main server binary with libpq.
module is in libpqwalreceiver subdirectory.
The dynamically loaded
module is in libpqwalreceiver subdirectory.
The dynamically loaded module implements
three
functions:
The dynamically loaded module implements
four
functions:
bool walrcv_connect(char *conninfo, XLogRecPtr startpoint)
bool walrcv_connect(char *conninfo, XLogRecPtr startpoint)
...
@@ -16,7 +16,6 @@ bool walrcv_connect(char *conninfo, XLogRecPtr startpoint)
...
@@ -16,7 +16,6 @@ bool walrcv_connect(char *conninfo, XLogRecPtr startpoint)
Establish connection to the primary, and starts streaming from 'startpoint'.
Establish connection to the primary, and starts streaming from 'startpoint'.
Returns true on success.
Returns true on success.
bool walrcv_receive(int timeout, unsigned char *type, char **buffer, int *len)
bool walrcv_receive(int timeout, unsigned char *type, char **buffer, int *len)
Retrieve any message available through the connection, blocking for
Retrieve any message available through the connection, blocking for
...
@@ -26,6 +25,10 @@ otherwise false. On success, a pointer to the message payload is stored in
...
@@ -26,6 +25,10 @@ otherwise false. On success, a pointer to the message payload is stored in
returned buffer is valid until the next call to walrcv_* functions, the
returned buffer is valid until the next call to walrcv_* functions, the
caller should not attempt freeing it.
caller should not attempt freeing it.
void walrcv_send(const char *buffer, int nbytes)
Send a message to XLOG stream.
void walrcv_disconnect(void);
void walrcv_disconnect(void);
Disconnect.
Disconnect.
...
@@ -45,11 +48,15 @@ to fetch more WAL (if streaming replication is configured).
...
@@ -45,11 +48,15 @@ to fetch more WAL (if streaming replication is configured).
Walreceiver is a postmaster subprocess, so the startup process can't fork it
Walreceiver is a postmaster subprocess, so the startup process can't fork it
directly. Instead, it sends a signal to postmaster, asking postmaster to launch
directly. Instead, it sends a signal to postmaster, asking postmaster to launch
it. Before that, however, startup process fills in WalRcvData->conninfo,
it. Before that, however, startup process fills in WalRcvData->conninfo,
and initializes the starting point in WalRcvData->receive
dUpto
.
and initializes the starting point in WalRcvData->receive
Start
.
As walreceiver receives WAL from the master server, and writes and flushes
As walreceiver receives WAL from the master server, and writes and flushes
it to disk (in pg_xlog), it updates WalRcvData->receivedUpto. Startup process
it to disk (in pg_xlog), it updates WalRcvData->receivedUpto and signals
polls that to know how far it can proceed with WAL replay.
the startup process to know how far WAL replay can advance.
Walreceiver sends information about replication progress to the master server
whenever either it writes or flushes new WAL, or the specified interval elapses.
This is used for reporting purpose.
Walsender IPC
Walsender IPC
-------------
-------------
...
@@ -80,11 +87,9 @@ phase. A walsenders will look like a regular backends until it's done with the
...
@@ -80,11 +87,9 @@ phase. A walsenders will look like a regular backends until it's done with the
initialization and has marked itself in PMSignal array, and at process
initialization and has marked itself in PMSignal array, and at process
termination, after unmarking the PMSignal slot.
termination, after unmarking the PMSignal slot.
Each walsender allocates an entry from the WalSndCtl array, and advertises
Each walsender allocates an entry from the WalSndCtl array, and tracks
there how far it has streamed WAL already. This is used at checkpoints, to
information about replication progress. User can monitor them via
avoid recycling WAL that hasn't been streamed to a slave yet. However,
statistics views.
that doesn't stop such WAL from being recycled when the connection is not
established.
Walsender - walreceiver protocol
Walsender - walreceiver protocol
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment