Re: Replicacion de Datos

From: Javier Fritz Alsite <jfritz(at)sia(dot)cl>
To: Javier Fritz Alsite <jfritz(dot)aliste(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Replicacion de Datos
Date: 2009-08-12 19:37:27
Message-ID: 4A8319F7.5020201@sia.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Segun las linea que me arroja en el error, he buscando en el log de
postgreSQL y efectivamente esta enviado una sentencia invalida<br>
<br>
Log de PostgreSQL<br>
--------------------<br>
ERROR:&nbsp; la sintaxis de entrada no es v&aacute;lida para tipo boolean:
&laquo;replicated&raquo;<br>
SENTENCIA:&nbsp; SELECT id,sql FROM replica_log WHERE NOT <font
color="#ff6666">'replicated'&nbsp;</font> AND username&lt;&gt;<font
color="#ff0000"><b>E</b></font>'pyreplica'&nbsp; ORDER BY id ASC FOR UPDATE<br>
--------------------<br>
<br>
En la cadena anterior puede apreciarse que el error esta en el
encomillado de la columna replicated y la letra E antes del usuario que
debe excluir. <br>
La verdad no manejo python para corregirlo, puedes ayudarme con esto??.<br>
El error se produce tal como indica el reporte por correo en la linea
87 del archivo pyreplica.py<br>
<br>
En esta seccion es donde genera la cadena de la consulta.<br>
Quizas esto se deba a un error en lacodificacion del archivo<br>
-------- pyreplica.py -------<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ignore some user? (multimaster setup)^M<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql = skip_user and " AND username&lt;&gt;%s " or ""^M<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args = skip_user and (skip_user,) or ()^M<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Query un-replicated data (lock rows to prevent data loss)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cur0.execute("SELECT id,sql FROM replica_log "^M<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WHERE NOT %s %s "<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ORDER BY id ASC FOR UPDATE" % (slave_field, sql)
,args)<br>
------------------------------------------ <br>
<br>
<br>
<br>
Javier Fritz Alsite wrote:
<blockquote cite="mid:4A831308(dot)6050901(at)gmail(dot)com" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Efectivamente hay problemas con los usuarios del smtp. por ahora me
cambie de server y esta enviado los correos de notificacion.<br>
<br>
El error que me arroja es el sigueinte<br>
<pre wrap="">----
Traceback (most recent call last):
File "/usr/local/pyreplica/daemon.py", line 74, in run
debug = self.debug)
File "/usr/local/pyreplica/pyreplica.py", line 154, in main_loop
replicate(cur0, cur1, skip_user, slave_field, debug)
File "/usr/local/pyreplica/pyreplica.py", line 87, in replicate
"ORDER BY id ASC FOR UPDATE" % (slave_field, sql) ,args)
DataError: la sintaxis de entrada no es v&Atilde;&iexcl;lida para tipo boolean: &Acirc;&laquo;replicated&Acirc;&raquo;</pre>
----<br>
No estoy claro cual es el problema, al paracer no detecta el tipo de
dato de la columna replicated. <br>
<br>
<br>
Mariano Reingart wrote:
<blockquote
cite="mid:5aebd8250908121046v5f8c6c75o19640d33cd014bdd(at)mail(dot)gmail(dot)com"
type="cite">
<pre wrap="">&iquest;El username y password funcionan bien?
<a moz-do-not-send="true" class="moz-txt-link-abbreviated"
href="mailto:USERNAME=pyreplica(at)lanixerp(dot)cl">USERNAME=pyreplica(at)lanixerp(dot)cl</a>
PASSWORD=XXXXXXXxxxxxXXXXXX

Adem&aacute;s, el usuario pyreplica tiene permisos de modificacion en todas
las tablas del esclavo?

Sds
Mariano

2009/8/12 Javier Fritz Alsite <a moz-do-not-send="true"
class="moz-txt-link-rfc2396E" href="mailto:jfritz(dot)aliste(at)gmail(dot)com">&lt;jfritz(dot)aliste(at)gmail(dot)com&gt;</a>:
</pre>
<blockquote type="cite">
<pre wrap="">Hola.

&nbsp;&nbsp;&nbsp; Anexo archivo de configuracionen /etc/pyreplica. Ademas del envio de
correos no logro completar la replicaci&oacute;n.

&nbsp;&nbsp;&nbsp; Pasos:
&nbsp;&nbsp;&nbsp; - Resplado de base erp_lamartine y restaurado en todas las maquinas.
&nbsp;&nbsp;&nbsp; - Instalaci&oacute;n de master-install.sql en todos las maquinas.
&nbsp;&nbsp;&nbsp; - carga de pyreplica en /usr/local/pyreplica
&nbsp;&nbsp;&nbsp; - edicion de archivo de configuracion (se anexa) en todas las maquinas,
se edito la ip de DNS0 y DNS1 a la que corresponde, estoy haciendo pruebas
con un multimaestro con las IP que se indican mas abajo, el archivo en la
otra maquina solo tiene las IP alternadas.
&nbsp;&nbsp;&nbsp; - creacion de usuarios y perfiles, grants a todas las tablas para
usuario pyreplica, postgres y lamartine.
&nbsp;&nbsp;&nbsp; - modificacion de daemon.py con uid y guid 500, que corresponde al
usuario pyreplica de sistema.
&nbsp;&nbsp;&nbsp; - inicio de demonio "./pyreplica start"

&nbsp;&nbsp;&nbsp; Al realizar un cambio este no se replica, y se obtiene la salida que
envie en el correo anterior.

-----------------/etc/pyreplica/mybd.conf-------------------------------
[MAIN]
# name of replica set (first field of log file entries)
NAME=erp_lamartine
# master database connection string:
DSN0=dbname=erp_lamartine user=pyreplica password=pyreplica
host=192.168.1.231
# slave database connection string:
DSN1=dbname=erp_lamartine user=pyreplica password=pyreplica
host=192.168.1.232
# in multimaster setup, set the replication postgres user
SKIP_USER=pyreplica
# in multi-slave setup, set the slave column to mark data as replicated
SLAVE_FIELD='replicated'
# send a trivial query to keep alive the connection (optional)
KEEPALIVE=true
# optional debug level (0: none, 1: normal, 2: verbose, 3: very verbose)
DEBUG_LEVEL=3
# email notification config (optional):
[SMTP]
SERVER=mail.lanixerp.cl
# login is optional:
<a moz-do-not-send="true" class="moz-txt-link-abbreviated"
href="mailto:USERNAME=pyreplica(at)lanixerp(dot)cl">USERNAME=pyreplica(at)lanixerp(dot)cl</a>
PASSWORD=XXXXXXXxxxxxXXXXXX
START_SUBJECT=[PyReplica][LAMARTIEN2] Inicia Rep
STOP_SUBJECT= [PyReplica][LAMARTINE2] Detiene Rep
ERROR_SUBJECT=[PyReplica][LAMARTINE2] Error Rep
WARNING_SUBJECT=[Replica][LAMARTINE2] Advertencia Rep
<a moz-do-not-send="true" class="moz-txt-link-abbreviated"
href="mailto:FROM_ADDR=pyreplica(at)lanixerp(dot)cl">FROM_ADDR=pyreplica(at)lanixerp(dot)cl</a>
<a moz-do-not-send="true" class="moz-txt-link-abbreviated"
href="mailto:TO_ADDRS=jfritz(at)lanixerp(dot)cl">TO_ADDRS=jfritz(at)lanixerp(dot)cl</a>

Mariano Reingart wrote:

2009/8/12 Javier Fritz Alsite <a moz-do-not-send="true"
class="moz-txt-link-rfc2396E" href="mailto:jfritz(dot)aliste(at)gmail(dot)com">&lt;jfritz(dot)aliste(at)gmail(dot)com&gt;</a>:

Hola.

Tal como me recomendaste estoy probando una configuraci&oacute;n con PyReplica,
pero como es de esperarse tengo algunos problemas.

&nbsp;&nbsp;&nbsp; Tengo 3 maquinas CentOS 5.3 con PyReplica cargado, pero no logro
completar la replicacion. Ademas de eso, por alguna razon el sistema de
notificaciones de correo falla.

&nbsp;&nbsp;&nbsp; Cada maquina tiene cargado los archivos de pyreplica en
/usr/local/pyreplica y la configuracion del demonio esta en /etc/pyreplica.
&nbsp;&nbsp;&nbsp; Se creo el usuario pyreplica en el sistema para ejecutar el demonio y se
actualizaron los datos en "daemon.py".

&nbsp;&nbsp;&nbsp; Estoy intentado realizar la replicacion solo con dos maquinas para
lograr una configuracion base y luego ampliarla a la tercera maquina.
&nbsp;&nbsp;&nbsp; La salida en el log se repite constantemente, existen un cambio
pendiente en la tabla replica_log esta marcado como no replicado en la
columna respectiva.

&nbsp;&nbsp;&nbsp; Al parecer la configuracion esta en parte correcta ya que se obtiene la
salida de conexion y encoding, pero no alcanza a la ejecucion de los querys
en replica_log.

&nbsp;&nbsp;&nbsp; LOG:

erp_lamartine Wed Aug 12 08:53:18 2009 DSN0: dbname=erp_lamartine
user=pyreplica password=pyreplica host=192.168.1.231
erp_lamartine Wed Aug 12 08:53:18 2009 DSN1: dbname=erp_lamartine
user=pyreplica password=pyreplica host=127.0.0.1
erp_lamartine Wed Aug 12 08:53:18 2009 Opening origin (master) connection
erp_lamartine Wed Aug 12 08:53:18 2009 Opening replica (slave) connection
erp_lamartine Wed Aug 12 08:53:18 2009 Encoding for this connections are
UTF8 UTF8
erp_lamartine Wed Aug 12 08:53:18 2009 Sending mail: [PyReplica] Inicio
Replicacion ERROR LAMARTINE
erp_lamartine Wed Aug 12 08:53:23 2009 Exception while sending mail: (535,
'authorization failed (#5.7.0)')

Ese error debe ser porque en la configuraci&oacute;n de mails falta usuario y
contrase&ntilde;a para que pueda enviar los correos de notificaci&oacute;n.

Cualquier cosa avisame,

Sds
Mariano

</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 8.5 KB

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-08-12 20:08:29 Re: Replicacion de Datos
Previous Message Gustavo 2009-08-12 17:56:19 Re: Propuesta de logo para PgDayLatiniamerica.