the directories will be recreated as needed.
</para>
+ <para>
+ <filename>pg_internal.init</filename> files can be omitted from the
+ backup whenever a file of that name is found. These files contain
+ relation cache data that is always rebuilt when recovering.
+ </para>
+
<para>
The backup label
file includes the label string you gave to <function>pg_start_backup</function>,
<filename>postmaster.opts</filename>
</para>
</listitem>
+ <listitem>
+ <para>
+ <filename>pg_internal.init (found in multiple directories)</>
+ </para>
+ </listitem>
<listitem>
<para>
Various temporary files and directories created during the operation
#include "utils/builtins.h"
#include "utils/elog.h"
#include "utils/ps_status.h"
+#include "utils/relcache.h"
#include "utils/timestamp.h"
/* Skip current log file temporary file */
LOG_METAINFO_DATAFILE_TMP,
+ /* Skip relation cache because it is rebuilt on startup */
+ RELCACHE_INIT_FILENAME,
+
/*
* If there's a backup_label or tablespace_map file, it belongs to a
* backup started by the user with pg_start_backup(). It is *not* correct
#include "utils/tqual.h"
-/*
- * name of relcache init file(s), used to speed up backend startup
- */
-#define RELCACHE_INIT_FILENAME "pg_internal.init"
-
#define RELCACHE_INIT_FILEMAGIC 0x573266 /* version ID value */
/*
use Config;
use PostgresNode;
use TestLib;
-use Test::More tests => 78;
+use Test::More tests => 79;
program_help_ok('pg_basebackup');
program_version_ok('pg_basebackup');
close $file;
}
+# Connect to a database to create global/pg_internal.init. If this is removed
+# the test to ensure global/pg_internal.init is not copied will return a false
+# positive.
+$node->safe_psql('postgres', 'SELECT 1;');
+
$node->command_ok([ 'pg_basebackup', '-D', "$tempdir/backup", '-X', 'none' ],
'pg_basebackup runs');
ok(-f "$tempdir/backup/PG_VERSION", 'backup was created');
# These files should not be copied.
foreach my $filename (
- qw(postgresql.auto.conf.tmp postmaster.opts postmaster.pid tablespace_map current_logfiles.tmp)
+ qw(postgresql.auto.conf.tmp postmaster.opts postmaster.pid tablespace_map current_logfiles.tmp
+ global/pg_internal.init)
)
{
ok(!-f "$tempdir/backup/$filename", "$filename not copied");
#include "nodes/bitmapset.h"
+/*
+ * Name of relcache init file(s), used to speed up backend startup
+ */
+#define RELCACHE_INIT_FILENAME "pg_internal.init"
+
typedef struct RelationData *Relation;
/* ----------------