/[rserv]/bin/Replicate
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /bin/Replicate

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by dpavlin, Wed Aug 6 00:28:17 2003 UTC revision 1.10 by dpavlin, Mon Oct 27 00:07:37 2003 UTC
# Line 28  my $result = GetOptions( Line 28  my $result = GetOptions(
28          "debug!" => \$debug, "verbose!" => \$verbose, "help" => \$help,          "debug!" => \$debug, "verbose!" => \$verbose, "help" => \$help,
29          "masterhost=s" => \$masterhost, "masterport=i" => \$masterport,          "masterhost=s" => \$masterhost, "masterport=i" => \$masterport,
30          "masteruser=s" => \$masteruser, "masterpassword=s" => \$masterpassword,          "masteruser=s" => \$masteruser, "masterpassword=s" => \$masterpassword,
31            "slavehost=s" => \$slavehost, "slaveport=i" => \$slaveport,
32            "slaveuser=s" => \$slaveuser, "slavepassword=s" => \$slavepassword,
33          "snapshot=s" => \$snapshot,          "snapshot=s" => \$snapshot,
34          );          );
35    
# Line 52  if ($debug) { Line 54  if ($debug) {
54    
55  my $master = $ARGV[0] || "master";  my $master = $ARGV[0] || "master";
56  my $slave = $ARGV[1] || "slave";  my $slave = $ARGV[1] || "slave";
57    my $tables = $#ARGV < 2 ? undef : { map {($_, undef)} @ARGV[2..$#ARGV] };
58    
59  # first, let's check if a instance is alrealy running  # first, let's check if a instance is alrealy running
60    
# Line 61  $str .= ':'.$slave; Line 64  $str .= ':'.$slave;
64  $str .= '@'.$slavehost if (defined($slavehost));  $str .= '@'.$slavehost if (defined($slavehost));
65  my $fname = "/tmp/.lock_rserv-$str";  my $fname = "/tmp/.lock_rserv-$str";
66  if (-e $fname) {  if (-e $fname) {
67      print STDERR "rServ is already running for $str. Remove $fname to override this.\n";          open(PID,$fname) || die "can't open pid file '$fname'";
68      exit(1);          my $pid = <PID>; chomp($pid);
69            close(PID);
70            open(PS,"ps ax |") || die "can't start ps to check for running rServ with pid $pid\n";
71            my $is_running = 0;
72            while(<PS>) {
73                    chomp;
74                    $is_running = 1 if (/^\s*$pid\s/);
75            }
76            close(PS);
77            if ($is_running) {
78                    print STDERR "rServ [$pid] is already running for $str. Remove $fname to override this.\n";
79                    exit(1);
80            } else {
81                    print STDERR "found stale pid file, but no running rServ [$pid], overriding.\n";
82            }
83  }  }
84  open ARQ, ">$fname" || die "Cannot open $fname: $!\n";  open ARQ, ">$fname" || die "Cannot open $fname: $!\n";
85  print ARQ "$$\n";  print ARQ "$$\n";
86  close ARQ;  close ARQ;
87    
88    $SIG{__DIE__} = \&mydie;
89    sub mydie {
90            unlink $fname;
91            print @_;
92            exit 1;
93    }
94    
95    
96  my $minfo = "dbname=$master";  my $minfo = "dbname=$master";
97  $minfo = "$minfo host=$masterhost" if (defined($masterhost));  $minfo = "$minfo host=$masterhost" if (defined($masterhost));
98  $minfo = "$minfo port=$masterport" if (defined($masterport));  $minfo = "$minfo port=$masterport" if (defined($masterport));
# Line 96  if ($sconn->status != Pg::PGRES_CONNECTI Line 121  if ($sconn->status != Pg::PGRES_CONNECTI
121      exit 1;      exit 1;
122  }  }
123    
124  my $slaveId = GetSlaveId($mconn, $slave, defined($slavehost) ? $slavehost : hostname);  $slavehost = hostname if (! $slavehost);
125    my $slaveId = GetSlaveId($mconn, $slave, $slavehost);
126    
127    die "\n>>>>>>>>>>>>> ERROR: Can't GetSlaveID for $sinfo\n" if (! $slaveId);
128    
129  if ($slaveId < 0) {  if ($slaveId < 0) {
130      unlink $fname;      unlink $fname;
131      die "\n>>>>>>>>>>>>> ERROR\n";      die "\n>>>>>>>>>>>>> ERROR\n";
# Line 106  SyncSync($mconn, $sconn); Line 135  SyncSync($mconn, $sconn);
135  my $outf = new IO::File;  my $outf = new IO::File;
136  open $outf, ">$snapshot";  open $outf, ">$snapshot";
137  print "\n>>>>>>>>>>>>> Prepare Snapshot\n\n" if ($verbose);  print "\n>>>>>>>>>>>>> Prepare Snapshot\n\n" if ($verbose);
138  my $res = PrepareSnapshot($mconn, $sconn, $outf, $slaveId);  my $res = PrepareSnapshot($mconn, $sconn, $outf, $slaveId, $tables);
139  close $outf;  close $outf;
140  if ($res < 0) {  if ($res < 0) {
141      unlink $fname;      unlink $fname;
# Line 123  if ($res == 0) Line 152  if ($res == 0)
152  my $inpf = new IO::File;  my $inpf = new IO::File;
153  open $inpf, "<$snapshot";  open $inpf, "<$snapshot";
154  print "\n>>>>>>>>>>>>> Apply Snapshot\n\n" if ($verbose);  print "\n>>>>>>>>>>>>> Apply Snapshot\n\n" if ($verbose);
155  $res = ApplySnapshot($sconn, $inpf);  $res = ApplySnapshot($sconn, $inpf, $tables);
156  close $inpf;  close $inpf;
157  if ($res < 0) {  if ($res < 0) {
158      unlink $fname;      unlink $fname;

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.26