<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thunder-Boy &#187; Banco de Dados</title>
	<atom:link href="http://jf.eti.br/category/banco-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://jf.eti.br</link>
	<description>Aprender é Bom Demais!!!</description>
	<lastBuildDate>Wed, 02 May 2012 20:57:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Script de Backup (dump) Postgresql – Com bancos a escolher</title>
		<link>http://jf.eti.br/script-de-backup-dump-postgresql-com-bancos-a-escolher/</link>
		<comments>http://jf.eti.br/script-de-backup-dump-postgresql-com-bancos-a-escolher/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 14:23:31 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2341</guid>
		<description><![CDATA[Depois que publiquei o artigo Script de Backup (dump) Postgresql – Múltiplos bancos em arquivos separados, onde por meio de um script shell, é gerados dumps de todos os bancos existentes no servidor, cada banco um arquivo separado e compactado, me perguntaram se era possível, com a mesma idéia fazer um script que ao invés [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://i.imgur.com/s8dHZ.jpg" alt="" width="254" height="288" /></p>
<p>Depois que publiquei o artigo <a href="http://jf.eti.br/script-de-backup-dump-postgresql-multiplos-bancos-em-arquivos-separados/" target="_blank">Script de Backup (dump) Postgresql – Múltiplos bancos em arquivos separados</a>, onde por meio de um script shell, é gerados dumps de todos os bancos existentes no servidor, cada banco um arquivo separado e compactado, me perguntaram se era possível, com a mesma idéia fazer um script que ao invés de realizar o dump de todas as bases, fosse possível definir quais bancos seriam backupiados.</p>
<p>Pois bem, é bem simples de fazer isso, vejamos:</p>
<pre class="brush: shell">
#!/bin/bash
#
# Um simples script de backup
# Autor: Jonas Ferreira

# db_array - lista dos bancos que se deseja fazer o dump
db_array=&quot;banco1 banco2 banco3 banco4&quot;

# logfile - arquivo que grava o log de cada execucao do script
logfile=&quot;/tmp/pgsql-backup.log&quot;

#Diretorio de destino do arquivos
DIR=/tmp/backup

for db in $db_array
do
        /usr/bin/pg_dump $db &gt; &quot;$DIR/$db.sql&quot; 1&gt;&gt; $logfile 2&gt;&gt; $logfile
        tar zcvf &quot;$DIR/$db.tgz&quot; &quot;$DIR/$db.sql&quot;
        rm -rf &quot;$DIR/$db.sql&quot;
done
</pre>
<p>Simples assim!</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/script-de-backup-dump-postgresql-com-bancos-a-escolher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script de Backup (dump) Mysql – Múltiplos bancos em arquivos separados</title>
		<link>http://jf.eti.br/script-de-backup-dump-mysql-multiplos-bancos-em-arquivos-separados/</link>
		<comments>http://jf.eti.br/script-de-backup-dump-mysql-multiplos-bancos-em-arquivos-separados/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 21:54:56 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2324</guid>
		<description><![CDATA[Com certeza você já deve conhecer diversas maneiras de realizar backup de sua base Mysql. Mas o objetivo deste howto é apenas uma variação de um script clássico de backup. Vamos ao problema: A maioria das pessoas utilizam este comando para backup: mysqldump -u root -pPASSWORD &#8211;all-databases &#124; gzip > /mnt/database`data &#8216; %m-%d-%Y&#8217;`.sql.gz Isso vai [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://t3.gstatic.com/images?q=tbn:ANd9GcTujGfG_525ypJuCgxY9dxaao2RKqvjRUH_ALg7nmHnY9UsERmPogxpDaFxhw" alt="" /></p>
<p>Com certeza você já deve conhecer <a href="http://www.noupe.com/how-tos/10-ways-to-automatically-manually-backup-mysql-database.html" target="_blank">diversas maneiras de realizar backup de sua base Mysql</a>. Mas o objetivo deste howto é apenas uma variação de um script clássico de backup.</p>
<p>Vamos ao problema:</p>
<p>A maioria das pessoas utilizam este comando para backup:</p>
<p>mysqldump -u root -pPASSWORD &#8211;all-databases | gzip > /mnt/database`data &#8216; %m-%d-%Y&#8217;`.sql.gz  </p>
<p>Isso vai gerar um backup de todos os bancos de dados de seu SGBD e compactar com o nome de <strong>data 03/22/2012.sql.gz</strong>. O problema esta ai, pois ele irá gerar todas as querys em um único arquivo, ou seja, se você quiser restaurar um único banco de dados, terá que procurar o trecho no dump que corresponde ao banco desejado.</p>
<p>A solução apresentada abaixo é uma alternativa, onde a partir de um laço, lê todos os elementos do SGBD, e gera um dump já compactado de cada banco, separadamente.</p>
<pre class="brush: shell">
#!/bin/bash
# backup mysql com --all-databases, mas separados cada banco em um único arquivo

USER=&quot;root&quot;
PASSWORD=&quot;senha&quot;
OUTPUTDIR=&quot;/var/lib/databases&quot;
MYSQLDUMP=&quot;/usr/bin/mysqldump&quot;
MYSQL=&quot;/usr/bin/mysql&quot;

# elimando arquivos de backup antigos
rm -rf $DIR/*

# lendo a lista de banco de dados
databases=`$MYSQL --user=$USER --password=$PASSWORD \
  -e &quot;SHOW DATABASES;&quot; | tr -d &quot;| &quot; | grep -Ev &#039;(Database|information_schema)&#039;`

# realizando o dump e compactando cada arquivo gerado
for db in $databases; do
    echo $db
    $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD \
    --databases $db | gzip &gt; &quot;$OUTPUTDIR/$db.gz&quot;
done
</pre>
<p>Com essa idéia, pode-se editar um pouco mais este script, como por exemplo compactar a pasta com todos os arquivos gerados, e já transferir para seu storage com Active Directory, por exemplo.</p>
<p>Aqui disponibilizo para download um script exatamente com essa idéia em prática.</p>
<p><a href="http://jf.eti.br/wp-content/uploads/script_bkp_mysql.txt" target="_blank">Script de Backup &#8211; Mysql &#8211; Com depósito no Storage &#8211; AD</a></p>
<p>Depois é só colocar no CronTab.</p>
<p>Referência: <a href="http://www.snowfrog.net/2005/11/16/backup-multiple-databases-into-separate-files/" target="_blank">snowfrog.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/script-de-backup-dump-mysql-multiplos-bancos-em-arquivos-separados/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Remover árvore de diretórios em uma compactação TAR</title>
		<link>http://jf.eti.br/remover-arvore-de-diretorios-em-uma-compactacao-tar/</link>
		<comments>http://jf.eti.br/remover-arvore-de-diretorios-em-uma-compactacao-tar/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 19:43:39 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2319</guid>
		<description><![CDATA[Se você trabalha com servidores Linux, provavelmente trabalha com processos de backups personalizados para todos os seus dados importantes. Sem dúvida as cópias de segurança acabam sendo armazenadas na forma de um arquivo.tar. Tudo funciona muito bem, as cópias são feitas, comprimidas e enviadas para um storage externo. Há apenas uma questão, sempre que você [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://ubuntubook2.files.wordpress.com/2011/03/tar-gz1.png" alt="" width="232" height="232" /></p>
<p>Se você trabalha com servidores Linux, provavelmente trabalha com processos de backups personalizados para todos os seus dados importantes. Sem dúvida as cópias de segurança acabam sendo armazenadas na forma de um <a href="http://pt.wikipedia.org/wiki/TAR" target="_blank">arquivo.tar</a>. Tudo funciona muito bem, as cópias são feitas, comprimidas e enviadas para um storage externo. Há apenas uma questão, sempre que você abrir um desses backups, ele irá incluir toda a árvore de diretórios acima da pasta onde os arquivos foram gerados.</p>
<p>Esse &#8220;problema&#8221; sempre me deixou chateado quando da criação de dumps de banco de dados. Por exemplo,vamos considerar que meu script de backup gere os arquivos de dumps e salve no diretório: <code><em>/var/lib/mysql/meu_banco</em>.</code> Eu gostaria de fazer um backup TAR do diretório<strong> meu_banco</strong>, e chama-lo de <span style="text-decoration: underline;"><strong>meu_banco.tar.gz</strong></span>.</p>
<p>Acontece que quando vou descompactar o arquivo meu_banco.tar.gz, eu vou ter um monte de subpastas inúteis, eu vou ter que fazer <a href="http://en.wikipedia.org/wiki/Drill_down" target="_blank">drill-down</a>, através da raíz onde eu descompactar, até /var/lib/mysql/meu_banco. Tudo que eu realmente quero é o diretório meu_banco, os demais (/var/lib/mysql) não me interessa.</p>
<p>Veja como é simples se livras desses diretórios. Antes de executar o comando TAR, primeiro você deve usar o comando CD para se mover até o diretório pai que contém o diretório que você deseja, não dentro da pasta que você irá compactar, no exemplo acima, você deve estar dentro de <em>/var/lib/mysql</em> e não dentro de <em>/var/lib/mysql/meu_banco</em>.</p>
<p>Eis a seqüência de comando para exemplo anterior:</p>
<pre class="brush: shell">cd /var/lib/mysql
tar -czf /pasta/onde/voce/ira/armazenar/meu_banco.tar.gz  meu_banco</pre>
<p>Com isso, ao descompactar o meu_banco.tar.gz terá apenas um único subdiretório, chamado meu_banco.</p>
<p>Agora, provavelmente você vai executar esses comandos em um script maior de backup, neste caso o comando CD direto não irá funcionar, ainda mais se o script estiver no /etc/init.d/script_bkp.</p>
<p>Felizmente, há uma solução fácil: você pode acrescentar vários comandos shell em conjunto, utilizando <code>&amp;&amp;</code> . Com <code>&amp;&amp;</code> , cada comando será executado e concluído antes do próximo começar, simulando a digitação de comandos em uma linha.</p>
<pre class="brush: shell">cd /var/lib/mysql &amp;&amp; tar -czf /pasta/onde/voce/ira/armazenar/meu_banco.tar.gz  meu_banco</pre>
<p>Pronto. <img src='http://jf.eti.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/remover-arvore-de-diretorios-em-uma-compactacao-tar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adicionando um novo usuário no MySQL</title>
		<link>http://jf.eti.br/adicionando-um-novo-usuario-no-mysql/</link>
		<comments>http://jf.eti.br/adicionando-um-novo-usuario-no-mysql/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 18:34:29 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2309</guid>
		<description><![CDATA[Sei que este é um assunto muito simples, ainda mais se você já tiver o PhpMyAdmin instalado, mas como nem sempre podemos instalar essa ferramenta, o legal é lembrar como adicionar os usuários direto no terminal. Na verdade sempre preciso disso e nunca lembro a sintaxe. Este procedimento funciona com MySQL 4.x e 5.x 1. [...]]]></description>
			<content:encoded><![CDATA[<p>Sei que este é um assunto muito simples, ainda mais se você já tiver o PhpMyAdmin instalado, mas como nem sempre podemos instalar essa ferramenta, o legal é lembrar como adicionar os usuários direto no terminal. Na verdade sempre preciso disso e nunca lembro a sintaxe.</p>
<div>
<p>Este procedimento funciona com MySQL 4.x e 5.x</p>
</div>
<p>1. Considerando que você já tenha o Mysql instalado e rodando 100%.</p>
<pre class="brush: php">mysql --user=root mysql</pre>
<p>Se sua conta root solicitar senha, você pode acrescentar o parâmetro -p ou &#8211;password</p>
<pre class="brush: php">
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 81
Server version: 5.1.61 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.

mysql&gt;
</pre>
<p>2. Criando usuário com acesso full<br />
Depois de conectar, é só executar os comandos para criar o usuário e senha, bem como a definição de privilégios.</p>
<pre class="brush: php">
mysql&gt; CREATE USER &#039;bkpiador&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;a3$b2#c1!&#039;;
mysql&gt; GRANT ALL PRIVILEGES ON *.* TO &#039;bkpiador&#039;@&#039;localhost&#039; WITH GRANT OPTION;
</pre>
<p>Vejamos o que estamos fazendo:</p>
<p>Na linha 1 é criado o usuário (com acesso permitido somente de localhost) e a senha de acesso.<br />
Na linha 2 define-se as políticas de acesso do usuário, nesse exemplo, o usuário tem permissão para acessar tudo e somente apartir de localhost.</p>
<pre class="brush: php">
mysql&gt; CREATE USER &#039;bkpiador&#039;@&#039;%&#039; IDENTIFIED BY &#039;a3$b2#c1!&#039;;
mysql&gt; GRANT ALL PRIVILEGES ON *.* TO &#039;bkpiador&#039;@&#039;%&#039; WITH GRANT OPTION;
</pre>
<p>Novamente, na linha 1 é criado o usuário, (agora para acesso de qualquer host) e a senha.<br />
E na linha 2 o usuário tem permissão para acessar tudo apartir de qualquer host.</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/adicionando-um-novo-usuario-no-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postgresql &#8211; Como fazer um dump de uma tabela específica de seu banco de dados</title>
		<link>http://jf.eti.br/postgresql-como-fazer-um-dump-de-uma-tabela-especifica-de-seu-banco-de-dados/</link>
		<comments>http://jf.eti.br/postgresql-como-fazer-um-dump-de-uma-tabela-especifica-de-seu-banco-de-dados/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 18:47:58 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2262</guid>
		<description><![CDATA[Muito fácil: pg_dump -U &#60;usuario&#62; &#8211;inserts -t &#60;tabela&#62; &#60;banco&#62; &#62; dump.sql Um exemplo real: pg_dump -U postgres &#8211;inserts -t municipio geral &#62; municipios.sql &#160;]]></description>
			<content:encoded><![CDATA[<p>Muito fácil:</p>
<p>pg_dump -U &lt;usuario&gt; &#8211;inserts -t &lt;tabela&gt; &lt;banco&gt; &gt; dump.sql</p>
<p>Um exemplo real:</p>
<p><em>pg_dump -U postgres &#8211;inserts -t municipio geral &gt; municipios.sql</em></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/postgresql-como-fazer-um-dump-de-uma-tabela-especifica-de-seu-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server</title>
		<link>http://jf.eti.br/howto-gerando-dump-do-postgresql-e-transferindo-o-arquivo-para-uma-maquina-com-windows-server/</link>
		<comments>http://jf.eti.br/howto-gerando-dump-do-postgresql-e-transferindo-o-arquivo-para-uma-maquina-com-windows-server/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 00:25:32 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2241</guid>
		<description><![CDATA[&#160; Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server O objetivo deste howto não é discutir qual é a melhor forma de realizar um backup PostgreSQL, mas sim propor uma forma de realizar um Dump da base de dados em um servidor Linux e transferir para um servidor [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox" title="Untitled-1" href="http://jf.eti.br/wp-content/uploads/Untitled-1.jpg"><img class="alignnone size-full wp-image-2243" title="Untitled-1" src="http://jf.eti.br/wp-content/uploads/Untitled-1.jpg" alt="" width="411" height="106" /></a></p>
<p>&nbsp;</p>
<p><strong>Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server</strong></p>
<p>O objetivo deste howto não é discutir qual é a melhor forma de realizar um backup PostgreSQL, mas sim propor uma forma de realizar um Dump da base de dados em um servidor Linux e transferir para um servidor de arquivos que rode Windows, isso é muito comum em empresas e instituições, onde muitas vezes no servidor Windows encontra-se instalada algumas ferramentas de terceiro para gerenciar fitas, robôs e etc.</p>
<p>Não custa citar o <a href="http://www.midstorm.org/~telles/2010/05/06/dump-nao-e-backup/" target="_blank">ótimo artigo do Fábio Telles Rodriguez</a>, onde o mesmo deixa claro que Dump não é considerado a melhor forma de realizar um backup. Vamos lá.</p>
<p>Imaginemos o seguinte cenário:</p>
<ul>
<li>Uma rede controlada por um Windows Active Directory &#8211; AD (Windows 2003 ou maior);</li>
<li>Um servidor de arquivos na rede, que pode estar rodando na mesma máquina do AD ou em outra;</li>
</ul>
<ul>
<li>Servidor Linux (Ubuntu ou outro qualquer) e rodando o SGBD PostgreSQL 8.x;</li>
</ul>
<p>A idéia é o seguinte:</p>
<ul>
<li>Uma vez por dia o SGBD PostgreSQL irá gerar um Dump da base de dados, através de uma tarefa agendada na <a href="http://www.zago.eti.br/agenda.html" target="_blank">Crontab</a>.</li>
<li>O dump gerado será armazenado em um diretório na mesma máquina do SGBD (não é uma boa prática deixar na mesma máquina) e uma cópia do mesmo será enviado para o servidor de arquivos Windows.</li>
</ul>
<p><strong>Mãos a massa:</strong></p>
<ol>
<li>Vamos considerar que o servidor Linux seja Ubuntu (ou debian) . Se estiver utilizando CentOS  é só instalar os mesmos pacotes pelo Yum Instal;</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Instalando os requisitos:</strong></span></p>
<p># apt-get install samba samba-common smbfs smbclient</p>
<p><em>Criando a pasta que servirá de montagem:</em></p>
<p># mkdir /mnt/ntserver</p>
<p><em>No servidor de domínio, Windows Server &#8211; Active Directory, você deve ter um usuário com privilégio de escrita na pasta compartilhada. Basta executar a linha abaixo para testar a montagem:</em></p>
<p># mount -t smbfs //<strong>192.168.0.10/pasta_compartilhada</strong> /mnt/ntserver -o username=<strong>usuario_de_dominio</strong>,password=<strong>senha_de_dominio</strong></p>
<p><em> Claro trocando os termos em negrito para os da sua rede.</em></p>
<p># ls /mnt/ntserver</p>
<p><em>Com este comando deve listar o conteudo da pasta campartilhada lá do servidor de arquivos Windows. Ok, agora, vamos desmontar:</em></p>
<p># umount /mnt/ntserver</p>
<p><span style="text-decoration: underline;"><strong>Criando o script de backup do PostgreSQL</strong></span></p>
<p><em></em><em>Criando a pasta onde ficará armazenado localmente os Dumps</em></p>
<p># mkdir /home/bkp_pg</p>
<p><em>Crie o arquivo chamado bkp.sh</em></p>
<p><em></em># vim /etc/init.d/bkp.sh</p>
<p><em>Insira o seguinte conteúdo:</em></p>
<pre class="brush: shell">#!/bin/sh
# script que gera backup de bases de dados PostGreSQL
# Referencia: http://www.htmlstaff.org/postgresqlmanual/app-pgdump.html
# Jonas Ferreira - jonas.ferreira@gmail.com - http://jf.eti.br
# C 2010 03 19
#

# VARIAVEIS ##################
export PGPASSWORD=postgres            # Exportando a senha do PostGreSQL para o ambiente (Ubuntu)
vU=&quot;postgres&quot;                          # Usuario no PostGreSQL
vP=&quot;postgres&quot;                        # Senha
vB=nome_base                             # Base De dados
vBI=&quot;/usr/lib/postgresql/8.3/bin/&quot;     # Diretorio raiz dos binarios do PostGreSQL
vR=&quot;/home/&quot;                                # Diretorio raiz
vD=&quot;bkp_pg/&quot;                     # Destino do Backup
vPre=&quot;basePG&quot;                       # Prefixo no nome do arquivo de saida
vE=&quot;.dmp&quot;                              # extencao do arquivo de saida
vH=&quot;localhost&quot;                      # Host do servidor
vAno=`date +%Y`                     #Ano
vMes=`date +%m`                     #Mes
vDia=`date +%d`                     #Dia
vHor=`date +%H`                     #Hora
vMin=`date +%M`                     #Min
vCod=`date +%N`                     #date [date (GNU coreutils) 5.3.0]
vDat=&quot;$vAno$vMes$vDia-$vHor$vMin-$vCod&quot;
vA=$vPre&quot;-&quot;$vB&quot;-&quot;$vDat$vE

# VALIDACAO ##################
if [ -z $vU ]; then
echo &quot;Sem usuario&quot;;
exit 0;
fi
if [ -z $vP ]; then
echo &quot;sem senha&quot;;
exit 0;
fi
if [ -z $vB ]; then
echo &quot;informe o nome da base de dados&quot;;
exit 0;
fi

# BACKUP #####################
echo &quot;# Gerando backup. Aguarde...&quot;
echo &quot;# Destino: $vR$vD&quot;
echo &quot;# Nome do arquivo: $vA&quot;

echo &quot;#################################&quot;

echo &quot;# Compactando backup. Aguarde...&quot;

# Caso queira gerar com inserts (arquivo fica maior)
#$vBI&quot;&quot;pg_dump -U $vU -h $vH --inserts $vB | gzip -c &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; $vR$vD$vA.out.gz

# Caso queira gerar com copy (arquivo fica menor)
$vBI&quot;&quot;pg_dump -U $vU -h $vH  $vB | gzip -c &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; $vR$vD$vA.out.gz

echo &quot;#################################&quot;
echo &quot;# Transferindo o o arquivo para o servidor Windows...&quot;

# Montando a pasta
mount -t smbfs //192.168.0.10/pasta_compartilhada /mnt/ntserver -o username=usuario_de_dominio,password=senha_de_dominio

# copiando o arquivo
cp $vR$vD$vA.out.gz /mnt/ntserver

# desmontando a pasta
umount /mnt/ntserver

# limpando a variavel de ambiente
export PGPASSWORD=
exit
</pre>
<p>&nbsp;</p>
<p><em>Setando permissão de execução no script:</em><em><br />
</em></p>
<p># chmod +x /etc/init.d/bkp.sh</p>
<p>Colocando o <em>script na Crontab:<br />
</em></p>
<p># crontab -e</p>
<p>Adicione a seguinte linha:</p>
<p>#Realizando Backup do PostgreSQL &#8211; Todos os dias a meia noite<br />
00 00 * * * /etc/init.d/bkp.sh</p>
<p><em>Salve o arquivo e pronto, já pode testar:</em></p>
<p># /etc/init.d/bkp.sh</p>
<p>Como saída, você verá algo como:</p>
<p># Gerando backup. Aguarde&#8230;<br />
# Destino: /home/bkp_pg/<br />
# Nome do arquivo: basePG-nome_base-20111116-2012-048760000.dmp<br />
#################################<br />
# Compactando backup. Aguarde&#8230;<br />
#################################<br />
# Transferindo o o arquivo para o servidor Windows&#8230;</p>
<p>Verifique na pasta de destino se foi criado o arquivo:</p>
<p># ls /home/bkp_pg</p>
<p><em>Deve listar o arquivo compactado:</em></p>
<p>basePG-nome_base-20111116-2012-048760000.dmp.out.gz</p>
<p>Verifique também lá no servidor de arquivo do Windows, na pasta compartilhada, se este mesmo arquivo existi por lá.</p>
<p>Pronto, você acabou de implementar uma solução de Dump de uma base PostgreSQL e transferiu para um servidor de arquivos Windows. Espero que seja útil para você.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/howto-gerando-dump-do-postgresql-e-transferindo-o-arquivo-para-uma-maquina-com-windows-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deletando registros com mais de 30 dias &#8211; MySQL</title>
		<link>http://jf.eti.br/deletando-registros-com-mais-de-30-dias-mysql/</link>
		<comments>http://jf.eti.br/deletando-registros-com-mais-de-30-dias-mysql/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 23:01:34 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2161</guid>
		<description><![CDATA[Se você quiser excluir registros com mais de X dias no MySQL, há uma maneira simples de fazer: DELETE FROM tabela WHERE date &#60; DATE_SUB(NOW(), INTERVAL 30 DAY);]]></description>
			<content:encoded><![CDATA[<p>Se você quiser excluir registros com mais de X dias no MySQL, há uma maneira simples de fazer:</p>
<pre class="brush: sql">DELETE FROM tabela WHERE date &lt; DATE_SUB(NOW(), INTERVAL 30 DAY);</pre>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/deletando-registros-com-mais-de-30-dias-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schema Sync: Sincronização de esquemas entre Banco de Dados MySQL</title>
		<link>http://jf.eti.br/schema-sync-sincronizacao-de-esquemas-entre-banco-de-dados-mysql/</link>
		<comments>http://jf.eti.br/schema-sync-sincronizacao-de-esquemas-entre-banco-de-dados-mysql/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 15:10:09 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2103</guid>
		<description><![CDATA[Schema Sync é uma interessante ferramenta que pode te ajudar muito, por exemplo, considere o seguinte caso: Estamos trabalhando em dois ambientes distintos, um de desenvolvimento e outro de produção. No ambiente de desenvolvimento realizamos várias modificações no esquema de Banco de Dados, até chegar o momento de precisarmos aplicar tais modificações no Banco de [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://www.devart.com/dbforge/mysql/studio/images/schema-data-sync-logo.gif" alt="" width="177" height="196" /></p>
<p><a href="http://schemasync.org/" target="_blank">Schema Sync</a> é uma interessante ferramenta que pode te ajudar muito, por exemplo, considere o seguinte caso:</p>
<ul>
<li>Estamos trabalhando em dois ambientes distintos, um de desenvolvimento e outro de produção. No ambiente de desenvolvimento realizamos várias modificações no esquema de Banco de Dados, até chegar o momento de precisarmos aplicar tais modificações no Banco de produção. Se não tivermos feito uma lista de cada alteração (não considerando ferramentas que armazenam logs das transações) ai teremos um grande problema.</li>
</ul>
<p>Justamente ai que entra o <a href="http://schemasync.org/" target="_blank">Schema Sync</a>, que basicamente faz a comparação das Bases de Dados (desenvolvimento e produção) e gera um script.sql com as mudanças para que você possa aplicar no ambiente de produção, além disso também gera um script para reverter as mudanças caso tenha feito algo errado.</p>
<p>Muito útil&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/schema-sync-sincronizacao-de-esquemas-entre-banco-de-dados-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Postgresql &#8211; Retornando o nome dos campos de uma tabela que sejam not null</title>
		<link>http://jf.eti.br/postgresql-retornando-o-nome-dos-campos-de-uma-tabela-que-sejam-not-null/</link>
		<comments>http://jf.eti.br/postgresql-retornando-o-nome-dos-campos-de-uma-tabela-que-sejam-not-null/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 22:34:01 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2072</guid>
		<description><![CDATA[$sql_colnotnull = &#34;SELECT c.column_name FROM information_schema.columns c WHERE c.column_name &#60;&#62; &#039;id&#039; and c.is_nullable = &#039;NO&#039; and table_name = &#039;$tablename&#039;&#34;;]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.credativ.com/de/static/postgreslogo.png" alt="" /></p>
<pre class="brush: sql">
$sql_colnotnull = &quot;SELECT c.column_name FROM information_schema.columns c WHERE c.column_name &lt;&gt; &#039;id&#039; and c.is_nullable = &#039;NO&#039; and table_name = &#039;$tablename&#039;&quot;;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/postgresql-retornando-o-nome-dos-campos-de-uma-tabela-que-sejam-not-null/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resetando a senha de Root do Mysql</title>
		<link>http://jf.eti.br/resetando-a-senha-de-root-do-mysql/</link>
		<comments>http://jf.eti.br/resetando-a-senha-de-root-do-mysql/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 16:19:36 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=1982</guid>
		<description><![CDATA[Como sempre esqueço com fazer isso, vou deixar aqui, pra quando eu precisar novamente: Como resetar a senha de Root do Mysql =================================== [root@servidor ~]# lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME mysqld 31792 mysql 3u IPv4 434089 TCP *:mysql (LISTEN) [root@servidor ~]# kill -9 31792 [root@servidor ~]# /etc/init.d/mysql start [...]]]></description>
			<content:encoded><![CDATA[<p>Como sempre esqueço com fazer isso, vou deixar aqui, pra quando eu precisar novamente:</p>
<p>Como resetar a senha de Root do Mysql<br />
===================================</p>
<pre class="brush: shell">[root@servidor ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 31792 mysql 3u IPv4 434089 TCP *:mysql (LISTEN)
[root@servidor ~]# kill -9 31792
[root@servidor ~]# /etc/init.d/mysql start
Mysql Started

[root@servidor ~]# mysql
Access denied for user ‘root’@&#039;localhost’ (using password: NO)

[root@servidor ~]# /etc/init.d/mysql stop

[root@servidor ~]# mysqld_safe –skip-grant-tables &amp;amp;

[root@servidor ~]#
[root@servidor ~]# mysql -u root
mysql&amp;gt;
mysql&amp;gt; use mysql;
mysql&amp;gt; update user set password=PASSWORD(“NEW-ROOT-PASSWORD”) where
User=’root’;
mysql&amp;gt; flush privileges;
mysql&amp;gt; quit

NEW-ROOT-PASSWORD above is whatever password you want to set.

[root@servidor ~]# # /etc/init.d/mysql stop
[root@servidor ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 31792 mysql 3u IPv4 434089 TCP *:mysql (LISTEN)
[root@servidor ~]# kill -9 31792
[root@servidor ~]# fuser -k /usr/bin/mysqld_safe ( in
case you see mysql process is still running )

[root@servidor ~]# vi /root/.my.cnf
[root@servidor ~]# cat /root/.my.cnf
[client]
user=”root”
pass=”NEW-ROOT-PASSWORD”
[root@servidor ~]#

[root@servidor ~]# service mysql restart

[root@servidor ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.21-standard-log

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql&amp;gt; quit
Bye
[root@servidor ~]#
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/resetando-a-senha-de-root-do-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

