A small request

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Wed Dec 05 2001 - 06:04:48 EST

  • Next message: Flemming Videbaek: "DB repliocation"

    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 - 06:05:26 EST