<?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>rolandovera.com &#187; postgresql</title>
	<atom:link href="http://www.rolandovera.com/tag/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rolandovera.com</link>
	<description>Un blog de un sysadmin.</description>
	<lastBuildDate>Mon, 09 Jan 2012 21:52:15 +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>Forma correcta de sacar un respaldo (backup) en PostgreSQL</title>
		<link>http://www.rolandovera.com/2008/07/09/forma-correcta-de-sacar-un-respaldo-backup-en-postgresql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=forma-correcta-de-sacar-un-respaldo-backup-en-postgresql</link>
		<comments>http://www.rolandovera.com/2008/07/09/forma-correcta-de-sacar-un-respaldo-backup-en-postgresql/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 19:42:45 +0000</pubDate>
		<dc:creator>Rolando</dc:creator>
				<category><![CDATA[Bases De Datos]]></category>
		<category><![CDATA[backup postgresql]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[respaldo postgresql]]></category>

		<guid isPermaLink="false">http://www.rolandovera.com/?p=248</guid>
		<description><![CDATA[Esta base de datos es una de las mejores, y a mi en particular me gusta mas que MySQL, pero sigue siendo un dolor de cabeza a la hora de hacer respaldos. A continuación les enseñare como hacer respaldos de una manera rápida y sencilla. Con este tipo de respaldo no vamos a perder SP, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rolandovera.com/wp-content/uploads/2008/07/postgresql.jpg"><img class="alignnone size-medium wp-image-249 alignleft" style="float: left;" title="postgresql" src="http://www.rolandovera.com/wp-content/uploads/2008/07/postgresql.jpg" alt="" width="113" height="88" /></a>Esta base de datos es una de las mejores, y a mi en particular me gusta mas que MySQL, pero sigue siendo un dolor de cabeza a la hora de hacer respaldos.</p>
<p>A continuación les enseñare como hacer respaldos de una manera rápida y sencilla. Con este tipo de respaldo no vamos a perder SP, Vistas, tablas, ni nada de data etc.</p>
<p>Vamos hacer de cuenta que la base de datos que queremos hacer respaldo se llama prueba. Yo voy a utilizar el usuario de postgres para trabajar con esto. Pero podrían usar cualquier otro usuario. Yo para &#8220;pasarme&#8221; al usuario postgres ejecuto el siguiente comando como root:</p>
<p>www:/etc# <strong>su postgres</strong><br />
postgres@www:/etc$</p>
<p>Ya siendo usuario postgres no tengo ningún tipo de restricción y puedo ejecutar cualquiera de los comandos mencionados a continuación.</p>
<p>Con el siguiente comando sacaremos respaldo del esquema (schema) de la base de datos:</p>
<p><strong>pg_dump -sv prueba -O &gt; /backup/prueba.schema.sql</strong></p>
<p>Con el siguiente comando sacaremos el repaldo de la DATA de la base de datos:</p>
<p><strong>pg_dump -Fc -f /backup/prueba.data.dump -a &#8211;disable-triggers prueba</strong></p>
<p>Estamos usando las opciones -Fc que significa la F de formato y la c de custom, estamos utilizando el formato custom, para así al momento de restaurar la base de datos en otro server o en otra base de datos se nos hará mas fácil porque vamos a utilizar el comando pg_restore.</p>
<p>Les adjunto un poco mas de información en ingles con respecto al dump de postgreSQL en formato &#8220;custom&#8221;.</p>
<blockquote><p>c      Output  a  custom  archive  suitable for input into pg_restore. This is the<br />
most flexible format in that it allows reordering of loading data  as  well<br />
as object definitions. This format is also compressed by default.</p></blockquote>
<p>La opción -f lo uso para especificar el archivo.</p>
<p>La opción -a especificar que quiero solo exportar la data.</p>
<p>La opción  &#8211;disable-triggers la uso para que no de problemas a la hora de hacer la restauración.</p>
<p>Estos comandos nos crearan dos archivos, uno con el esquema (schema) y otro con la data de la base de datos.</p>
<p>Para restaurar la información haremos lo siguiente.</p>
<p>Vamos escribir el comando <strong>psql y luego enter.</strong></p>
<p><strong>Welcome to psql 8.1.11, the PostgreSQL interactive terminal.</strong></p>
<p><strong>Type:  \copyright for distribution terms<br />
\h for help with SQL commands<br />
\? for help with psql commands<br />
\g or terminate with semicolon to execute query<br />
\q to quit</strong></p>
<p><strong>postgres=# </strong></p>
<p>Ahora ya estando dentro de postgres, voy a crear la base de datos con el siguiente comando:</p>
<p><strong>CREATE DATABASE prueba ENCODING &#8216;UTF8&#8242;;</strong></p>
<blockquote><p>Antes de crear la base de datos verifiquen que tipo de ENCODING usa la base de datos de donde sacaron el respaldo ya que si crean la base de datos con diferente encoding al importar la data el respaldo NO va a funcionar, para saber el encoding de la base de datos lo hacen de la siguiente manera:</p>
<p>psql -l</p>
<p>Y les va a mostrar lo siguiente:</p>
<p>sh-3.1$ psql -l<br />
List of databases<br />
Name    |   Owner   | Encoding<br />
&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;<br />
data1 | data1 | SQL_ASCII<br />
data2   | data2    | SQL_ASCII<br />
postgres  | postgres  | SQL_ASCII<br />
template0 | postgres  | SQL_ASCII<br />
template1 | postgres  | SQL_ASCII</p>
<p>El ENCODING de todas las bases de datos en este ejemplo es SQL_ASCII.<strong><br />
</strong></p></blockquote>
<p>luego nos salimos de la consola de postgres con el siguiente comando:</p>
<p><strong>\q y presionamos enter.<br />
</strong></p>
<p>Ya estando de vuela en la consola de sistema, ejecutaremos el siguiente comando:</p>
<p><strong>psql prueba &lt; prueba.schema.sql</strong></p>
<p>Con este comando importaremos el schema en la nueva base de datos.</p>
<p>Ahora con el siguiente comando importaremos toda la data:</p>
<p><strong>pg_restore -a -v -e -Fc -O &#8211;disable-triggers -d prueba prueba.data.dump</strong></p>
<p>Con este comando insertaremos toda la data en la nueva base de datos.</p>
<blockquote><p><strong>Recomendaciones:</strong></p>
<p>En este ejemplo sacamos el respaldo con el usuario postgres, recomiendo sacar el respaldo e importar la base de datos con el usuario propietario de la base de datos. Ya que si insertamos la base de datos en otro server cone l usuario postres, al momento de poner a funcionar el respaldo van a haber problemas con los permisos del usuario, ya que el usuario de la base de datos en el anterior server es juan, el usuario en el respaldo va a ser postgres.</p></blockquote>
<p>Felicitaciones, ha echo un respaldo y ha restaurado una base de datos de postgreSQL, sin perder nada de información me imagino que hay muchas maneras de realizar esto, pero compartí con ustedes la manera como yo hago los respaldos, cualquier comentario o sugerencia es bienvenida.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rolandovera.com/2008/07/09/forma-correcta-de-sacar-un-respaldo-backup-en-postgresql/feed/</wfw:commentRss>
		<slash:comments>65</slash:comments>
		</item>
	</channel>
</rss>

