aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_basebackup
Commit message (Collapse)AuthorAge
* Add -d option to pg_basebackup and pg_receivexlog, for connection string.Heikki Linnakangas2013-02-25
| | | | | | | | | | Without this, there's no way to pass arbitrary libpq connection parameters to these applications. It's a bit strange that the option is called -d/--dbname, when in fact you can *not* pass a database name in it, but it's consistent with other client applications where a connection string is also passed using -d. Original patch by Amit Kapila, heavily modified by me.
* Warn about initdb using mount-pointsBruce Momjian2013-02-16
| | | | | Add code to detect and warn about trying to initdb or create pg_xlog on mount points.
* Create libpgcommon, and move pg_malloc et al to itAlvaro Herrera2013-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | libpgcommon is a new static library to allow sharing code among the various frontend programs and backend; this lets us eliminate duplicate implementations of common routines. We avoid libpgport, because that's intended as a place for porting issues; per discussion, it seems better to keep them separate. The first use case, and the only implemented by this patch, is pg_malloc and friends, which many frontend programs were already using. At the same time, we can use this to provide palloc emulation functions for the frontend; this way, some palloc-using files in the backend can also be used by the frontend cleanly. To do this, we change palloc() in the backend to be a function instead of a macro on top of MemoryContextAlloc(). This was previously believed to cause loss of performance, but this implementation has been tweaked by Tom and Andres so that on modern compilers it provides a slight improvement over the previous one. This lets us clean up some places that were already with localized hacks. Most of the pg_malloc/palloc changes in this patch were authored by Andres Freund. Zoltán Böszörményi also independently provided a form of that. libpgcommon infrastructure was authored by Álvaro.
* Make pg_receivexlog and pg_basebackup -X stream work across timeline switches.Heikki Linnakangas2013-01-17
| | | | | | | | | | | | | | | | | | | | | | This mirrors the changes done earlier to the server in standby mode. When receivelog reaches the end of a timeline, as reported by the server, it fetches the timeline history file of the next timeline, and restarts streaming from the new timeline by issuing a new START_STREAMING command. When pg_receivexlog crosses a timeline, it leaves the .partial suffix on the last segment on the old timeline. This helps you to tell apart a partial segment left in the directory because of a timeline switch, and a completed segment. If you just follow a single server, it won't make a difference, but it can be significant in more complicated scenarios where new WAL is still generated on the old timeline. This includes two small changes to the streaming replication protocol: First, when you reach the end of timeline while streaming, the server now sends the TLI of the next timeline in the server's history to the client. pg_receivexlog uses that as the next timeline, so that it doesn't need to parse the timeline history file like a standby server does. Second, when BASE_BACKUP command sends the begin and end WAL positions, it now also sends the timeline IDs corresponding the positions.
* Silence compiler warningsMagnus Hagander2013-01-17
|
* Make size-output fixed length in pg_basebackup verbose modeMagnus Hagander2013-01-17
| | | | | This way the line doesn't shift right as the amount of data processed increases.
* Truncate filenames in the leadning end in pg_basebackup verbose outputMagnus Hagander2013-01-17
| | | | | | | | When truncating at the end, like before, the output would often end up just showing the path instead of the filename. Also increase the length of the filename by 5, which still keeps us at less than 80 characters in most outputs.
* Give a proper error message if connecting to incompatible server.Heikki Linnakangas2013-01-15
| | | | | The WAL streaming message format changed in 9.3, so 9.3 pg_basebackup or pg_receivelog won't work against older servers.
* Don't attempt to write recovery.conf when -R is not specifiedMagnus Hagander2013-01-09
| | | | | | Fixes segmentation fault during regular use. Fujii Masao
* Add support for generating minimal recovery.conf when doing base backupsMagnus Hagander2013-01-05
| | | | | | | | | Adds commandline option -R to pg_basebackup that creates a recovery.conf which enables standby mode using the same parameters that pg_basebackup used to connect to the master, and writes it into the output directory (or injects it in the tar file when tar format is used). Zoltan Boszormenyi, modified by Magnus Hagander, reviewed by Amit Kapila & Fujii Masao
* Update copyrights for 2013Bruce Momjian2013-01-01
| | | | | Fully update git head, and update back branches in ./COPYRIGHT and legal.sgml files.
* Remove obsolete XLogRecPtr macrosAlvaro Herrera2012-12-28
| | | | | | | | | | | | | | | | | This gets rid of XLByteLT, XLByteLE, XLByteEQ and XLByteAdvance. These were useful for brevity when XLogRecPtrs were split in xlogid/xrecoff; but now that they are simple uint64's, they are just clutter. The only downside to making this change would be ease of backporting patches, but that has been negated by other substantive changes to the involved code anyway. The clarity of simpler expressions makes the change worthwhile. Most of the changes are mechanical, but in a couple of places, the patch author chose to invert the operator sense, making the code flow more logical (and more in line with preceding comments). Author: Andres Freund Eyeballed by Dimitri Fontaine and Alvaro Herrera
* pg_basebackup: Small message punctuation improvementsPeter Eisentraut2012-12-19
|
* Make xlog_internal.h includable in frontend context.Heikki Linnakangas2012-12-13
| | | | | | | This makes unnecessary the ugly hack used to #include postgres.h in pg_basebackup. Based on Alvaro Herrera's patch
* Move long_options structures to the top of main() functions, forBruce Momjian2012-11-30
| | | | | | consistency. Per suggestion from Tom.
* Teach pg_basebackup and pg_receivexlog to reply to server keepalives.Heikki Linnakangas2012-11-08
| | | | | | | | Without this, the connection will be killed after timeout if wal_sender_timeout is set in the server. Original patch by Amit Kapila, modified by me to fit recent changes in the code.
* Fix missing inclusions.Tom Lane2012-11-07
| | | | | Some platforms require including <netinet/in.h> and/or <arpa/inet.h> to use htonl() and ntohl(). Per build failure locally.
* Make the streaming replication protocol messages architecture-independent.Heikki Linnakangas2012-11-07
| | | | | | | | | | | We used to send structs wrapped in CopyData messages, which works as long as the client and server agree on things like endianess, timestamp format and alignment. That's good enough for running a standby server, which has to run on the same platform anyway, but it's useful for tools like pg_receivexlog to work across platforms. This breaks protocol compatibility of streaming replication, but we never promised that to be compatible across versions, anyway.
* Work around unportable behavior of malloc(0) and realloc(NULL, 0).Tom Lane2012-10-02
| | | | | | | | | | | | | | | | On some platforms these functions return NULL, rather than the more common practice of returning a pointer to a zero-sized block of memory. Hack our various wrapper functions to hide the difference by substituting a size request of 1. This is probably not so important for the callers, who should never touch the block anyway if they asked for size 0 --- but it's important for the wrapper functions themselves, which mistakenly treated the NULL result as an out-of-memory failure. This broke at least pg_dump for the case of no user-defined aggregates, as per report from Matthew Carrington. Back-patch to 9.2 to fix the pg_dump issue. Given the lack of previous complaints, it seems likely that there is no live bug in previous releases, even though some of these functions were in place before that.
* Standardize naming of malloc/realloc/strdup wrapper functions.Tom Lane2012-10-02
| | | | | | | | | | | | We had a number of variants on the theme of "malloc or die", with the majority named like "pg_malloc", but by no means all. Standardize on the names pg_malloc, pg_malloc0, pg_realloc, pg_strdup. Get rid of pg_calloc entirely in favor of using pg_malloc0. This is an essentially cosmetic change, so no back-patch. (I did find a couple of places where psql and pg_dump were using plain malloc or strdup instead of the pg_ versions, but they don't look significant enough to bother back-patching.)
* Fix typo in previous warning-silencing patch.Heikki Linnakangas2012-10-02
| | | | Fujii Masao
* Silence compiler warning about pointer type mismatch on some platforms.Heikki Linnakangas2012-10-02
| | | | | | timeval.t_sec is of type time_t, which is not always compatible with long. I'm not sure if this was just harmless warning or a real bug, but this fixes it, anyway.
* Small punctuation fixesPeter Eisentraut2012-08-28
|
* pg_basebackup: Correct error messagePeter Eisentraut2012-08-27
| | | | | It still thought that the --xlog-method option argument could be empty, as in a previous version of this feature.
* Put options on man page and in help output in slightly better orderPeter Eisentraut2012-08-24
|
* Complain with proper error message if streaming stops prematurelyMagnus Hagander2012-08-06
| | | | | | | | | | | In particular, with a controlled shutdown of the master, pg_basebackup with streaming log could terminate without an error message, even though the backup is not consistent. In passing, fix a few cases where walfile wasn't properly set to -1 after closing. Fujii Masao
* pg_basebackup: stylistic adjustmentsAlvaro Herrera2012-07-31
| | | | | | | | | | | | | | The most user-visible part of this is to change the long options --statusint and --noloop to --status-interval and --no-loop, respectively, per discussion. Also, consistently enclose file names in double quotes, per our conventions; and consistently use the term "transaction log file" to talk about WAL segments. (Someday we may need to go over this terminology and make it consistent across the whole source code.) Finally, reflow the code to better fit in 80 columns, and have pgindent fix it up some more.
* Remove unreachable codePeter Eisentraut2012-07-16
| | | | | | | The Solaris Studio compiler warns about these instances, unlike more mainstream compilers such as gcc. But manual inspection showed that the code is clearly not reachable, and we hope no worthy compiler will complain about removing this code.
* Fix memory and file descriptor leaks in pg_receivexlog/pg_basebackupMagnus Hagander2012-07-12
| | | | | | | | When the internal loop mode was added, freeing memory and closing filedescriptors before returning became important, and a few cases in the code missed that. Fujii Masao
* Set the write location in the pg_receivexlog status messagesMagnus Hagander2012-07-04
| | | | | | This makes it possible for the master to track how much data has actually been written my pg_receivexlog - and not just how much has been sent towards it.
* Assorted message style improvementsPeter Eisentraut2012-07-02
|
* I missed some references to xlogid/xrecoff in Win32-only code. Fix.Heikki Linnakangas2012-06-24
|
* Replace XLogRecPtr struct with a 64-bit integer.Heikki Linnakangas2012-06-24
| | | | | | | | | | | | | | This simplifies code that needs to do arithmetic on XLogRecPtrs. To avoid changing on-disk format of data pages, the LSN on data pages is still stored in the old format. That should keep pg_upgrade happy. However, we have XLogRecPtrs embedded in the control file, and in the structs that are sent over the replication protocol, so this changes breaks compatibility of pg_basebackup and server. I didn't do anything about this in this patch, per discussion on -hackers, the right thing to do would to be to change the replication protocol to be architecture-independent, so that you could use a newer version of pg_receivexlog, for example, against an older server version.
* Don't waste the last segment of each 4GB logical log file.Heikki Linnakangas2012-06-24
| | | | | | | | | | | | | | | | The comments claimed that wasting the last segment made it easier to do calculations with XLogRecPtrs, because you don't have problems representing last-byte-position-plus-1 that way. In my experience, however, it only made things more complicated, because the there was two ways to represent the boundary at the beginning of a logical log file: logid = n+1 and xrecoff = 0, or as xlogid = n and xrecoff = 4GB - XLOG_SEG_SIZE. Some functions were picky about which representation was used. Also, use a 64-bit segment number instead of the log/seg combination, to point to a certain WAL segment. We assume that all platforms have a working 64-bit integer type nowadays. This is an incompatible change in WAL format, so bumping WAL version number.
* Make documentation of --help and --version options more consistentPeter Eisentraut2012-06-18
| | | | | | Before, some places didn't document the short options (-? and -V), some documented both, some documented nothing, and they were listed in various orders. Now this is hopefully more consistent and complete.
* pg_receivexlog: Rename option --dir to --directoryPeter Eisentraut2012-06-12
| | | | | | | | getopt_long() allows abbreviating long options, so we might as well give the option the full name, and users can abbreviate it how they like. Do some general polishing of the --help output at the same time.
* Revert behaviour of -x/--xlog to 9.1 semanticsMagnus Hagander2012-06-11
| | | | | | | | To replace it, add -X/--xlog-method that allows the specification of fetch or stream. Do this to avoid unnecessary backwards-incompatiblity. Spotted and suggested by Peter Eisentraut.
* Run pgindent on 9.2 source tree in preparation for first 9.3Bruce Momjian2012-06-10
| | | | commit-fest.
* Fix pg_basebackup/pg_receivexlog for floating point timestampsMagnus Hagander2012-06-10
| | | | | | | Since the replication protocol deals with TimestampTz, we need to care for the floating point case as well in the frontend tools. Fujii Masao, with changes from Magnus Hagander
* Error message capitalization fixMagnus Hagander2012-06-10
|
* Use strerror(errno) instead of %mMagnus Hagander2012-06-05
| | | | Found by Fujii Masao
* Make pg_recievexlog by default loop on connection failuresMagnus Hagander2012-05-27
| | | | | | Avoids the need for an external script in the most common scenario. Behavior can be overridden using the -n/--noloop commandline parameter.
* Fix base backup streaming xlog from standbyMagnus Hagander2012-05-25
| | | | | | | | | | | | | | When backing up from a standby server, the backup process will not automatically switch xlog segment. So we must accept a partially transferred xlog file in this case, but rename it into position anyway. In passing, merge the two callbacks for segment end and stop stream into a single callback, since their implementations were close to identical, and rename this callback to reflect that it stops streaming rather than continues it. Patch by Magnus Hagander, review by Fujii Masao
* Add missing PQfinish() callsMagnus Hagander2012-05-23
| | | | Fujii Masao
* Prevent pg_basebackup when integer_datetimes flag doesn't match.Robert Haas2012-05-22
| | | | | Magnus Hagander, reviewed by Fujii Masao, with slight wording changes by me.
* Add new files to NLS file listsPeter Eisentraut2012-03-30
| | | | | | Some of these are newly added, some are older and were forgotten, some don't contain any translatable strings right now but look like they could in the future.
* Replace printf format %i by %dPeter Eisentraut2012-03-30
| | | | see also ce8d7bb6440710058503d213b2aafcdf56a5b481
* Remove now redundant pgpipe code.Andrew Dunstan2012-03-28
|
* pg_basebackup: Error handling fixes.Robert Haas2012-03-28
| | | | Thomas Ogrisegg and Fujii Masao
* pg_basebackup: Error message improvements.Robert Haas2012-03-28
| | | | Fujii Masao