Scripts proveitosos :P.
Esses últimos dois dias tive um problemaço, tive que refazer nada mais, nada
menos do que 17 dumps de base.
Explicando: Na empresa, nós fazemos dump de base em uma das ferramentas,
versionando elas, criando patches, etc. Mas, alguns dumps foram feitos sem
alguns patches aplicados, o que zoou todos os que vieram depois. Falta de
orientação minha pro pessoal eu creio. Enfim, ai eu tive que arrumar tudo.
Explicando 2: troquei o nome do site por foobar, para não expor nada da empresa.
Explicando 3: Bem, nós aqui separamos os dados em um arquivo, a estrutura em
outro, então para criar as bases e criar os dumps são dois comandos para cada.
Explicando 4 (só mais um): usamos postgres aqui e os scripts mostram o que fazem
por si só. Em todos eu usei as funções do /sbin/functions.sh.
Script para criar as bases de dados.
1 #!/bin/bash
2
3 . /sbin/functions.sh
4
5 for e in `ls structure*.sql`;
6 do
7 var1=${e/structure_v};
8 var1=${var1/\.sql};
9 dropdb -qU dvown 'foobar_'$var1 &>/dev/null
10 sleep 1s;
11 createdb -qU dvown 'foobar_'$var1;
12 sleep 1s;
13 if [ -e 'data_v'$var1'.sql.bz2' ]
14 then
15 rm 'data_v'$var1'.sql'
16 fi
17 bzip2 -dk 'data_v'$var1'.sql.bz2'
18 psql -qU dvown 'foobar_'$var1 < 'structure_v'$var1'.sql' &>/dev/null;
19 psql -qU postgres 'foobar_'$var1 < 'data_v'$var1'.sql' &>/dev/null;
20 einfo 'Base foobar_'$var1' criada.';
21 sleep 1s;
22 done
Script para recriar dumps
1 #!/bin/bash
2
3 . /sbin/functions.sh
4
5
6 einfo "Estes script recria todos os dumps de base dao gestao, personalizado para uma ocasião."
7 for e in `ls data*.sql`;
8 do
9 var1=${e/data_v};
10 var1=${var1/\.sql};
11
12
13 echo
14 echo
15
16 einfo "Base foobar_${var1}"
17
18 echo -e "\t`einfo 'Criando dump da estrutura -> structure_v'${var1}'.sql'`"
19 pg_dump -s -i -O -U dvown 'foobar_'$var1 > 'structure_v'$var1'.sql' 2>'error.structure_v'$var1'.log'
20 eend $?
21
22 echo -e "\t`einfo 'Criando dump dos dados -> data_v'${var1}'.sql'`"
23 pg_dump -a -D -X disable-triggers -i -O -U dvown 'foobar_'$var1 > 'data_v'$var1'.sql' 2>'error.data_v'$var1'.log'
24 eend $?
25
26 echo -e "\t`einfo 'Compactando dump dos dados -> data_v'${var1}'.sql.bz2'`"
27 rm 'data_v'$var1'.sql.bz2'
28 bzip2 -z9k 'data_v'$var1'.sql'
29 eend $?
30
31 done
32 echo
33 echo
34 ewarn "Se houve erros verifique os logs."
35 echo
Qualquer dúvida, comment o blog ou envie um email.