Almost forgot this:
SELECT pg_current_xlog_location(); ERROR: recovery is in progress HINT: WAL control functions cannot be executed during recovery. bms=> SELECT pg_current_xlog_location(); ERROR: recovery is in progress HINT: WAL control functions cannot be executed during recovery. On Thu, Dec 17, 2015 at 11:27 AM, Adrian Klaver <adrian.kla...@aklaver.com> wrote: > On 12/17/2015 07:56 AM, Will McCormick wrote: > >> Thanks a ton for the prompt response. >> >> I've read most of this but some it was not clear until we discussed. >> >> Updated with WLM: >> >> On 12/17/2015 07:17 AM, Will McCormick wrote: >> >> I inherited a 9.1 replication environment >> >> Few basic questions that I can't find clear answers / clarifications >> for >> if possible: >> >> 3 types of replication in 9.1 I've read about from the offical docs: >> >> 1) warm standby >> 2) hot standby >> 3) streaming replication >> >> I'm using streaming replication I believe, the only indication I have >> is that there is the primary_conninfo on the standby. Is this the >> only >> indication? >> >> >> WLM: I also see streaming replication in the logs. >> >> On standby: >> >> http://www.postgresql.org/docs/9.1/interactive/functions-admin.html >> " >> pg_last_xlog_receive_location() >> >> Get last transaction log location received and synced to disk by >> streaming replication. While streaming replication is in progress this >> will increase monotonically. If recovery has completed this will remain >> static at the value of the last WAL record received and synced to disk >> during recovery. If streaming replication is disabled, or if it has not >> yet started, the function returns NULL." >> >> WLM: When I do this on the standby I get an error: >> >> ERROR: recovery is in progress >> >> HINT: WAL control functions cannot be ... >> > > What is the full hint message? > The functions are supposed to be able to be run while the server is in > recovery. > > > >> >> >> Is it possible to get if using streaming replication under normal >> operations? >> >> /cp: cannot stat `/opt/postgres/9.1/archive/000000070000000F00000057': >> No such file or directory/ >> >> /cp: cannot stat `/opt/postgres/9.1/archive/000000070000000F00000057': >> No such file or directory/ >> >> /LOG: streaming replication successfully connected to primary/ >> >> /FATAL: could not receive data from WAL stream: FATAL: requested WAL >> segment 000000070000000F00000057 has already been removed/ >> >> >> Assuming above is from standby log, correct? WLM: yes >> >> The cp lines would seem to indicate a restore_command in the standby >> recovery.conf, is that the case?: >> >> http://www.postgresql.org/docs/9.1/static/archive-recovery-settings.html >> >> restore_command (string) WLM: Correct >> >> >> The FATAL indicates that the WAL file has already been recycled on the >> master. >> >> WLM: I had read this what confuses me a bit is: >> >> /cp: cannot stat `/opt/postgres/9.1/archive/000000070000000F00000057': >> No such file or directory/ >> >> Does Streaming replication automatically use Archived WAL files when >> WAL XLOG files don't contain a transaction? >> >> We did have wal_keep_segments set to 0. I changed this to 50 but >> want to better understand this. Especially the correlation between the >> Archived WALs and the XLOG WALs. My guess is the difference between >> Streaming replication and the others is very simply that Streaming >> replication can read the XLOG WALs as well? So if all the Archived WALs >> have been shipped and processed to the Standby then the XLOGs are >> processed but not shipped? This meaning at a transaction level "kindof"? >> > > Not really see the section below(#STREAMING-REPLICATION) I posted > previously. It is either or, if streaming is set up and the standby can > reach the master xlog directory then it will stream the WAL files from > there. If the standby cannot access the xlog directory and if you have WAL > archiving set up on the master and archive restore setup on the standby it > will switch to full WAL log shipping from the archived WAL directory, > assuming the files it needs are there. > > > >> See: >> >> >> http://www.postgresql.org/docs/9.1/interactive/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-MASTER >> >> "wal_keep_segments (integer) >> >> Specifies the minimum number of past log file segments kept in the >> pg_xlog directory, in case a standby server needs to fetch them for >> streaming replication. Each segment is normally 16 megabytes. If a >> standby server connected to the primary falls behind by more than >> wal_keep_segments segments, the primary might remove a WAL segment still >> needed by the standby, in which case the replication connection will be >> terminated. (However, the standby server can recover by fetching the >> segment from archive, if WAL archiving is in use.) >> >> This sets only the minimum number of segments retained in pg_xlog; >> the system might need to retain more segments for WAL archival or to >> recover from a checkpoint. If wal_keep_segments is zero (the default), >> the system doesn't keep any extra segments for standby purposes, so the >> number of old WAL segments available to standby servers is a function of >> the location of the previous checkpoint and status of WAL archiving. >> This parameter has no effect on restartpoints. This parameter can only >> be set in the postgresql.conf file or on the server command line. >> " >> >> >> http://www.postgresql.org/docs/9.1/interactive/warm-standby.html#STREAMING-REPLICATION >> >> "If you use streaming replication without file-based continuous >> archiving, you have to set wal_keep_segments in the master to a value >> high enough to ensure that old WAL segments are not recycled too early, >> while the standby might still need them to catch up. If the standby >> falls behind too much, it needs to be reinitialized from a new base >> backup. If you set up a WAL archive that's accessible from the standby, >> wal_keep_segments is not required as the standby can always use the >> archive to catch up." >> >> >> / >> / >> >> My understanding is that warm standby and hot standby do log shipping >> and there is a greater window for transactions not to be send to the >> standby because WAL XLOG must be filled. >> >> >> Hot versus warm standby refer to whether it is possible to run read only >> queries on the standby in the first case or not in the second case. >> >> >> >> Whereas Streaming replication basically sends at the transaction >> level? >> >> >> The difference you are looking for is log shipping versus streaming, >> where log shipping moves complete WAL files and streaming streams the >> same files. >> >> WLM: I still am having trouble with distinction. By the same files do >> you mean XLOG WALs? >> > > Yes. The WALs created in the xlog directory are the basis for replication. > Leaving out logical replication, not available in 9.1, the only way to do > replication using the Postgres core tools is to move those files from the > master to the standby. You can either ship them whole which is log shipping > or you can stream them, which is streaming. It also possible, which is what > you are seeing, to do the belt and suspenders approach. That is to use > streaming for the responsiveness, but have a parallel process that ships > the whole logs to a archive directory where they can be accessed also. > Having an archive directory also allows for PITR(Point In Time Recovery), > but that is another topic: > > http://www.postgresql.org/docs/9.1/static/continuous-archiving.html > > >> See here for more detail: WLM: Reading now :) >> >> http://www.postgresql.org/docs/9.1/interactive/high-availability.html >> >> On Thu, Dec 17, 2015 at 10:37 AM, Adrian Klaver >> <adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>> wrote: >> >> On 12/17/2015 07:17 AM, Will McCormick wrote: >> >> I inherited a 9.1 replication environment >> >> Few basic questions that I can't find clear answers / >> clarifications for >> if possible: >> >> 3 types of replication in 9.1 I've read about from the offical >> docs: >> >> 1) warm standby >> 2) hot standby >> 3) streaming replication >> >> I'm using streaming replication I believe, the only indication >> I have >> is that there is the primary_conninfo on the standby. Is this >> the only >> indication? >> >> >> On standby: >> >> http://www.postgresql.org/docs/9.1/interactive/functions-admin.html >> " >> pg_last_xlog_receive_location() >> >> Get last transaction log location received and synced to disk by >> streaming replication. While streaming replication is in progress >> this will increase monotonically. If recovery has completed this >> will remain static at the value of the last WAL record received and >> synced to disk during recovery. If streaming replication is >> disabled, or if it has not yet started, the function returns NULL." >> >> >> Is it possible to get if using streaming replication under normal >> operations? >> >> /cp: cannot stat >> `/opt/postgres/9.1/archive/000000070000000F00000057': >> No such file or directory/ >> >> /cp: cannot stat >> `/opt/postgres/9.1/archive/000000070000000F00000057': >> No such file or directory/ >> >> /LOG: streaming replication successfully connected to primary/ >> >> /FATAL: could not receive data from WAL stream: FATAL: >> requested WAL >> segment 000000070000000F00000057 has already been removed/ >> >> >> Assuming above is from standby log, correct? >> >> The cp lines would seem to indicate a restore_command in the standby >> recovery.conf, is that the case?: >> >> >> http://www.postgresql.org/docs/9.1/static/archive-recovery-settings.html >> >> restore_command (string) >> >> >> The FATAL indicates that the WAL file has already been recycled on >> the master. >> >> See: >> >> >> http://www.postgresql.org/docs/9.1/interactive/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-MASTER >> >> "wal_keep_segments (integer) >> >> Specifies the minimum number of past log file segments kept in >> the pg_xlog directory, in case a standby server needs to fetch them >> for streaming replication. Each segment is normally 16 megabytes. If >> a standby server connected to the primary falls behind by more than >> wal_keep_segments segments, the primary might remove a WAL segment >> still needed by the standby, in which case the replication >> connection will be terminated. (However, the standby server can >> recover by fetching the segment from archive, if WAL archiving is in >> use.) >> >> This sets only the minimum number of segments retained in >> pg_xlog; the system might need to retain more segments for WAL >> archival or to recover from a checkpoint. If wal_keep_segments is >> zero (the default), the system doesn't keep any extra segments for >> standby purposes, so the number of old WAL segments available to >> standby servers is a function of the location of the previous >> checkpoint and status of WAL archiving. This parameter has no effect >> on restartpoints. This parameter can only be set in the >> postgresql.conf file or on the server command line. >> " >> >> >> http://www.postgresql.org/docs/9.1/interactive/warm-standby.html#STREAMING-REPLICATION >> >> "If you use streaming replication without file-based continuous >> archiving, you have to set wal_keep_segments in the master to a >> value high enough to ensure that old WAL segments are not recycled >> too early, while the standby might still need them to catch up. If >> the standby falls behind too much, it needs to be reinitialized from >> a new base backup. If you set up a WAL archive that's accessible >> from the standby, wal_keep_segments is not required as the standby >> can always use the archive to catch up." >> >> >> / >> / >> >> My understanding is that warm standby and hot standby do log >> shipping >> and there is a greater window for transactions not to be send to >> the >> standby because WAL XLOG must be filled. >> >> >> Hot versus warm standby refer to whether it is possible to run read >> only queries on the standby in the first case or not in the second >> case. >> >> >> >> Whereas Streaming replication basically sends at the transaction >> level? >> >> >> The difference you are looking for is log shipping versus streaming, >> where log shipping moves complete WAL files and streaming streams >> the same files. >> >> See here for more detail: >> >> http://www.postgresql.org/docs/9.1/interactive/high-availability.html >> >> >> >> >> I'm sure this is somewhat misinformed! >> >> >> Thanks, >> >> >> Will >> >> >> >> -- >> Adrian Klaver >> adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com> >> >> >> > > -- > Adrian Klaver > adrian.kla...@aklaver.com >