/[rserv]/bin/SlaveInit
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/SlaveInit

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

revision 1.4 by dpavlin, Tue Aug 5 15:07:01 2003 UTC revision 1.6 by dpavlin, Fri Aug 15 23:00:12 2003 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl  #!/usr/bin/perl -w
2  # SlaveInit  # SlaveInit
3  # Vadim Mikheev, (c) 2000, PostgreSQL Inc.  # Vadim Mikheev, (c) 2000, PostgreSQL Inc.
4    
# Line 6  eval '(exit $?0)' && eval 'exec perl -S Line 6  eval '(exit $?0)' && eval 'exec perl -S
6      & eval 'exec perl -S $0 $argv:q'      & eval 'exec perl -S $0 $argv:q'
7      if 0;      if 0;
8    
9    use strict;
10  use Pg;  use Pg;
11  use Getopt::Long;  use Getopt::Long;
12  use Sys::Hostname;  use Sys::Hostname;
13    
14  $| = 1;  $| = 1;
15    
16  $result = GetOptions("debug!", "verbose!", "quiet!", "help",  my ($debug,$verbose,$quiet) = (0,0,0);
17                       "masterhost=s", "masterport=i",  my ($help,$masterhost,$masterport,$masteruser,$masterpassword,
18                       "masteruser=s", "masterpassword=s",          $slavehost,$slaveport,$slaveuser,$slavepassword);
19                       "slavehost=s", "slaveport=i",  
20                       "slaveuser=s", "slavepassword=s");  my $result = GetOptions(
21            "debug!" => \$debug, "verbose!" => \$verbose,
22  my $debug = $opt_debug || 0;          "quiet!" => \$quiet, "help" => \$help,
23  my $verbose = $opt_verbose || 0;          "masterhost=s" => \$masterhost, "masterport=i" => \$masterport,
24  my $quiet = $opt_quiet || 0;          "masteruser=s" => \$masteruser, "masterpassword=s" => \$masterpassword,
25            "slavehost=s" => \$slavehost, "slaveport=i" => \$slaveport,
26  if (defined($opt_help) || (scalar(@ARGV) < 2)) {          "slaveuser=s" => \$slaveuser, "slavepassword=s" => \$slavepassword,
27      print "Usage: $0 --masterhost=name --masterport=port\n\t--masteruser=name --masterpassword=string\n\t--slavehost=name --slaveport=port\n\t--slaveuser=name --slavepassword=string\n\tmasterdb slavedb\n";          );
28      exit ((scalar(@ARGV) < 1)? 1:0);  
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";  my $master = $ARGV[0] || "master";
41  my $slave = $ARGV[1] || "slave";  my $slave = $ARGV[1] || "slave";
42    
43  my $sinfo = "dbname=$slave";  my $sinfo = "dbname=$slave";
44  $sinfo = "$sinfo host=$opt_slavehost" if (defined($opt_slavehost));  $sinfo = "$sinfo host=$slavehost" if (defined($slavehost));
45  $sinfo = "$sinfo user=$opt_slaveuser" if (defined($opt_slaveuser));  $sinfo = "$sinfo port=$slaveport" if (defined($slaveport));
46  $sinfo = "$sinfo password=$opt_slavepassword" if (defined($opt_slavepassword));  $sinfo = "$sinfo user=$slaveuser" if (defined($slaveuser));
47  $sinfo = "$sinfo port=$opt_slaveport" if (defined($opt_slaveport));  $sinfo = "$sinfo password=$slavepassword" if (defined($slavepassword));
48    
49  my $minfo = "dbname=$master";  my $minfo = "dbname=$master";
50  $minfo = "$minfo host=$opt_masterhost" if (defined($opt_masterhost));  $minfo = "$minfo host=$masterhost" if (defined($masterhost));
51  $minfo = "$minfo user=$opt_masteruser" if (defined($opt_masteruser));  $minfo = "$minfo port=$masterport" if (defined($masterport));
52  $minfo = "$minfo password=$opt_masterpassword" if (defined($opt_masterpassword));  $minfo = "$minfo user=$masteruser" if (defined($masteruser));
53  $minfo = "$minfo port=$opt_masterport" if (defined($opt_masterport));  $minfo = "$minfo password=$masterpassword" if (defined($masterpassword));
54    
55  sub RollbackAndQuit {  sub RollbackAndQuit {
56      my $conn = shift @_;      my $conn = shift @_;
# Line 59  if ($conn->status != PGRES_CONNECTION_OK Line 69  if ($conn->status != PGRES_CONNECTION_OK
69      exit 1;      exit 1;
70  }  }
71    
72  my $result = $conn->exec("BEGIN");  $result = $conn->exec("BEGIN");
73  RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);  RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
74    
75  $result = $conn->exec("set transaction isolation level serializable");  $result = $conn->exec("set transaction isolation level serializable");
# Line 70  $result = $conn->exec("create table _RSE Line 80  $result = $conn->exec("create table _RSE
80  RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);  RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
81    
82  $result = $conn->exec("create table _RSERV_SLAVE_SYNC_" .  $result = $conn->exec("create table _RSERV_SLAVE_SYNC_" .
83                        " (syncid int4, synctime timestamp)");                        " (syncid int4 not null, synctime timestamp)");
84  RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);  RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
85    
86    
87  # next, let's tell the master that the slave is set up.  # next, let's tell the master that the slave is set up.
88    
89  print("Connecting to $minfo\n") if ($debug || $verbose);  print("Connecting to $minfo\n") if ($debug || $verbose);
90  $mconn = Pg::connectdb($minfo);  my $mconn = Pg::connectdb($minfo);
91  if ($mconn->status != PGRES_CONNECTION_OK) {  if ($mconn->status != PGRES_CONNECTION_OK) {
92      print STDERR "Failed opening $minfo\n";      print STDERR "Failed opening $minfo\n";
93      RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);      RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
94  #    exit 1;  #    exit 1;
95  }  }
96    
97  $host = defined($opt_slavehost) ? $opt_slavehost : hostname;  my $host = defined($slavehost) ? $slavehost : hostname;
98    
99  $result = $mconn->exec("INSERT INTO _RSERV_SERVERS_ (host,dbase) VALUES ('$host','$slave')");  $result = $mconn->exec("INSERT INTO _RSERV_SERVERS_ (host,dbase) VALUES ('$host','$slave')");
100  if ($result->resultStatus ne PGRES_COMMAND_OK) {  if ($result->resultStatus ne PGRES_COMMAND_OK) {

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.26