Guest User

pgMigrador.sh

a guest
Jul 31st, 2015
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.54 KB | None | 0 0
  1. #!/bin/bash
  2. separador="****************************************"
  3.  
  4. bases=`psql -l -A -F" " -t | awk '{ print $1 }' | grep -v -e ^template -e postgres`
  5. destino="192.168.1.10" # ip destino
  6.  
  7. for base in $bases; do
  8.         STARTTIME=$(date +%s)
  9.  
  10.         echo "Migrando $base -- `date`"
  11.         echo "Origen"
  12.         psql -c "\l+ $base" | tail -3 | head -1
  13.  
  14.         #size de la base
  15.         #el postgres me da lo que pesan los datos, pero el dump contiene sintaxis...
  16.         size=$(psql -c "SELECT pg_database_size('$base')" -t | head -1 | sed 's/ //g')
  17.  
  18.         #compresion gzip
  19.         pg_dump -c -C $base | gzip -1c | pv --size $size | ssh -o 'Compression no' postgres@$destino "gunzip | psql -q" > migracion_$base.log 2>&1
  20.  
  21.         #sin compresion
  22.         #quiza tarda menos pero transfiere mas
  23.         #pg_dump -c -C $base | pv --size $size | ssh -o 'Compression no' postgres@$destino "psql -q" > migracion_$base.log 2>&1
  24.  
  25.         #compresion ssh
  26.         #la peor lejos
  27.         #pg_dump -c -C $base | pv --size $size | ssh postgres@$destino "psql -q" > migracion_$base.log 2>&1
  28.  
  29.         echo "Destino"
  30.         ssh postgres@$destino "psql -c '\l+ $base'" | tail -3 | head -1
  31.  
  32.         ENDTIME=$(date +%s)
  33.         echo "Transcurrieron $(($ENDTIME - $STARTTIME)) segundos"
  34. done
  35.  
  36. for base in $bases; do
  37.         STARTTIME=$(date +%s)
  38.  
  39.         echo "Vacuum analyze en $base@$destino -- `date`"
  40.  
  41.         #vacuum analyze
  42.         ssh postgres@$destino "vacuumdb --analyze $base" >> migracion_$base.log 2>&1
  43.         ENDTIME=$(date +%s)
  44. done
Advertisement
Add Comment
Please, Sign In to add comment