Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf989f71

Browse files
committed
TAP: Add support for taking filesystem level backups
1 parent8c361e4 commitf989f71

File tree

1 file changed

+71
-12
lines changed

1 file changed

+71
-12
lines changed

‎src/test/perl/PostgresNode.pm

Lines changed: 71 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -463,11 +463,81 @@ sub backup
463463
my$port =$self->port;
464464
my$name =$self->name;
465465

466-
print"# Takingbackup$backup_name from node\"$name\"\n";
466+
print"# Takingpg_basebackup$backup_name from node\"$name\"\n";
467467
TestLib::system_or_bail("pg_basebackup -D$backup_path -p$port -x");
468468
print"# Backup finished\n";
469469
}
470470

471+
=item$node->backup_fs_hot(backup_name)
472+
473+
Create a backup with a filesystem level copy in $node->backup_dir,
474+
including transaction logs. Archiving must be enabled as pg_start_backup
475+
and pg_stop_backup are used. This is not checked or enforced.
476+
477+
The backup name is passed as the backup label to pg_start_backup.
478+
479+
=cut
480+
481+
subbackup_fs_hot
482+
{
483+
my ($self,$backup_name) =@_;
484+
$self->_backup_fs($backup_name, 1);
485+
}
486+
487+
=item$node->backup_fs_cold(backup_name)
488+
489+
Create a backup with a filesystem level copy in $node->backup dir,
490+
including transaction logs. The server must be stopped as no
491+
attempt to handle concurrent writes is made.
492+
493+
Use backup or backup_fs_hot if you want to back up a running
494+
server.
495+
496+
=cut
497+
498+
subbackup_fs_cold
499+
{
500+
my ($self,$backup_name) =@_;
501+
$self->_backup_fs($backup_name, 0);
502+
}
503+
504+
505+
# Common sub of backup_fs_hot and backup_fs_cold
506+
sub_backup_fs
507+
{
508+
my ($self,$backup_name,$hot) =@_;
509+
my$backup_path =$self->backup_dir .'/' .$backup_name;
510+
my$port =$self->port;
511+
my$name =$self->name;
512+
513+
print"# Taking filesystem level backup$backup_name from node\"$name\"\n";
514+
515+
if ($hot) {
516+
my$stdout =$self->psql_check('postgres',"SELECT * FROM pg_start_backup('$backup_name');");
517+
print"# pg_start_backup:$stdout\n";
518+
}
519+
520+
RecursiveCopy::copypath($self->data_dir,$backup_path,
521+
filterfn=>sub {
522+
my$src =shift;
523+
return$src !~/\/pg_log\// &&$src !~/\/postmaster.pid$/;
524+
}
525+
);
526+
527+
if ($hot)
528+
{
529+
# We ignore pg_stop_backup's return value. We also assume archiving
530+
# is enabled; otherwise the caller will have to copy the remaining
531+
# segments.
532+
my$stdout =$self->psql_check('postgres','SELECT * FROM pg_stop_backup();');
533+
print"# pg_stop_backup:$stdout\n";
534+
}
535+
536+
print"# Backup finished\n";
537+
}
538+
539+
540+
471541
=pod
472542
473543
=item$node->init_from_backup(root_node, backup_name)
@@ -917,17 +987,6 @@ Pass additional parameters to psql. Must be an arrayref.
917987
918988
e.g.
919989
920-
my ($stdout, $stderr, $timed_out);
921-
my $cmdret = $psql_expert('postgres', 'SELECT pg_sleep(60)',
922-
stdout => \$stdout, stderr => \$stderr,
923-
timeout => 30, timed_out => \$timed_out,
924-
extra_params => ['--single-transaction'])
925-
926-
will set $cmdret to undef and $timed_out to a true value.
927-
928-
$psql_expert('postgres', $sql, on_error_die => 1);
929-
930-
dies with an informative message if $sql fails.
931990
932991
=cut
933992

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp