DB repliocation

From: Flemming Videbaek (videbaek@sgs1.hirg.bnl.gov)
Date: Wed Dec 05 2001 - 09:11:59 EST

  • Next message: Christian Holm Christensen: "Re: DB repliocation"

    Dear Christian,
    
    This is an obvious thought (after the fact, hindsight is a wonderful
    science) ,
    and we in fact also talked about doing a mirror of the calibrations (and
    geom) to another
    rcf machine - unfortunately there is no such thing as
    'deadstable.not.here' -
    
    This does imply that one wants to be able to specify in the code what RUNDB
    to use, since in normal cases you would not like to
    uses the replicated but rather the 'true' rundatabase. The deafult could be
    to use the RUNDB given in the brat-main
    but one should be able to override this.
    
    
    
    
    ------------------------------------------------------
    Flemming Videbaek
    Physics Department
    Brookhaven National Laboratory
    
    tlf: 631-344-4106
    fax 631-344-1334
    e-mail: videbaek@bnl.gov
    ----- Original Message -----
    From: "Christian Holm Christensen" <cholm@hehi03.nbi.dk>
    To: <brahms-dev-l@bnl.gov>
    Sent: Wednesday, December 05, 2001 6:04 AM
    Subject: A small request
    
    
    > Hi all, and I guess in particular Flemming and Betty,
    >
    > I was wondering wether we could do automatic mirroring of the BRAHMS
    > databases, so that unfortunate incidents like the one with the pii3
    > before the weekend, does not obstruct analysis.  jsfbmwrite has an
    > option for using an arbiterary BrahmsMain database on any host, so
    > suppose we mirrored the RUNDB and BrahmsMain to
    > deadstable.brahms.bnl.gov, and BrahmsMain.DB contained something like
    >
    >   +--------------+---------------------------+-------------+
    >   | name         | host                      | file        |
    >   +--------------+---------------------------+-------------+
    >   | calibrations | rcas0005.rcf.bnl.gov      | BrahmsCalib |
    >   | runs         | deadstable.brahms.bnl.gov | RUNDB       |
    >   | geometries   | rcas0005.rcf.bnl.gov      | BrahmsGeom  |
    >   +--------------+---------------------------+-------------+
    >
    > or even (supposing BrahmsCalib and BrahmsGeom is also mirrored)
    >
    >   +--------------+---------------------------+-------------+
    >   | name         | host                      | file        |
    >   +--------------+---------------------------+-------------+
    >   | calibrations | deadstable.brahms.bnl.gov | BrahmsCalib |
    >   | runs         | deadstable.brahms.bnl.gov | RUNDB       |
    >   | geometries   | deadstable.brahms.bnl.gov | BrahmsGeom  |
    >   +--------------+---------------------------+-------------+
    >
    > There's a full section [1] in the MySQL manual that talks about
    > database mirroring.  From a quick glance it looks responably easy.
    >
    > I've sometimes mirrored the database to NBI, by doing
    >
    >   #!/bin/sh
    >   ######################################################################
    >   #
    >   # Setup
    >   #
    >   ### Databases we can easily dump fully
    >   db1="BrahmsMain BrahmsCalib BrahmsGeom"
    >   ### This database needs special care
    >   db2="RUNDB"
    >   ### We must dump these tables from ${db2}
    >   tables2="ConditionsBrahmsMagnets ConditionsDVM ConditionsData \
    >     echo "Dumping database table ${db2}.${table}"
    >     ConditionsHVL1440 ConditionsHVL1458 ConditionsHVL4032 \
    >     ConditionsKeithley ConditionsVars Files Runs ShiftReports"
    >   ### The host for the first kind of databases
    >   host1="rcas0005.rcf.rhic.bnl.gov"
    >   ### The host for the second kind
    >   host2="pii3.brahms.bnl.gov"
    >   ### User name to use
    >   user="query"
    >
    >   ######################################################################
    >   #
    >   # First part - Exporting
    >   #
    >   ### dump the full databases
    >   for db in ${db1} ; do
    >     echo "Dumping database $db"
    >     mysqldump -u ${user} -p -h ${host1} ${db} > ${db}.mysql
    >   done
    >
    >   ### dump the database tables from RUNDB
    >   for table in ${table2} ; do
    >     echo "Dumping database table $db2.${table}"
    >     mysqldump -u ${user} -p -h ${host2} ${db2} ${table}>
    ${db}.${table}.mysql
    >   done
    >
    >   ######################################################################
    >   #
    >   # Second part - Importing
    >   #
    >   ### First Clean the databases
    >   for db in ${db1} ${db2} ; do
    >     echo "Cleaning database $db"
    >     echo "DROP DATABASE ${db};"  | mysql -u root -p
    >   done
    >
    >   ### Import the full databases
    >   for db in ${dbs1} ; do
    >     echo "Importing database ${db}"
    >     cat ${db}.mysql > mysql -u root -p
    >   done
    >
    >   ### Make sure we have the RUNDB database
    >   echo "Creating database $db2"
    >   echo "CREATE DATABASE ${db2};" | mysql -u root -p
    >
    >   ### Make all the tables
    >   for table in $tables ; do
    >     echo "Importing database table ${db}.${table}"
    >     cat ${db2}.${table}.mysql | mysql -u ${user} -p
    >   done
    >
    >   ######################################################################
    >   #
    >   # Third part - Change host names
    >   #
    >   mysql -u ${user} -p << EOF
    >   USE BrahmsMain;
    >   UPDATE TABLE DB SET host=`hostname`;
    >   EOF
    >
    >   ### EOF
    >
    > This is a kind of 'poor-mans-backup', but it seems to work, though
    > it's very time (and CPU) consuming.  Proper replication would probably
    > be a better idea.
    >
    > Yours,
    >
    > Christian Holm Christensen -------------------------------------------
    > Address: Sankt Hansgade 23, 1. th.           Phone:  (+45) 35 35 96 91
    >          DK-2200 Copenhagen N                Cell:   (+45) 28 82 16 23
    >          Denmark                             Office: (+45) 353  25 305
    > Email:   cholm@nbi.dk                        Web:    www.nbi.dk/~cholm
    >
    >
    > [1] http://www.mysql.com/doc/R/e/Replication.html
    >
    



    This archive was generated by hypermail 2b30 : Wed Dec 05 2001 - 09:06:27 EST