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

Contents of /bin/SlaveRemove

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations)
Sun Nov 2 10:21:45 2003 UTC (20 years, 6 months ago) by dpavlin
Branch: MAIN
Changes since 1.2: +2 -11 lines
moved all info preparation into MkInfo in RServ.pm

1 #!/usr/bin/perl -w
2 # SlaveInit
3 # Vadim Mikheev, (c) 2000, PostgreSQL Inc.
4
5 eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
6 & eval 'exec perl -S $0 $argv:q'
7 if 0;
8
9 use strict;
10 use Pg;
11 use Getopt::Long;
12 use Sys::Hostname;
13
14 $| = 1;
15
16 my ($debug,$verbose,$quiet) = (0,0,0);
17 my ($help,$masterhost,$masterport,$masteruser,$masterpassword,
18 $slavehost,$slaveport,$slaveuser,$slavepassword);
19
20 my $result = GetOptions(
21 "debug!" => \$debug, "verbose!" => \$verbose,
22 "quiet!" => \$quiet, "help" => \$help,
23 "masterhost=s" => \$masterhost, "masterport=i" => \$masterport,
24 "masteruser=s" => \$masteruser, "masterpassword=s" => \$masterpassword,
25 "slavehost=s" => \$slavehost, "slaveport=i" => \$slaveport,
26 "slaveuser=s" => \$slaveuser, "slavepassword=s" => \$slavepassword,
27 );
28
29 if (defined($help) || (scalar(@ARGV) < 2)) {
30 print "Usage: $0 [options] masterdb slavedb
31 Options:
32 --masterhost=hostname --masterport=port
33 --masteruser=username --masterpassword=string
34 --slavehost=hostname --slaveport=port
35 --slaveuser=username --slavepassword=string
36 ";
37 exit ((scalar(@ARGV) < 2)? 1:0);
38 }
39
40 my $master = $ARGV[0] || "master";
41 my $slave = $ARGV[1] || "slave";
42
43 my $minfo = MkInfo($master,$masterhost,$masterport,$masteruser,$masterpassword);
44 my $sinfo = MkInfo($slave,$slavehost,$slaveport,$slaveuser,$slavepassword);
45
46 sub RollbackAndQuit {
47 my $conn = shift @_;
48
49 print STDERR $conn->errorMessage;
50 $conn->exec("ROLLBACK");
51 exit (-1);
52 }
53
54 # First, lets add the needed information in the slave database
55
56 print("Connecting to $sinfo\n") if ($debug || $verbose);
57 my $conn = Pg::connectdb($sinfo);
58 if ($conn->status != PGRES_CONNECTION_OK) {
59 print STDERR "Failed opening $sinfo\n";
60 exit 1;
61 }
62
63 $result = $conn->exec("BEGIN");
64 RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
65
66 $result = $conn->exec("set transaction isolation level serializable");
67 RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
68
69 $result = $conn->exec("DROP TABLE _RSERV_SLAVE_TABLES_");
70 RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
71
72 $result = $conn->exec("DROP TABLE _RSERV_SLAVE_SYNC_");
73 RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
74
75 $result = $conn->exec("COMMIT");
76 RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
77
78
79 # next, let's tell the master that the slave is gone.
80
81 print("Connecting to $minfo\n") if ($debug || $verbose);
82 $conn = Pg::connectdb($minfo);
83 if ($conn->status != PGRES_CONNECTION_OK) {
84 print STDERR "Failed opening $minfo\n";
85 exit 1;
86 }
87
88
89 my $host = defined($slavehost) ? $slavehost : hostname;
90
91 $result = $conn->exec("DELETE FROM _RSERV_SERVERS_ WHERE host='$host' AND dbase='$slave'");
92 if ($result->resultStatus ne PGRES_COMMAND_OK) {
93 print STDERR $conn->errorMessage;
94 exit (-1);
95 }
96
97
98 exit (0);

  ViewVC Help
Powered by ViewVC 1.1.26