<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>EEEEEE Jão!!!</title>
	<atom:link href="http://joaocosme.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://joaocosme.wordpress.com</link>
	<description>#!/bin/bash aventuras de um Nerd disfarçado de bombado...</description>
	<lastBuildDate>Fri, 30 Oct 2009 17:49:57 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='joaocosme.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/1b5551b5cda379453923fe4828a78ca3?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>EEEEEE Jão!!!</title>
		<link>http://joaocosme.wordpress.com</link>
	</image>
			<item>
		<title>HA em Postgresql = Warm Stand By + HeartBeat + HAPM</title>
		<link>http://joaocosme.wordpress.com/2009/10/30/ha-em-postgresql-warm-stand-by-heartbeat-hapm/</link>
		<comments>http://joaocosme.wordpress.com/2009/10/30/ha-em-postgresql-warm-stand-by-heartbeat-hapm/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 13:55:13 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Banco de dados]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postgresql]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=155</guid>
		<description><![CDATA[Prefácio hehehe
Ja faz um bom tempo que eu gostaria de postar novamente, ando muito ocupado não sei se vocês sabem, mas estou no SERPRO em Porto Alegre agora envolvido não mais com o desenvolvimento em si do EXPRESSO  mas com a  a PRODUÇÃO!! Maravilha tudo o que eu queria&#8230;.
AAAAA como é bom o cheiro dos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=155&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h1>Prefácio hehehe</h1>
<p>Ja faz um bom tempo que eu gostaria de postar novamente, ando muito ocupado não sei se vocês sabem, mas estou no SERPRO em Porto Alegre agora envolvido não mais com o desenvolvimento em si do EXPRESSO  mas com a  a PRODUÇÃO!! Maravilha tudo o que eu queria&#8230;.</p>
<p>AAAAA como é bom o cheiro dos servidores, aquele lindo terminal e finalmente Postgresql novamente &#8230;. O bom filho a casa retorna! Finalmente retornei com postgresql , não com a mesma exclusividade mas já é uma ótima!!</p>
<h1>Mandando o SALVE!!</h1>
<p>Galera gostaria de mandar um salve pros amigos que reencontrei no PGCON2009 e para os novas amizades que foram conquistadas , depois posto sobre o PGCON!!</p>
<p>Um salve pro meu brother Euler&#8230; esse já é irmão!!!</p>
<p>Um salve pro Minerin &#8220;Cara de coveiro&#8221;&#8230;</p>
<p>Um salve pro Léo Lindo e para a Cris&#8230;.</p>
<p>Um salve pro Jovem &#8220;J&#8221;</p>
<p>Um salve pro Telles</p>
<p>Um salve pro Zé do Cleyssom de BSB (Agora convertido em Postgresql <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>Um salve pro Diogo Biazus</p>
<p>Um salve pro pequeno inseto (Ele sabe quem é)</p>
<p>Um salve pro Roberto Mello (Cara 10 &#8230;.. PRAZER do Ca!@#$$# conhecer esse cabra)</p>
<p>Um salve pro Francisco , (Outro cara 10 &#8230;. que conheci tb em mais um evento)</p>
<p>Um salve pro GUTO de BSB&#8230;.</p>
<p>Um salve pro &#8220;Rolon Boy&#8221; (Esse tb sabe quem é hehhe)</p>
<p>Um salve pro DUTRA.</p>
<p>Um salve pra Marisa (Valeu Marisaaaaaaaa&#8230;&#8230;&#8230;.. )</p>
<p>Um salve pro &#8230;. pra&#8230;&#8230;</p>
<p>Um salve pro  Galera do MEC ( O Rodrigão e o Marcelo)</p>
<p>Um salve pros brothers da CELEPAR( esqueci o nome foi mal)</p>
<p>Um salve pro Emanuel &#8220;EL Aprendiz&#8221; da Argentina !</p>
<p>Um salve pra geral que prestigiou o evento e a minha palestra!!</p>
<p style="text-align:center;"><span style="color:#888888;"><img class="aligncenter size-medium wp-image-184" title="2009-09-14-153739" src="http://joaocosme.files.wordpress.com/2009/10/2009-09-14-153739.jpg?w=300&#038;h=225" alt="2009-09-14-153739" width="300" height="225" /></span></p>
<h1><strong>Voltando ao Post&#8230;.</strong></h1>
<p>Vejo muita gente comentando sobre Replicação , alta disponibilidade, balanceamento de carga. Em vários eventos de SL são debatidos esses temas e como está na semana do PGCON 3 edição , acho que seria uma boa soltar um post de interesse de muita gente, pois é galera ai vai &#8230;. Vamos ganhar um dinheirinho com consultoria ai&#8230;.</p>
<h1><strong>Cenário</strong></h1>
<p>Não irei entrar em conceitos como<strong> PITR, WAL</strong> , pá e bola&#8230;. Então são pré-requisitos para um bom entendimento!! Não que não consiga implementar sem esses conceitos mas véio de boa&#8230;. Estuda!! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h1>Um servidor primário e um servidor secundário.</h1>
<p>O  servidor  primário recebe as requisições  feliz da vida  e tranquilo , o servidor secundário fica em Stand-By em modo seca pimenteiro = on hehehe , pois ele não pode ser não pode ser acessado. Em um determinado momento meu servidor primário deixa de prover o serviço e&#8230;..</p>
<p>Meu servidor em Stand-by cheio de moral e doido para mostrar serviço, assume a posição  do servidor primário de maneira  &#8220;transparente&#8221; ao usuário&#8230; pois é &#8230; nem tudo é perfeito e o afobado jovem em stand by pode deixar um dado ou outro de lado <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Nessa brincadeira ai  já traçamos alguns conceitos importantes : <strong>Alta-disponibilidade , Replicação Síncrona e uma característica importante na implementação do stand-by (Não pode ser acessado nem para consulta)</strong></p>
<p><img class="aligncenter size-medium wp-image-156" title="HA-PG" src="http://joaocosme.files.wordpress.com/2009/10/ha-pg.jpg?w=312&#038;h=171" alt="HA-PG" width="312" height="171" /></p>
<p>Para alcançar o objetivo iremos utilizar  como coadjuvantes os softwares<strong> HAPM</strong> e o<strong> HeartBeat</strong> que nos possibilitaram a Alta-disponibilidade do serviço.</p>
<h1><strong>Configurando o Ambiente!</strong></h1>
<p>Anota ai jovem&#8230;</p>
<p><strong>Postgresql-8.3</strong><br />
<strong>postgresql-contrib-8.3 </strong><br />
<strong>heartbeat-2</strong><br />
<strong>nfs-kernel-server</strong><br />
<strong>hapm</strong></p>
<p>Vamos utilizar o<strong> Debian Lenny</strong> como exemplo e instalar os pacotes acima nas duas máquinas:</p>
<p><strong><em>apt-get install postgresql-8.3 heartbeat-2 nfs-kernel-server hapm  postgresql-8.3-contrib</em></strong><strong> </strong></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;">Uma vez instalados os pacotes nos dois servidores<span style="font-family:Arial;"> criaremos um local para arquivar os segmentos <strong><em>WAL</em></strong>. É altamente recomentados gravar os segmentos<strong> </strong><em><strong>WAL</strong> </em>remotamente do servidor primário, pois se o servidor primário cair , não teremos  acesso aos segmentos <strong>WAL</strong>, o que comprometeria a replicação e consequentemente a disponibilidade do sistema.</span></p>
<p><span style="font-family:Arial;"> Os arquivos  devem ter permissões de escrita e leitura para ambos os servidores. No exemplo que estamos demonstrando a técnica, criaremos um compartilhamento<strong> <em>NFS</em></strong> no servidor Stand By e o servidor primário exportará os arquivos<strong> WAL(cansei de colocar o Wal em negrito)</strong> para este determinado local. Tenha a certeza que o diretório pertença ao usuário postgres. Entendeu??</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;">Criação do diretório na máquina slave  para arquivamento  no qual o usuário PostgreSQL pode escrever e ler:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p>Como usuário root:</p>
<p><strong><span style="font-family:Arial;"><em>mkdir /psql-archive </em></span></strong></p>
<p><strong><span style="font-family:Arial;"> <em>chown postgres.postgres /pgsql-archive </em></span></strong></p>
<p><strong><span style="font-family:Arial;"> <em> echo &#8220;/psql-archive IP_MASTER (rw,sync,no_subtree_check)&#8221; &gt;&gt; /etc/exports </em></span></strong></p>
<p><strong><span style="font-family:Arial;"> <em>exportfs -a </em></span></strong></p>
<p><strong><span style="font-family:Arial;"><em> su postgres -c &#8220;touch /psql-archive/mounted&#8221; </em></span></strong></p>
<p><strong><span style="font-family:Arial;"><em><br />
</em></span></strong></p>
<h1><strong><span style="font-family:Arial;">O que os comandos acima fazem??</span></strong></h1>
<p><span style="font-family:Arial;">Criamos um diretório chamado <strong>/psql-archive</strong> cujo o dono é o safadinho do usuário postgres e permitimos que a máquina </span><span style="font-family:Arial;">PRIMÁRIA</span><strong><span style="font-family:Arial;"> </span></strong><span style="font-family:Arial;">possa montar o diretório</span><strong><span style="font-family:Arial;"> </span></strong><span style="font-family:Arial;">remotamente podendo escrever e ler nele&#8230; já ia esquecer ,também criamos de ante-mão um arquivo lá no diretório chamado <strong>mounted</strong>&#8230; (aí está a mágica!!)</span></p>
<h1><strong>Agora na máquina primária</strong></h1>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;"><strong><span style="font-family:Arial;"><em>mkdir /psql-archive </em></span></strong></p>
<p><strong><span style="font-family:Arial;"><em> chown postgres.postgres /psql-archive </em></span></strong></p>
<p><strong><span style="font-family:Arial;"><em> mount IP_SLAVE:/psql-archive /psql-archive </em></span></strong></p>
<p><strong><span style="font-family:Arial;"><em><br />
</em></span></strong></p>
<h1><strong><strong><span style="font-family:Arial;">O que os comandos acima fazem??</span></strong></strong></h1>
<p><strong> </strong></p>
<p><span style="font-family:Arial;">Agora na máquina primária criamos um diretório chamado<strong> /psql-archive</strong> cujo o dono  é o postgres montamos remotamente o diretório da máquina slave psql-archive no <strong>/psql-archive</strong> do primário.</span></p>
<p><span style="font-family:Arial;"><br />
</span></p>
<h1><strong><span style="font-family:Arial;">Ainda na máquina primária iremos ativar o recurso de WALs :</span></strong></h1>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;"><span style="font-family:Arial;"><em>no arquivo</em><span style="font-style:normal;"> </span><span style="font-style:normal;"><strong>/etc/postgresql/8.3/main/postgresql.conf </strong></span><em>alterar as seguintes linhas: </em></span></p>
<p><strong><span style="font-family:Arial;"><em> <span style="font-weight:normal;">archive_mode = on </span></em></span></strong><em> </em></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em> archive_command = &#8220;test -f /psql_archive/mounted &amp;&amp; test ! -f /psql_archive/%f 		&amp;&amp; rsync -a %p /psql_archive/%f&#8221;</em></span></strong></p>
<p><span style="font-family:Arial;">Que lindo o archive_command!!! Fandásdigo como diria tiririca, confesso esse eu copiei  hehehhe mas eu sei o que ele faz <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p><span style="font-family:Arial;">Vamos por partes!!!</span></p>
<p><span style="font-family:Arial;">arvhice command = (condicao 1) &amp;&amp; (condicao 2)</span></p>
<p><span style="font-family:Arial;">Condição 1 = teste -f /psql/mounted </span></p>
<p><span style="font-family:Arial;"> Lembra do comando<strong> touch /psql/mounted</strong> no servidor seca pimenteiro, ops .. escravo?? O que ele faz é verificar se o arquivo <strong>mounted</strong> existe, se ele existir significa que a partição remota está montada  <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <em> </em></span></p>
<p><span style="font-family:Arial;">Condição 2 = <em>test ! -f /psql_archive/%f 		&amp;&amp; rsync -a %p /psql_archive/%f </em></span></p>
<p><span style="font-family:Arial;">Verifica se já existe o arquivo Wall no secundário , se não existir ele copia o Wal file para lá <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p><span style="font-family:Arial;">o &#8220;&amp;&amp;&#8221;,  elementar meu caro as duas condições tem que serem válidas ou seja </span></p>
<p><span style="font-family:Arial;">(particao tem que estar montada ) e (nao deve existir o arquivo no diretorio la no escravo)<br />
</span></p>
<p style="font-weight:normal;">
<p style="font-weight:normal;"><span style="font-family:Arial;"><span style="font-style:normal;">Reiniciar o serviço do PostgreSQL</span></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><span style="font-style:normal;"> </span><strong><em>/etc/init.d/Postgresql-8.3 restart</em></strong></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;">A Partir deste momento meu caro parabéns, já está gerando arquivos Wals e o mais legal, lá no diretório do escravo&#8230; nossa imagina o cabra ter que suportar ter que ser secundário e neguin escrevendo no diretório dele hehehh.</span></p>
<h3>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;">Prova dos 9!</span></strong></p>
</h3>
<p style="font-weight:normal;"><span style="font-family:Arial;">Vamos lá&#8230; </span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Agora devemos fazer o backup básico do diretório <strong>$PGDATA</strong>, sem a necessidade de parar o banco de dados , isso no servidor primário logicamente.</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;font-weight:normal;"><strong><span style="font-family:Arial;"><em>psql  -U postgres </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>Bem vindo ao psql 8.3.3, o terminal iterativo do PostgreSQL. </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>Digite:  \copyright para mostrar termos de distribuição </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\h para ajuda com comandos SQL </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\? para ajuda com comandos do psql </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\g ou terminar com ponto-e-vírgula para executar a consulta </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\q para sair </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>postgres=# select pg_start_backup(&#8216;meu_backup&#8217;); </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>pg_start_backup </em></span></strong></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;font-weight:normal;"><strong><span style="font-family:Arial;"><em>2/CE005F40 </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>(1 registro) </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>postgres=# \q </em></span></strong></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;font-weight:normal;"><strong><span style="font-family:Arial;"><em># su &#8211; postgres </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em># cd /var/lib/Postgresql/8.3/ </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>$ tar -czf /psql-archive/base_backup.tar.gz * </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>tar: Removendo `/&#8217; inicial dos nomes dos membros </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>tar: main/pg_xlog/0000000100000002000000CF: arquivo alterado enquanto estava sendo lido </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>&#8230;.. </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>&#8230;.. </em></span></strong></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>&#8230;.. </em></span></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Estamos gerando um backup a fisico do diretório de dados e colocando no diretório compartilhado <strong>/psql-archive</strong> . Uma vez terminado o backup, conectar no banco de dados e efetuar o seguinte comando: </span></p>
<p style="font-style:normal;font-weight:normal;">
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;font-weight:normal;"><strong><span style="font-family:Arial;"><em>psql  -U postgres -h localhost </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>Bem vindo ao psql 8.3.3, o terminal iterativo do Postgresql. </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>Digite:  \copyright para mostrar termos de distribuição </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\h para ajuda com comandos SQL </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\? para ajuda com comandos do psql </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\g ou terminar com ponto-e-vírgula para executar a consulta </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\q para sair </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>conexão SSL (cifra: DHE-RSA-AES256-SHA, bits: 256) </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>postgres=# select pg_stop_backup(); </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>pg_stop_backup </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>&#8212;&#8212;&#8212;&#8212;&#8212;- </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>2/D000BC0C </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>(1 registro) </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="margin-bottom:0;"><strong><span style="font-family:Arial;"><em>postgres=# \q</em></span></strong></p>
<p style="margin-bottom:0;"><strong><span style="font-family:Arial;"><em><br />
</em></span></strong></p>
<h1>
<p style="margin-bottom:0;"><strong>Na máquina 			secundária novamente </strong></p>
</h1>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> <strong>mv /var/lib/Postgresql/8.3/main /var/lib/Postgresql/8.3/main.old </strong></em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;">Estamos renomeando o $PGDATA da máquina secundária para $PGDATA.old<br />
</span></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em> mv /psql-archive/base_backup.tar.gz  /var/lib/Postgresql/8.3 </em></span></strong></p>
<p style="font-weight:normal;"><span style="font-family:Arial;">Copiando o backup do servidor primário para o diretório /<strong>var/lib/Postgresql;8.3</strong><br />
</span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> <strong>tar -xzvf /var/lib/Postgresql/8.3 </strong></em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;">Mandando bala descompactando o danado&#8230;<em><br />
</em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> <strong>cd /var/lib/Postgresql/8.3/main/ </strong></em></span></p>
<p><span style="font-family:Arial;">Entrando no diretório $PGDATA novo do secundário&#8230;<em><br />
</em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> <strong>rm -Rf ./pg_xlog/* </strong></em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;">Removendo os arquivos do pg_xlog do primário&#8230;. <strong>Cansei&#8230;</strong></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;">Vamos vamos&#8230;. Vamos !!!!!</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> </em><span style="font-style:normal;">Criação do arquivo </span><span style="font-style:normal;"><strong>recovery.conf</strong></span><span style="font-style:normal;"> na máquina para o modo contínuo de 				recovery dentro do $PGDATA ( /var/lib/Postgresql/8.3/main/) com a seguinte linha: </span></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> <strong>restore_command = &#8216;</strong></em></span><strong>/usr/lib/postgresql/8.3/bin/<span style="font-family:Arial;"><em>pg_standby -d -l -r 3 -s 60 -t /psql_archive/trigger.done  /psql_archive 	%f %p %r 2&gt;&gt;/tmp/pg_standby.log&#8217; </em></span></strong></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Essa linha basicamente indica o Postgresql para continuar o <em>recovery</em> até encontrar um arquivo chamado <strong>/psql-archive/trigger.done</strong>, ou seja , quando o servidor primário cair, um arquivo trigger.done será criado e o procedimento da subida do servidor slave é iniciado.</span></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;"><br />
</span></p>
<h1 style="font-style:normal;font-weight:normal;"><strong><span style="font-family:Arial;">Iniciando o servidor Stand by</span></strong></h1>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom:0;font-weight:normal;"><span style="font-family:Arial;"><em><strong>#  /etc/init.d/Postgresql-8.3 start </strong></em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>* Starting Postgresql 8.3 database server </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>[ OK ] </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em># <strong>tail -f /tmp/pg_standby.log </strong></em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Keep archive history    : 000000000000000000000000 and later </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>running restore         : OK </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Trigger file            : /psql-archive/trigger.done </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Waiting for WAL file    : 000000020000000200000088 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>WAL file path           : /psql-archive/000000020000000200000088 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Restoring to&#8230;         : pg_xlog/RECOVERYXLOG </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Sleep interval          : 60 seconds </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Max wait interval       : 0 forever </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Command for restore     : ln -s -f &#8220;/psql-archive/000000020000000200000088&#8243; &#8220;pg_xlog/RECOVERYXLOG&#8221; </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>Keep archive history    : 000000000000000000000000 and later </em></span></p>
<p style="font-weight:normal;"><strong>Que lindo Que lindo &#8230;. Vamos Vamos&#8230;</strong></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> </em><span style="font-style:normal;">Criação do arquivo </span><span style="font-style:normal;"><strong>recovery.conf</strong></span><span style="font-style:normal;"> na máquina para o modo contínuo de 				recovery dentro do $PGDATA ( /var/lib/Postgresql/8.3/main/) com a seguinte linha: </span></span></p>
<p style="font-weight:normal;">
<p style="font-weight:normal;"><span style="font-family:Arial;"><em> <strong>restore_command = &#8216;pg_standby -d -l -r 3 -s 60 -t /psql_archive/trigger.done  /psql_archive 	%f %p %r 2&gt;&gt;/tmp/pg_standby.log&#8217; </strong></em></span></p>
<p style="font-weight:normal;">
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Essa linha basicamente indica o Postgresql para continuar o <em>recovery</em> até encontrar um arquivo chamado <strong>/psql-archive/trigger.done</strong>, ou seja , quando o servidor primário cair, um arquivo trigger.done será criado e o procedimento da subida do servidor slave é iniciado.</span></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;"><br />
</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>#psql  -U postgres -h localhost </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>psql: FATAL:  o sistema de banco de dados está iniciando ou seja esta em restore continuo.</em></span></strong></p>
<p style="font-weight:normal;">????? Num intindi nada!!!???</p>
<p style="margin-bottom:0;"><span style="font-family:Arial;">O servidor está em <em>restore </em>constante!!!! Não temos como acessar o servidor (WARM Stand by Falei isso lá em cimaaa nocomeço do Post)</span></p>
<h1>
<p style="margin-bottom:0;"><strong>Gerando arquivos 			Wals para serem replicados a partir do host primário</strong></p>
</h1>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Começaremos a gerar alguns arquivos Wals .</span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>#<strong> psql  -U postgres </strong></em></span></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>Bem vindo ao psql 8.3.3, o terminal iterativo do Postgresql. </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>Digite:  \copyright para mostrar termos de distribuição </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\h para ajuda com comandos SQL </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\? para ajuda com comandos do psql </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\g ou terminar com ponto-e-vírgula para executar a consulta </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>\q para sair </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>postgres=# create table teste as select * from pg_class, pg_attribute; </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>SELECT </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>postgres=# create table teste1 as select * from pg_class, pg_attribute; </em></span></strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>SELECT </em></span></strong></p>
<p style="font-weight:normal;"><strong><br />
</strong></p>
<p style="font-weight:normal;"><strong><span style="font-family:Arial;"><em>postgres=#\q </em></span></strong></p>
<p style="font-weight:normal;">
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Vários arquivos Wals foram gerados e gravados no diretório especificado no <em><strong>archive_command</strong>, </em>configuração do servidor que no caso, mais uma vez pra não se perder  o tal <strong>/psql-archive</strong> que está montado na máquina primária .<br />
</span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em># <strong>ls -l /psql-archive<br />
</strong></em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>total 738184 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:31 0000000100000002000000CE </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres      246 2009-10-06 16:35 0000000100000002000000CE.00005F40.backup </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:33 0000000100000002000000CF </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:35 0000000100000002000000D0 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:37 0000000100000002000000D1 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:39 0000000100000002000000D2 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:41 0000000100000002000000D3 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:43 0000000100000002000000D4 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:45 0000000100000002000000D5 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:47 0000000100000002000000D6 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:49 0000000100000002000000D7 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000D8 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000D9 </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000DA </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000DB </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000DC </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000DD </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000DE </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000DF </em></span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000E0 </em></span></p>
<p style="margin-bottom:0;"><span style="font-family:Arial;"><em>-rw&#8212;&#8212;- 1 postgres postgres 16777216 2009-10-06 16:51 0000000100000002000000E1</em></span></p>
<p style="margin-bottom:0;"><span style="font-family:Arial;"><em><br />
</em></span></p>
<p style="margin-bottom:0;">
<h1>
<p style="margin-bottom:0;"><strong>Testando a 	replicação para a máquina em Stand By</strong></p>
</h1>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Agora criaremos o arquivo <em>/tmp/trigger.done. </em></span></p>
<p><span style="font-family:Arial;"><em><strong>touch /psql-archive/trigger.done </strong></em></span></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Neste momento, o servidor<em> Stand By </em>detectará que deve sair do modo<em> recovery</em> e levantar o serviço.<strong> </strong>Ou seja, quando o arquivo <strong>/psql-archive/trigger.done</strong> existir, o servidor em  Stand By sai do modo <em>recovery </em>e passa a operar normalmente.<strong> </strong> Você pode logar no servidor Stand By e verificar as tabelas criadas. </span></p>
<p style="font-style:normal;font-weight:normal;">
<h1 style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">To be continued&#8230;</span></h1>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;">Até agora implementamos o Warm Stand by&#8230; Sem alta disponibilidade&#8230;..  o próximo post mostro como garantir a disponibilidade de forma que o servidor escravo assuma o ip do outro servidor mantendo a disponibilidade do serviço&#8230;<br />
</span></p>
<p style="font-style:normal;font-weight:normal;"><span style="font-family:Arial;"><br />
</span></p>
<p style="font-weight:normal;"><span style="font-family:Arial;"><em><br />
</em></span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/155/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=155&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/10/30/ha-em-postgresql-warm-stand-by-heartbeat-hapm/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>

		<media:content url="http://joaocosme.files.wordpress.com/2009/10/2009-09-14-153739.jpg?w=300" medium="image">
			<media:title type="html">2009-09-14-153739</media:title>
		</media:content>

		<media:content url="http://joaocosme.files.wordpress.com/2009/10/ha-pg.jpg?w=300" medium="image">
			<media:title type="html">HA-PG</media:title>
		</media:content>
	</item>
		<item>
		<title>A journey of a thousand miles must begin with a single step&#8230;.</title>
		<link>http://joaocosme.wordpress.com/2009/09/10/a-journey-of-a-thousand-miles-must-begin-with-a-single-step/</link>
		<comments>http://joaocosme.wordpress.com/2009/09/10/a-journey-of-a-thousand-miles-must-begin-with-a-single-step/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 00:59:48 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/2009/09/10/a-journey-of-a-thousand-miles-must-begin-with-a-single-step/</guid>
		<description><![CDATA[       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=154&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=154&subd=joaocosme&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/09/10/a-journey-of-a-thousand-miles-must-begin-with-a-single-step/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
		<item>
		<title>FLAG SEEN PROBLEM + CYRUS + ALL Messages Unread!</title>
		<link>http://joaocosme.wordpress.com/2009/08/10/flag-seen-problem-cyrus-all-messages-unread/</link>
		<comments>http://joaocosme.wordpress.com/2009/08/10/flag-seen-problem-cyrus-all-messages-unread/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 21:27:01 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=151</guid>
		<description><![CDATA[Um determinado usuário reclamava que todas as suas mensagens apareciam como unread. Por mais que ele abrisse e quando logasse novamente no sistema. Analisando os Logs encontrei.
Aug 10 18:11:14 ****** : DBERROR: opening /data/imap/user/q/039&#8230;..seen: cyrusdb error
Solução::
Sem restartar o server, entrei no diretório acima e apaguei o arquivo user.seen
Usuário Feliz e mais um problema resolvido!!
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=151&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Um determinado usuário reclamava que todas as suas mensagens apareciam como unread. Por mais que ele abrisse e quando logasse novamente no sistema. Analisando os Logs encontrei.</p>
<p>Aug 10 18:11:14 ****** : DBERROR: opening /data/imap/user/q/039&#8230;..seen: cyrusdb error</p>
<p>Solução::<br />
Sem restartar o server, entrei no diretório acima e apaguei o arquivo user.seen</p>
<p>Usuário Feliz e mais um problema resolvido!!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=151&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/08/10/flag-seen-problem-cyrus-all-messages-unread/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
		<item>
		<title>Apache + Load Balance + Lenny</title>
		<link>http://joaocosme.wordpress.com/2009/07/27/apache-load-balance-lenny/</link>
		<comments>http://joaocosme.wordpress.com/2009/07/27/apache-load-balance-lenny/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 03:52:47 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=135</guid>
		<description><![CDATA[Por curiosidade, fui atrás de uma solução de balanceamento de carga entre servidores  apache. Aqui no trampo,  o  balanceamento de carga em cima dos servidores apache é feita através de hardware  &#8230;. eu queria ver como seria possível utilizando o próprio apache como proxy reverso, vi que era possível utilizando o mod_proxy do apache
Após dois [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=135&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Por curiosidade, fui atrás de uma solução de balanceamento de carga entre servidores  apache. Aqui no trampo,  o  balanceamento de carga em cima dos servidores apache é feita através de hardware  &#8230;. eu queria ver como seria possível utilizando o próprio apache como proxy reverso, vi que era possível utilizando o <strong>mod_proxy</strong> do apache</p>
<p>Após dois dias, alguns   HOWTOS que não funcionam devido ao problema de balanceamento de sessões (sticksessions) e uma aula de boxe perdida, obtive a solução, BINGO!</p>
<h1><strong>Apache como Proxy Reverso </strong></h1>
<p>Segundo o Wiki &#8230;. &#8220;Proxy reverso é um servidor proxy que é fica na frente de outros servidores. Tipicamente proxy reverso  é usado na frente de servidores web. Todas as conexões vindo da internet endereçadas para um dos servidores web são roteadas  pelo proxy server&#8230; &#8220;</p>
<p>Ou seja, toda e qualquer conexão passa pelo proxy server, que é o ponto de contato entre o cliente e os servidores.</p>
<h1>Razões para utilizar um proxy reverso</h1>
<ul>
<li><strong>Segurança</strong>: o proxy server provê uma camada adicional de segurança separando ou mascarando os tipos de servidores que estão atrás do proxy.</li>
</ul>
<ul>
<li><strong>Encripitação/ SSL acceleration</strong>: Quando sites seguros são criados, a encriptação SSL as vezes não é realizada pelo servidor web e sim pelo proxy reverso que é equipado por um hardware de aceleração SSL.</li>
</ul>
<ul>
<li><strong>Balanceamento de carga</strong>:  Proxy reverso pode distribuir a carga em vários servidores .</li>
</ul>
<ul>
<li><strong>Caching</strong>: Um proxy reverso pode diminuir a carga dos servidores web promovendo cache, diminuindo consideravelmente o  número de requisições nos servidores web.</li>
</ul>
<ul>
<li><strong>Compressão :</strong> O proxy  pode otimizar e comprimir o conteúdo aumentando assim a velocidade.</li>
</ul>
<h1><strong>Cenário </strong></h1>
<p style="text-align:center;"><img class="aligncenter size-medium wp-image-137" title="basicClustered.preview" src="http://joaocosme.files.wordpress.com/2009/07/basicclustered-preview.jpg?w=500&#038;h=270" alt="basicClustered.preview" width="500" height="270" /></p>
<p style="text-align:center;">
<p style="text-align:left;">Cenário bem simples: Um proxy reverso na frente dos servidores apache. Toda e qualquer requisição é feita diretamente no proxy que realiza o balanceamento de carga.</p>
<h1>
<p style="text-align:left;"><strong>Beleza&#8230; ele realiza o balanceamento de carga mas&#8230; meu site não é estático&#8230; tb faço uso de   seções e aí? ele é capaz de saber em qual apache está minha seção??<br />
</strong></h1>
<p style="text-align:left;">Calma jovem, a solução a seguir contempla esse tipo de dúvida!! No proxy será criado um coockie balanceado  que será roteado para o servidor web correto!  <code>That's the point!!</code></p>
<p style="text-align:left;"><code> Esse foi o grande lance da solução. todos os HowTo espalhados exigiam modificações tanto no proxy quanto nos apaches que estão em baixo e esta solução não... só a configuração no proxy.<br />
</code></p>
<h1>
<p style="text-align:left;"><strong>Instalação:</strong></p>
</h1>
<p style="text-align:left;">Com os pacotes do apache e php já instalados devemos ativar o modúlos <strong>mod_proxy , mod_headers .<br />
</strong> A maneira Debian de ser&#8230;<strong> </strong>Digite!<strong><br />
</strong></p>
<p>#<em> a2enmod proxy </em></p>
<p>Module proxy  installed; run /etc/init.d/apache2 force-reload to enable.</p>
<p style="text-align:left;">#<em> a2enmod header</em></p>
<p>Module headers installed; run /etc/init.d/apache2 force-reload to enable.</p>
<h1><strong>Configuração:</strong></h1>
<p>No virtual host do proxy adicione as seguintes configurações</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Header add Set-Cookie &#8220;MYCOOKIE=SOMEVALUE.%{BALANCER_WORKER_ROUTE}e; path=/;&#8221; env=BALANCER_ROUTE_CHANGED</p>
<p>ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=MYCOOKIE</p>
<p>&lt;Proxy balancer://cluster&gt;<br />
BalancerMember http://192.168.1.24 route=www1<br />
BalancerMember http://192.168.1.25  route=www2<br />
&lt;/Proxy&gt;</p>
<p>ProxyPassReverse / http://192.168.1.24/<br />
ProxyPassReverse / http://192.168.1.25/</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>lbmethod : método de balanceamento entre os servidores.<em> </em></p>
<p><em>byrequests |bytraffic| bybusyness : o default é byrequest , vide documentação do  mod_proxy do apache.</em></p>
<p>stickysession=MYCOOKIE</p>
<p><em>nome do cookie balanceado:  O valor é geralmente setado como: <code>JSESSIONID</code> ou  <code>PHPSESSIONID</code></em></p>
<p>BalancerMember: Cada host que compões os servidores web que serão balanceado</p>
<h1>Testando&#8230;</h1>
<p>Utilizando o browser acessamos o nosso proxy  http://ip_do_proxy.  Agora para matar a curiosidade veja os cookies no browser mais precisamente a variavel MYCOOkIE nos cookies do proxy!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=135&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/07/27/apache-load-balance-lenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>

		<media:content url="http://joaocosme.files.wordpress.com/2009/07/basicclustered-preview.jpg?w=300" medium="image">
			<media:title type="html">basicClustered.preview</media:title>
		</media:content>
	</item>
		<item>
		<title>Duelo de Titãs!!!</title>
		<link>http://joaocosme.wordpress.com/2009/04/29/duelo-de-titas/</link>
		<comments>http://joaocosme.wordpress.com/2009/04/29/duelo-de-titas/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 21:25:20 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=121</guid>
		<description><![CDATA[       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=121&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br />
<a href='http://joaocosme.wordpress.com/2009/04/29/duelo-de-titas/maldito2/' title='Duelo de Titãs!!'><img width="150" height="112" src="http://joaocosme.files.wordpress.com/2009/04/maldito2.jpeg?w=150&#038;h=112" class="attachment-thumbnail" alt="Duelo de Titãs!!" title="Duelo de Titãs!!" /></a>
<a href='http://joaocosme.wordpress.com/2009/04/29/duelo-de-titas/maldito-2/' title='Duelo de Titãs'><img width="150" height="112" src="http://joaocosme.files.wordpress.com/2009/04/maldito.jpeg?w=150&#038;h=112" class="attachment-thumbnail" alt="Maldito sendo finalizado" title="Duelo de Titãs" /></a>

  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=121&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/04/29/duelo-de-titas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
		<item>
		<title>Equipe de desenvolvimento do Expresso POA</title>
		<link>http://joaocosme.wordpress.com/2009/04/08/equipe-de-desenvolvimento-do-expresso-poa/</link>
		<comments>http://joaocosme.wordpress.com/2009/04/08/equipe-de-desenvolvimento-do-expresso-poa/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 18:40:36 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=110</guid>
		<description><![CDATA[
Depois de assumir no concurso aqui do SERPRO em POA fui alocado num projeto chamado   EXPRESSO, um projeto muito interessante utilizando Software LIVRE!!! Pois é, caí  no desenvolvimento apesar da minha paixão ser o bom e velho Postgresql que não pretendo deixar de lado mas vamos lá&#8230;.
AHH para quem não me conhece [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=110&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:center;"><img class="aligncenter size-full wp-image-109" title="Equipe de desenvolvimento do Expresso SERPRO POA" src="http://joaocosme.files.wordpress.com/2009/04/expresso1.jpeg?w=669&#038;h=501" alt="Equipe de desenvolvimento do Expresso SERPRO POA" width="669" height="501" /></p>
<p>Depois de assumir no concurso aqui do SERPRO em POA fui alocado num projeto chamado   EXPRESSO, um projeto muito interessante utilizando Software LIVRE!!! Pois é, caí  no desenvolvimento apesar da minha paixão ser o bom e velho Postgresql que não pretendo deixar de lado mas vamos lá&#8230;.</p>
<p>AHH para quem não me conhece eu sou o de camiseta amarela (Olha&#8230; o elefante ali nela!) e um dos braços todo riscado hehehe</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=110&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/04/08/equipe-de-desenvolvimento-do-expresso-poa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>

		<media:content url="http://joaocosme.files.wordpress.com/2009/04/expresso1.jpeg" medium="image">
			<media:title type="html">Equipe de desenvolvimento do Expresso SERPRO POA</media:title>
		</media:content>
	</item>
		<item>
		<title>Tribo de Jah Orai, Vigiai, A Babilônia Vai Cair</title>
		<link>http://joaocosme.wordpress.com/2009/04/08/tribo-de-jah-orai-vigiai-a-babilonia-vai-cair/</link>
		<comments>http://joaocosme.wordpress.com/2009/04/08/tribo-de-jah-orai-vigiai-a-babilonia-vai-cair/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 12:34:40 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[geral]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=105</guid>
		<description><![CDATA[Eu vejo os brotos dessa nova geração
Crianças, garotos, ainda em formação
Eu vejo com apreensão, vivendo nestes tempos
Tempos de dissolução, rebentos sem discernimento
Há tanta mídia, tanta desinformação
Fazendo mais e mais, escravos da ilusão
Mas o dia vai chegar, mais cedo do que se crê
E nada será como está, todos irão se render, a brutal transformação
Não pense nunca [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=105&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Eu vejo os brotos dessa nova geração<br />
Crianças, garotos, ainda em formação<br />
Eu vejo com apreensão, vivendo nestes tempos<br />
Tempos de dissolução, rebentos sem discernimento</p>
<p>Há tanta mídia, tanta desinformação<br />
Fazendo mais e mais, escravos da ilusão<br />
Mas o dia vai chegar, mais cedo do que se crê<br />
E nada será como está, todos irão se render, a brutal transformação</p>
<p>Não pense nunca que o mal triunfará<br />
Nada, ninguém jamais irá mudar, os rumos da criação<br />
Jah é o único, tesouro a se buscar<br />
Desperte, liberte-se, entregue a Jah teu coração</p>
<p>Orai, vigiai, clamai em nome do Senhor<br />
Só Ele pode nos guiar, só Ele vai nos conduzir<br />
A Babilônia em breve vai se abalar<br />
E vai tremer, vai tremer, tremer até cair</p>
<p>Vai, vai, vai, vai ruir, ruir<br />
Vai tremer até cair<br />
Vai, vai, vai, vai ruir, ruir<br />
A Babilônia vai cair</p>
<p>Todo poder transitório ruirá por sua vez<br />
Corroído em suas próprias entranhas de desmandos e, insensatez<br />
Assim passará a Babilônia sob o manto sombrio<br />
Da corrupção, da fome e da guerra<br />
Consumida em múltiplas noites de insônia<br />
Só os mansos e pacíficos herdarão o reino da terra<br />
Soon Babylon shall fall down</p>
<p>Música show de bola!!! Jah rastafari!!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=105&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/04/08/tribo-de-jah-orai-vigiai-a-babilonia-vai-cair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
		<item>
		<title>Começando com o Londiste&#8230;</title>
		<link>http://joaocosme.wordpress.com/2009/04/01/comecando-com-o-londiste/</link>
		<comments>http://joaocosme.wordpress.com/2009/04/01/comecando-com-o-londiste/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 19:56:49 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Postgresql]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=21</guid>
		<description><![CDATA[Mais uma vez resolvi dedicar um tempinho e mexer com as ferramentas do SkyTools, o Londiste. Esse post já tem quase um ano , estava nos seus 80% mas por motivos maiores de falta de tempo, trampo &#8230;. e vcs sabem a &#8220;caixa é uma vidinha de surpresas&#8221;&#8230;
Aproveitando a proximidade do PGDAY ,um dia dedicado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=21&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Mais uma vez resolvi dedicar um tempinho e mexer com as ferramentas do SkyTools, o Londiste. Esse post já tem quase um ano , estava nos seus 80% mas por motivos maiores de falta de tempo, trampo &#8230;. e vcs sabem a &#8220;caixa é uma vidinha de surpresas&#8221;&#8230;</p>
<p>Aproveitando a proximidade do PGDAY ,um dia dedicado ao nosso querido Postgresql  (Estou realmente pensando em bolar alguma palestra com  PL/PROXY e Londiste aqui no PGDAY de Porto Alegre) , resolvi terminar de escrever sobre o londiste, e como promessa é dívida&#8230;.</p>
<p>Primeiro foi o plproxy agora é a vez do londiste. Não esqueci não, vou postar algumas coisinhas que eu fiquei de postar do plproxy, inclusive testes de estress em cima dele, mas como a curiosidade falou mais alto,resolvi passar para o Londiste. A intenção é a seguinte:</p>
<p>Pegar o básico do PLPROXY, Londiste e PGBouncer (próximo post).  Depois de um how to em cima de cada um deles montar um ambiente com os 3 e meter BALA!</p>
<p>As primeira impressões que eu tive do  do londiste foram as seguintes:</p>
<h3>Documentação:</h3>
<p>Se a documentação do PLPROXY não era das melhores a do Londiste xiiiiiiiiiiii, lascou tudo, sinceramente uma negação, e vi os mesmos comentários dos gringos também Muito mal documentado mesmo!!!</p>
<h3>Instalação:</h3>
<p>A instalação foi um tanto penosa, perdi algumas horinhas mesmo batendo cabeça e pra não cometer novamente os erros eu documentei, ou pelo menos acho que documentei hehehe. Para quem não é perseverante, é desistência na certa!!!! E mais uma vez vi gringo reclamar!</p>
<h3>Implementação:</h3>
<p>Colocar o londiste pra rodar e ver suas bases de dados replicando é muito, mas muito simples mesmo.  Chega a ser ridículo ( depois de passar pela instalação&#8230;.), é estremamente simples e chega ser recompensador!!!!</p>
<p>Então que comece a temporada do Londiste!!!!</p>
<h1><strong>O que é replicação???</strong></h1>
<p>Bem, como esse post não é sobre replicação em si, e mais precisamente sobre o Londiste não vamos entrar em todo o mérito!!!</p>
<p>O objetivo de um mecanismo de replicação de dados é permitir a manutenção de de várias cópias idênticas de um mesmo dado em vários servidores de banco de dados (SGBD).</p>
<h1><strong>Para que serve a replicação???</strong></h1>
<h2>Principais benefícios da replicação de dados são:</h2>
<p>Redundância.<br />
Possibilidade de um balanceamento de carga.<br />
Tornar o sistema menos sensível as falhas.</p>
<p>Sugiro que você jovem de uma lidinha sobre replicação ok?? hehhe eu quero é postar sobre o londiste!!!!</p>
<h1>É Pra que serve o Londiste??</h1>
<p>O Londiste é uma ferramenta para replicação assíncrona, master-to-slaves. Assíncrona significa que: Quando o nó master receber uma transação, existe um tempo para essa transação ser replicada nos nós slaves. O contrário disso , a replicação síncrona, ocorre quando as transações ocorrem em todos os nós on-line.</p>
<h1><strong>E como eu poderia usar o Londiste??</strong></h1>
<p>Hum deixa eu ver&#8230;. Onde não fosse necessário o espelhamento dos dados em todos os nós ao mesmo tempo??  Isso depende muito do projeto em questão. As vezes tenho somente 2 servidores de banco de dados, um servidor MASTER que recebe todas as transações e um servidorzinho na senzala, SLAVE que fica lá jogado esperando por receber os dados, depois que o Master fez uso &#8230;. As vezes tenho um servidor master e vários servidores slaves&#8230;.. Então necessitou de dados repetidos em vários servidores, REPLICAÇÂO. Se não possui como pré-requisito que os dados sejam replicados instataneamente ,ASSÍNCRONO.<br />
Nunca se esquecer que eu tenho somente um MASTER e vários SLAVES. Tudo que acontece, o Master é quem manda&#8230; já viu escravo mandar no mestre??</p>
<h1><strong>AAAAA mas o Slony faz isso não????</strong></h1>
<p>Faz sim , slony faz até mais  por permitir cascateamento entre os nós e slave promotion. Ou seja no slony você tem um nó MASTER e outros nós slaves, mas esses nós slaves podem ser Providers para outros nós, cascateando assim os servidores.</p>
<p><strong><br />
</strong></p>
<h1><strong>Mas se o Slony tem mais recursos por que eu utilizaria o Londiste??</strong></h1>
<p>O londiste é muito mais simples de configurar e gerenciar, muito mesmo!!!! Antes o projeto Skype utilizava o próprio Slony, depois começaram a utilizar o Londiste, que foi desenvolvido por eles mesmos.<br />
Motivos!!!! Como já disse, facilidade de configurar e principalmente gerenciar.</p>
<p>Não tá acreditando né? Então toma!!!<br />
Trecho de uma discursão sobre Slony X londiste<br />
&#8230;.<br />
&#8220;I have not been running slony for quite a long time. I last used it at<br />
Skype a few years ago before we moved to our own implementation -<br />
Londiste/pgQ from SkyTools. The main reason was that our cluster got too<br />
big to manage with slony. &#8220;<br />
&#8230;.</p>
<h1><strong>Beleza então vamos começar a instalação!!!!</strong></h1>
<p>Como eu disse no início do post, o grande problema do Londiste, como todos to Skytools é a documentação. Eu estou utilizando o debian 4.0.</p>
<p>Depois de bater muito a cabeça acabei instalando alguns pacotes a mais:</p>
<p><em><strong>apt-get install build-essential python-psycopg libevent-dev  python-all-dev python-all python-support</strong></em></p>
<p>Uma vez instalados esses pacotes, vamos baixar o código fonte:<br />
<em><strong>http://pgfoundry.org/frs/download.php/1813/skytools-2.1.7.tar.gz</strong></em></p>
<p>baixado o código fonte no meu diretório /usr/src:<br />
<em><strong>tar -xzvf skytools-2.1.7.tar.gz</strong></em><br />
<em><strong><br />
./configure &#8211;with-pgconfigdir=/usr/local/pgsql/bin </strong> </em>(No meu caso ok?? deve-se setar o diretório do seu pg_config)<br />
<strong><br />
<em>make &amp;&amp; make install</em></strong><em></em></p>
<p>Se o bicho não reclamou de nada beleza!!! Se reclamou aí vamos ter que sambar um pouco&#8230;.<br />
Pelo o que eu me lembre esses foram os pacotes que eu instalei, eu instalarei do zero novamente pra fazer a prova dos 9 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>PS: O jovenzinho, ele sabe quem é&#8230;. vai falar, já tem o pacote no debian http://packages.debian.org/sid/skytools<br />
Olha o garotinho aí né ??? mas  não ta na versão stable ainda &#8230;. Detalhe: ele mantém o pacote <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1><strong>Criando o Ambiente!!!</strong></h1>
<p>Vamos fazer o seguinte: Iremos criar inicialmente 2 databases, um master e outro slave</p>
<p>create database mestre;<br />
create database escravo;</p>
<p>Em cada database iremos criar 2 tabelas:<br />
<em><strong>create table tabela1(id serial primary key,nome text);<br />
create table tabela2(id serial primary key,nome text);</strong></em></p>
<p>Um detalhe muito importante!!!!! Todas as tabelas devem ter <em><strong>chaves primárias ok</strong></em>??? Não se esqueça disso. Atenção nisso jovem!</p>
<p>O que vai acontecer: Nós iremos realizar algumas operações no banco de dados mestre e elas vão ser replicadas ao banco de dados escravo.</p>
<h1><strong>Criando o primeiro CLUSTER</strong></h1>
<p>Como eu disse a configuração do londiste é muito simples mesmo. Vamos lá:</p>
<h3>Crie um arquivo chamado <strong>replicacao.conf </strong>com o seguinte conteudo:</h3>
<p>[londiste]<br />
job_name = replic</p>
<p>provider_db = dbname=mestre host=localhost user=postgres<br />
subscriber_db = dbname=escravo host=localhost user=postgres</p>
<p>pgq_queue_name = londiste_replic</p>
<p>pidfile = /tmp/pid.%(job_name)s<br />
logfile = /tmp/log.%(job_name)s</p>
<p>loop_delay = 1</p>
<p>connection_lifetime = 30</p>
<h3>Crie um arquivo chamado ticker.ini com o seguinte conteúdo:</h3>
<p>[pgqadm]</p>
<p>job_name = ticker</p>
<p>db = dbname=mestre user=postgres host=localhost</p>
<p>maint_delay_min = 1</p>
<p>loop_delay = 0.5</p>
<p>logfile = /tmp/log.%(job_name)s<br />
pidfile = /tmp/pid.%(job_name)s</p>
<p>use_skylog = 0</p>
<p>connection_lifetime = 21</p>
<p>queue_refresh_period = 10</p>
<h1>Instalando o Londiste no sevidor mestre</h1>
<p>Devemos instalar toda a estrutura para o londiste rodar: A instalação deve ser feita tanto no servidor mestre como no servidor escravo. Essa estrutura consiste em instalar a linguagem plpgsql,plpython&#8230;</p>
<p><em><strong>londiste.py replicacao.conf  provider install</strong></em></p>
<p>Detalhe: <strong>provider</strong><em> o nó que é origem da replicação!</em></p>
<h1>Instalando o Londiste no servidor escravo</h1>
<p>&lt;Em cada um dos nós escravos devemos também instalar toda a estrutura necessária como descrito acima.<br />
<strong><br />
<em>londiste.py replicacao.conf subscriber install</em></strong></p>
<p>Detalhe: <strong>subscriber é </strong>o nó escravo!</p>
<h1>Colocando  o PGQ pra rodar&#8230;</h1>
<p>O Daemon pgqadm deve rodar no servidor master , ele vai ser o cara responsável pelo mecanismo de transporte para implementar a replicação!</p>
<p><em><strong>pgqadm.py -d ticker.ini ticker</strong></em><br />
para verificar se realmente esta rodando o processo vamos dar um ps aux | grep pgq</p>
<p>&#8230;..<br />
root     28190  0.0  0.2  19248  4780 ?        Ssl  14:20   0:00 /usr/bin/python /usr/local/bin/pgqadm.py -d ticker.ini ticker<br />
&#8230;.</p>
<p>Olha que bicho danado hehehehe!!<br />
hummm&#8230; posso também dar um<strong> pgqadmin.py  -d ticker.ini  status</strong><em> ,</em> tenta aí jovem!</p>
<p>Então pra encher o saco e memorizar!!! rodar o daemon pgqadmin no master utilizando o parametro -d ( o -d e pra rodar como daemon) passando o arquivo de configuracao ticker.ini  e a opcao ticker.</p>
<p>Se eu quizer parar o daemon<em>:<strong> pgqadmin.py  -s ticker.ini </strong></em><br />
Curioso? lista o processo novamente!<br />
Memorize os parâmetros e como exercício levante e suba umas 1000 vezes.</p>
<h1>Colocando o daemon de replicação no ar!</h1>
<p>Você precisa rodar o deamon de replicação em cada host, como no nosso caso o host provider e subscriber estão na mesma máquina vamos la!</p>
<p><em><strong>londiste.py -d replicao.ini replay</strong></em></p>
<p>ps  aux | egrep &#8220;lond|pgq&#8221;</p>
<p>root     28568  0.0  0.2  11332  4860 ?        Ss   14:59   0:00 /usr/bin/python /usr/local/bin/londiste.py -d replicacao.ini replay<br />
root     28693  0.0  0.2  19244  4772 ?        Ssl  15:05   0:00 /usr/bin/python /usr/local/bin/pgqadm.py -d ticker.ini ticker<br />
root     28725  0.0  0.0   3020   816 pts/0    R+   15:06   0:00 egrep lon|pgq</p>
<p>Exatamente os caras que eu estava esperando o pgqadm ( que é o cara que fica no master e) o londiste.py ( que é o cara que roda em cada escravo)</p>
<h1>Escolhendo os objetos as serem replicados</h1>
<p>Seguindo o nosso roteiro ja temos os deamons rodando no nó provider e nos nós subscribers. Devemos informar ao Londiste quais tabelas e sequences devemos replicar.</p>
<p>No nosso exemplo iremos replicar 2 tabelas: tabela1 e tabela2.</p>
<p>No nó de origem devemos executar o seguinte comando:</p>
<p><em><strong>londiste.py   replicacao.conf  provider add  tabela1</strong></em></p>
<p><em><strong>londiste.py  replicacao.conf  provider add tabela2</strong></em></p>
<p>Também temos que replicar as sequences criadas pelo campo serial!!!</p>
<p><em><strong>londiste.py replicacao.conf provider add-seq tabela1_id_seq;</strong></em></p>
<p><em><strong>londiste.py replicacao.conf provider add-seq tabela2_id_seq;</strong></em></p>
<p>Po mas nao apareceu mensagem nenhuma pra mim? Está tudo tão obscuro!!!</p>
<p>beleza  jovem mancebo&#8230;. faz o seguinte</p>
<p><em><strong>londiste.py replicacao.conf provider tables</strong></em></p>
<p>public.tabela2<br />
public.tabela1</p>
<p><em><strong>londiste.py replicacao.conf provider seqs</strong></em></p>
<p>public.tabela2_id_seq<br />
public.tabela1_id_seq</p>
<p><em><strong><br />
</strong></em></p>
<p>Detalhe na palavra provider!!!</p>
<p>Agora o mesmo procedimento nos nós de origem!!</p>
<p><em><strong>londiste.py   replicacao.conf  subscriber add  tabela1</strong></em></p>
<p><em><strong>londiste.py  replicacao.conf  subscriber add tabela2</strong></em></p>
<p><em><strong>londiste.py replicacao.conf  subscriber add-seq tabela1_id_seq;</strong></em></p>
<p><em><strong>londiste.py replicacao.conf  subscriber  add-seq tabela2_id_seq;</strong></em></p>
<p>Para dar aquela conferida básica&#8230;.</p>
<p><em><strong>londiste.py replicacao.conf  subscriber tables</strong></em></p>
<p>public.tabela2<br />
public.tabela1</p>
<p><em><strong>londiste.py replicacao.conf subscriber seqs</strong></em></p>
<p>public.tabela2_id_seq<br />
public.tabela1_id_seq</p>
<p>Detalhe na palavra subscriber!!</p>
<h1>Enfim Replicando&#8230;&#8230;UFA!</h1>
<p>Vamos testar agora se a replicação vai funfar ou não, o cabra le o artigo se irrita e quer logo ver a parada funcionar, pelo menos eu sou assim <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Suponha que seu psql esteja no seu PATH e vc esteja usando linux <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . AAAAAAAAAAAAAAA beleza então insere na mão mesmo se preferir!! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>for i in $(seq 1 10000) ; do psql -U postgres -h localhost -c &#8220;insert into tabela1 values(default,&#8217;joao$i&#8217;)&#8221; mestre ; done</p>
<p>Com isso inserimos 10000 registros na tabela1. Após  a inserção dos registros!!</p>
<p>Conecte-se no banco mestre e rode um count(*) na tabela1</p>
<p>Conecte-se no banco de dados escravo e rode um count(*) na tabela2</p>
<p>psql  -U postgres -h localhost -c &#8220;select count(*) from tabela1&#8243; mestre</p>
<p>psql  -U postgres -h localhost -c &#8220;select count(*) from tabela1&#8243; escravo</p>
<h1>Consideração finais&#8230;</h1>
<p>Fica pra amanhã estou realmente cansado&#8230;. Eu prometo que faço e não vai demorar quase um ano!<br />
 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=21&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/04/01/comecando-com-o-londiste/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
		<item>
		<title>Tiesto feat. Julie Thompson &#8211; Do You Feel Me</title>
		<link>http://joaocosme.wordpress.com/2009/03/20/tiesto-feat-julie-thompson-do-you-feel-me-muito-bom-mesmo-trampando-e-escutando-um-som-louco-desses/</link>
		<comments>http://joaocosme.wordpress.com/2009/03/20/tiesto-feat-julie-thompson-do-you-feel-me-muito-bom-mesmo-trampando-e-escutando-um-som-louco-desses/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 13:22:31 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[geral]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=55</guid>
		<description><![CDATA[
As darkness comes you sleep alone
I watch the world I&#8217;ve always known
Turning the corners of your mind
And I look, focus on your smile
Oh the summer breeze
Somehow singing softly into you
Dadada dadada dadada
Hear me whispering
Always there, no matter what you do
I can&#8217;t stop falling when my heart comes calling
Do you feel me?
Warming you like rays of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=55&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="lyrictext" style="text-align:center;">
<div class="lyrictext">As darkness comes you sleep alone<br />
I watch the world I&#8217;ve always known<br />
Turning the corners of your mind<br />
And I look, focus on your smile</div>
<p>Oh the summer breeze<br />
Somehow singing softly into you<br />
Dadada dadada dadada<br />
Hear me whispering<br />
Always there, no matter what you do</p>
<p>I can&#8217;t stop falling when my heart comes calling<br />
Do you feel me?<br />
Warming you like rays of sunshine<br />
Can&#8217;t stop falling when my heart comes calling<br />
Do you feel me?<br />
Warming you like rays of golden light</p>
<p>(Summer Breeze)<br />
(Whispering)<br />
(Summer Breeze)<br />
(Whispering)</p>
<p>In shadows hide your deepest fears<br />
If only you knew I was here<br />
You&#8217;re safe and seldom need my daze<br />
You have the need to be afraid<br />
(I am here)</p>
<p>I can&#8217;t stop falling when my heart comes calling<br />
Do you feel me?<br />
Warming you like rays of sunshine<br />
Can&#8217;t stop falling when my heart comes calling<br />
Do you feel me?<br />
Warming you like rays of golden light</p>
<p>Oh the summer breeze<br />
Somehow singing softly into you<br />
Dadada dadada dadada<br />
Hear me whispering<br />
Always there, no matter what you do</p></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=55&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/03/20/tiesto-feat-julie-thompson-do-you-feel-me-muito-bom-mesmo-trampando-e-escutando-um-som-louco-desses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
		<item>
		<title>Porto alegre la vou eu&#8230;. SERPRO</title>
		<link>http://joaocosme.wordpress.com/2009/02/10/porto-alegre-la-vou-eu-serpro/</link>
		<comments>http://joaocosme.wordpress.com/2009/02/10/porto-alegre-la-vou-eu-serpro/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 14:32:02 +0000</pubDate>
		<dc:creator>joaocosme</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joaocosme.wordpress.com/?p=52</guid>
		<description><![CDATA[Minha vida é mesmo feito de indas e vindas&#8230;
MAceió-Brasília e agora Brasília-Porto Alegre
Pois é, alguns dias eu fui convocado para o concurso do serpro em Porto alegre que eu fiz em 2005 ainda quando estava em maceió.
A vida é mesmo uma comédia. Prestei concurso do serpro em 2005, ainda morava em maceió e não sei [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=52&subd=joaocosme&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Minha vida é mesmo feito de indas e vindas&#8230;</p>
<p>MAceió-Brasília e agora Brasília-Porto Alegre</p>
<p>Pois é, alguns dias eu fui convocado para o concurso do serpro em Porto alegre que eu fiz em 2005 ainda quando estava em maceió.</p>
<p>A vida é mesmo uma comédia. Prestei concurso do serpro em 2005, ainda morava em maceió e não sei porque cargas d&#8217;agua escolhi Porto Alegre &#8230; (heheh na verdade eu sei)</p>
<p>Entao a vida foi se encaminhando e no mesmo ano vim morar em Brasília e deixei o concurso de lado.</p>
<p>No ano passado em meados de abril de 2008, lecionei um treinamento de Postgresql aqui em Brasília para o Serpro e tiveram alunos de vários Serpros do Brasil. Rio de Janeiro, Recife, Minas Gerais, Pará e uma galera de POA.</p>
<p>Foi aí então que eu comentei: &#8221; AAA eu fiz um concurso do serpro nem sei nem o que deu &#8230; meu endereço ainda está de maceió&#8221;"</p>
<p>Os amigos que eu acabara de fazer durante o treinamento entraram em contato com o RH do serpro de POA e bingo!! Eu era o próximo a ser chamado, detalhe todos os meus dados ainda estavam de maceió hehehehe</p>
<p>Nada é por acaso!!!</p>
<p>Pois bem, atualizado o endereço fiquei na expectativa até que recebo o telegrama do serpro!!!</p>
<p>Estou arrumando as malas, malinhas e maletas&#8230;. bolsas bolsinhas e luvas de boxe!</p>
<p>Vamos ver se eu posso contribuir com algum conhecimento em Postgresql la no serpro de POA!!!!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joaocosme.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joaocosme.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joaocosme.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joaocosme.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joaocosme.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joaocosme.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joaocosme.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joaocosme.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joaocosme.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joaocosme.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joaocosme.wordpress.com&blog=3961779&post=52&subd=joaocosme&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joaocosme.wordpress.com/2009/02/10/porto-alegre-la-vou-eu-serpro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a790a2b992d896c1b19c564b2f6289fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jão!</media:title>
		</media:content>
	</item>
	</channel>
</rss>