This file is indexed.

/usr/lib/mysql-mmm/tools/create_snapshot is in mysql-mmm-tools 2.2.1-1.1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env perl

use strict;
use warnings FATAL => 'all';
use DBI;
use MMM::Common::Config;
use MMM::Tools::Snapshot::LVM;
use MMM::Tools::Snapshot::MySQL;

our $config = new MMM::Common::Config::;
$config->read("mmm_tools");
$config->check('TOOLS');


print create_snapshot(), "\n";
exit(0);


sub create_snapshot {
	my $this = $config->{this};

	unless (defined($config->{host}->{$this})) {
		return "ERROR: Invalid 'this' value: '$this'!";
	}

	my $host		= $config->{host}->{$this};
	my $dump_dir	= $host->{lvm_mount_dir};

	system ('mkdir', '-p', $dump_dir);
	unless (-d $dump_dir && -w _ && -r _ && -x _) {
		return "ERROR: Directory '$dump_dir' has invalid permissions (it must be readable/writable/executable)";
	}
	# Check mount dir
	if (scalar(glob("$dump_dir/*"))) {
		return "ERROR: LVM mount dir is not empty!";
	}
	
	my $dbh = MMM::Tools::Snapshot::MySQL::connect($this);

	return "ERROR: Can't connect to database! Error = " . DBI::errstr unless ($dbh);

	my $res;
	
	# Lock tables
	$res = MMM::Tools::Snapshot::MySQL::lock_tables($dbh);
	return "ERROR: Can't lock tables! Error = " . $dbh->errstr unless ($res);

	# Get position info
	my $pos_info = {};
	$pos_info->{host} = $config->{this};
	$res = MMM::Tools::Snapshot::MySQL::get_pos_info($dbh, $pos_info);
	return "ERROR: Can't get position info: $res" unless ($res =~ /^OK/);

	# Create and mount snapshot
	$res = MMM::Tools::Snapshot::LVM::create();
	return "ERROR: Can't create or mount snapshot: $res" unless ($res =~ /^OK/);
	
	# Unlock tables
	MMM::Tools::Snapshot::MySQL::unlock_tables($dbh);

	# Change dir to snapshot and create _mmm directory
	chdir($dump_dir);
	system('mkdir -p _mmm');
	
	MMM::Tools::Snapshot::MySQL::save_pos_info($pos_info, '_mmm/status.txt');
	$res = system('cp', $host->{mysql_cnf}, '_mmm/');
	return "ERROR: Can't copy mysql config file to backup!" if ($res);

	return 'OK: Snapshot created!';
}

__END__

=head1 NAME

remove_snapshot

=head1 DESCRIPTION

remove_snapshot is a helper binary for the mmm tools. It removes a snapshot created by B<create_snapshot>.

=head1 USAGE

remove_snapshot