Buenas tardes,

Tengo un problema con un servidor PostgreSQL a raíz de la degradación
del controlador de dominio (PDC) Win2K3 SBS (Small Business Server)
donde se halla alojado. El caso es que después de esto, el servicio de
PostgreSQL no inicia. Temiendo que fuera un problema de degradación
también del usuario usado para lanzar este servidor [1] (usuario
postgres), he probado a cambiar el usuario lanzador a DOMINIO\postgres
y .\postgres (aparentemente esto último es para una máquina sin
dominio), sin resultados satisfactorios.

Mi pregunta es, ¿es posible migrar los datos a otro Postgre ubicado en
otra máquina sin poder arrancar el servidor Postgre en la máquina
origen? Caso de serlo, ¿conocéis algún enlace que pueda mirarme?

Igualmente, se agradece cualquier comentario que me pudiera ayudar a
restaurar el Postgre "dañado".

Muchas gracias y un saludo,

---
jors - [email protected]



[1] Al degradarse el dominio, creo que los usuarios de dominio de la
propia máquina pasan a ser usuarios locales.

Search Discussions

  • Alvaro Herrera at Jul 9, 2007 at 5:32 pm
    jors escribió:

    Hola,
    Mi pregunta es, ¿es posible migrar los datos a otro Postgre ubicado en
    otra máquina sin poder arrancar el servidor Postgre en la máquina
    origen? Caso de serlo, ¿conocéis algún enlace que pueda mirarme?
    Por favor usa "Postgres" como version corta del nombre. Evita "Postgre".

    Con respecto a migrar los datos, la manera de hacerlo es tomar la
    "carpeta" (directorio) llamada "data" y ponerla en el otro servidor,
    estando éste abajo. Debes incluir todo el contenido, y sobreescribir
    completamente la carpeta del servidor inicial. Obviamente, si tienes
    otras bases de datos ahí, se perderán. Luego inicias el servicio.

    En realidad puedes tener dos servicios corriendo simultáneamente, con
    ambas bases de datos. Es cosa de poner los datos en otra carpeta
    (digamos "data2"), configurar en data2/postgresql.conf para que use otro
    puerto en lugar de 5432, y levantar el postmaster "a mano" (es decir
    abres una ventana de DOS y ejecutas
    postmaster -D "c:/blah blah/directorio/data2"
    __Obviamente__ debes dejar la ventana de DOS abierta.

    --
    Alvaro Herrera http://www.PlanetPostgreSQL.org/
    "Once again, thank you and all of the developers for your hard work on
    PostgreSQL. This is by far the most pleasant management experience of
    any database I've worked on." (Dan Harris)
    http://archives.postgresql.org/pgsql-performance/2006-04/msg00247.php
  • Jors at Jul 9, 2007 at 11:12 pm

    El lun, 09-07-2007 a las 13:31 -0400, Alvaro Herrera escribió:
    jors escribió:

    Hola,
    Mi pregunta es, ¿es posible migrar los datos a otro Postgre ubicado en
    otra máquina sin poder arrancar el servidor Postgre en la máquina
    origen? Caso de serlo, ¿conocéis algún enlace que pueda mirarme?
    Por favor usa "Postgres" como version corta del nombre. Evita "Postgre".
    Ok, así sea, soy un completo novato con Postgres.
    Con respecto a migrar los datos, la manera de hacerlo es tomar la
    "carpeta" (directorio) llamada "data" y ponerla en el otro servidor,
    estando éste abajo. Debes incluir todo el contenido, y sobreescribir
    completamente la carpeta del servidor inicial. Obviamente, si tienes
    otras bases de datos ahí, se perderán. Luego inicias el servicio.
    Eso parece buena solución, dado que de este modo me aseguro que en el
    directorio que he copiado del servidor "chungo" tengo todas las BBDD,
    tablas, roles y demás cosas que desconozco (pero puede que necesarias
    para el funcionamiento de la apliación) incluidas de un plumazo.

    Tengo dumps hechos con pg_dump, pero apuesto que hubiera sido mejor
    haber usado pg_dumpall (de haberlo conocido) y ahorrarme dolores de
    cabeza porque no se incluyen roles y demás.
    En realidad puedes tener dos servicios corriendo simultáneamente, con
    ambas bases de datos. Es cosa de poner los datos en otra carpeta
    (digamos "data2"), configurar en data2/postgresql.conf para que use otro
    puerto en lugar de 5432, y levantar el postmaster "a mano" (es decir
    abres una ventana de DOS y ejecutas
    postmaster -D "c:/blah blah/directorio/data2"
    Mañana lo miro, pero... ¿seguro que el servicio de Windows se llama
    postmaster?
    __Obviamente__ debes dejar la ventana de DOS abierta.
    Gracias mil.

    ---
    jors - [email protected]
  • Jors at Jul 16, 2007 at 4:38 pm

    El mar, 10-07-2007 a las 01:13 +0200, jors escribió:
    El lun, 09-07-2007 a las 13:31 -0400, Alvaro Herrera escribió:
    jors escribió:

    Hola,
    Mi pregunta es, ¿es posible migrar los datos a otro Postgre ubicado en
    otra máquina sin poder arrancar el servidor Postgre en la máquina
    origen? Caso de serlo, ¿conocéis algún enlace que pueda mirarme?
    Por favor usa "Postgres" como version corta del nombre. Evita "Postgre".
    Ok, así sea, soy un completo novato con Postgres.
    Con respecto a migrar los datos, la manera de hacerlo es tomar la
    "carpeta" (directorio) llamada "data" y ponerla en el otro servidor,
    estando éste abajo. Debes incluir todo el contenido, y sobreescribir
    completamente la carpeta del servidor inicial. Obviamente, si tienes
    otras bases de datos ahí, se perderán. Luego inicias el servicio.
    Eso parece buena solución, dado que de este modo me aseguro que en el
    directorio que he copiado del servidor "chungo" tengo todas las BBDD,
    tablas, roles y demás cosas que desconozco (pero puede que necesarias
    para el funcionamiento de la apliación) incluidas de un plumazo.

    Tengo dumps hechos con pg_dump, pero apuesto que hubiera sido mejor
    haber usado pg_dumpall (de haberlo conocido) y ahorrarme dolores de
    cabeza porque no se incluyen roles y demás.
    En realidad puedes tener dos servicios corriendo simultáneamente, con
    ambas bases de datos. Es cosa de poner los datos en otra carpeta
    (digamos "data2"), configurar en data2/postgresql.conf para que use otro
    puerto en lugar de 5432, y levantar el postmaster "a mano" (es decir
    abres una ventana de DOS y ejecutas
    postmaster -D "c:/blah blah/directorio/data2"
    Mañana lo miro, pero... ¿seguro que el servicio de Windows se llama
    postmaster?
    __Obviamente__ debes dejar la ventana de DOS abierta.
    Gracias mil.
    Al final lo probé y parece que funcionó (simplememente sustituyendo el
    directorio data y reiniciando al servicio). Digo parece porque cuál ha
    sido mi sorpresa hoy al intentar repetir el mismo proceso en varias
    máquinas (Controladores de dominio y Workstations indistintamente): esto
    ya no funciona. Paro el servicio de postgres, sustituyo el directorio
    data y lo vuelvo a iniciar... y da un mensaje de error tal que:

    "El servicio PostgreSQL Database Server 8.X se inició en Equipo local y
    después se detuvo. Algunos servicios se detienen automáticamente si no
    tienen nada que hacer, por ejemplo, el servicio de Alertas y registros
    de rendimiento"

    La X es porque lo he probado tanto con la versión que nosotros tenemos
    (8.1) como con la última estable (8.2).

    El caso es que lo tengo funcionando en una máquina correctamente (porque
    tengo acceso a las BBDD desde el pgAdminIII y el psql, tanto local como
    remotamente), pero ahora no hay manera de pasarlo a las otras.

    ¿Es cosa de brujas o en su día me funcionó de casualidad? Estoy
    confuso...

    Gracias mil,

    ---
    jors - [email protected]
  • Alvaro Herrera at Jul 16, 2007 at 9:50 pm

    jors escribió:

    Al final lo probé y parece que funcionó (simplememente sustituyendo el
    directorio data y reiniciando al servicio). Digo parece porque cuál ha
    sido mi sorpresa hoy al intentar repetir el mismo proceso en varias
    máquinas (Controladores de dominio y Workstations indistintamente): esto
    ya no funciona. Paro el servicio de postgres, sustituyo el directorio
    data y lo vuelvo a iniciar... y da un mensaje de error tal que:

    "El servicio PostgreSQL Database Server 8.X se inició en Equipo local y
    después se detuvo. Algunos servicios se detienen automáticamente si no
    tienen nada que hacer, por ejemplo, el servicio de Alertas y registros
    de rendimiento"
    Examina el "event log".

    O bien olvidate de eso de "iniciar servicio" etc, y abre la ventana de
    DOS y ejecuta postmaster en ella. Eso te mostrara los logs.

    --
    Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 18.1", W 73º 13' 56.4"
    Si no sabes adonde vas, es muy probable que acabes en otra parte.
  • SERGIO CRESPO at Jul 17, 2007 at 8:43 am
    TENGO UN SERIO PROBLEMA:
    Al cancelar un proceso, se me ha quedado invalida una transaccion y ahora
    cada vez que hago vaccum sobre la tabla me dice :
    ERROR: no se pudo encontrar el estado de la transacción 2765016739
    DETALLE: no se pudo abrir el archivo «/var/lib/pgsql/data/pg_clog/0A4C»:
    No existe el fichero o el directorio

    QUE PUEDO HACER ?
  • SERGIO CRESPO at Jul 17, 2007 at 9:13 am
    ----- Original Message -----
    From: "SERGIO CRESPO" <[email protected]>
    To: "Alvaro Herrera" <[email protected]>
    Cc: <[email protected]>
    Sent: Tuesday, July 17, 2007 10:43 AM
    Subject: [pgsql-es-ayuda] ERROR DE TRANSACCION

    TENGO UN SERIO PROBLEMA:
    Al cancelar un proceso, se me ha quedado invalida una transaccion y ahora
    cada vez que hago vaccum sobre la tabla me dice :
    ERROR: no se pudo encontrar el estado de la transacción 2765016739
    DETALLE: no se pudo abrir el archivo
    «/var/lib/pgsql/data/pg_clog/0A4C»: No existe el fichero o el directorio

    QUE PUEDO HACER ?
    --
    ---------------------------(fin del mensaje)---------------------------
    TIP 7: no olvides aumentar la configuración del "free space map"
  • Alvaro Herrera at Jul 17, 2007 at 1:24 pm

    SERGIO CRESPO escribió:
    TENGO UN SERIO PROBLEMA:
    Al cancelar un proceso, se me ha quedado invalida una transaccion y ahora
    cada vez que hago vaccum sobre la tabla me dice :
    ERROR: no se pudo encontrar el estado de la transacción 2765016739
    DETALLE: no se pudo abrir el archivo
    «/var/lib/pgsql/data/pg_clog/0A4C»: No existe el fichero o el
    directorio

    QUE PUEDO HACER ?
    Que archivos hay en pg_clog?

    --
    Alvaro Herrera http://www.CommandPrompt.com/
    The PostgreSQL Company - Command Prompt, Inc.
  • SERGIO CRESPO at Jul 17, 2007 at 2:28 pm
    antes habian 2 ficheros el 00D1 Y 00D2.
    esta tarde hay uno mas el 00D3.
    Cuando me dió el error me decía que no encontraba el 0000. Leyendo por
    el maillist, encontré que lo podía crear a pelo llenandolo de ceros, y eso
    hice. entonces al hacer el vacuum cambió de mensaje y decía que no
    encontraba el 0A4C.

    ----- Original Message -----
    From: "Alvaro Herrera" <[email protected]>
    To: "SERGIO CRESPO" <[email protected]>
    Cc: <[email protected]>
    Sent: Tuesday, July 17, 2007 3:24 PM
    Subject: Re: [pgsql-es-ayuda] ERROR DE TRANSACCION

    SERGIO CRESPO escribió:
    TENGO UN SERIO PROBLEMA:
    Al cancelar un proceso, se me ha quedado invalida una transaccion y ahora
    cada vez que hago vaccum sobre la tabla me dice :
    ERROR: no se pudo encontrar el estado de la transacción 2765016739
    DETALLE: no se pudo abrir el archivo
    «/var/lib/pgsql/data/pg_clog/0A4C»: No existe el fichero o el
    directorio

    QUE PUEDO HACER ?
    Que archivos hay en pg_clog?

    --
    Alvaro Herrera
    http://www.CommandPrompt.com/
    The PostgreSQL Company - Command Prompt, Inc.
    --
    ---------------------------(fin del mensaje)---------------------------
    TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
  • Alvaro Herrera at Jul 30, 2007 at 9:10 pm

    SERGIO CRESPO escribió:
    antes habian 2 ficheros el 00D1 Y 00D2.
    esta tarde hay uno mas el 00D3.
    Cuando me dió el error me decía que no encontraba el 0000. Leyendo por
    el maillist, encontré que lo podía crear a pelo llenandolo de ceros, y
    eso hice. entonces al hacer el vacuum cambió de mensaje y decía que no
    encontraba el 0A4C.
    Que version de Postgres estas usando?

    Me preocupa tu asunto porque parece ser que tus tablas tienen datos
    corruptos. ¿Hubo corte de energia en algun momento? ¿Que clase de
    discos tienes en tu servidor de datos?

    El numero de transaccion, 2765016739, en binario es
    10100100110011101100111010100011, lo cual se puede traducir a los
    siguientes 4 bytes:

    164 | 206 | 206 | 163

    desafortunadamente eso a mi no me dice nada (en otros casos uno puede
    detectar bytes que corresponden a texto ASCII, con lo cual se le puede
    echar la culpa facilmente al sistema de archivos, pero no es el caso).

    --
    Alvaro Herrera http://www.advogato.org/person/alvherre
    "E pur si muove" (Galileo Galilei)
  • Qat at Jul 17, 2007 at 10:55 am

    jors escribió:

    Al final lo probé y parece que funcionó (simplememente
    sustituyendo el
    directorio data y reiniciando al servicio). Digo parece
    porque cuál ha
    sido mi sorpresa hoy al intentar repetir el mismo proceso
    en varias
    máquinas (Controladores de dominio y Workstations
    indistintamente): esto
    ya no funciona. Paro el servicio de postgres, sustituyo el
    directorio
    data y lo vuelvo a iniciar... y da un mensaje de error tal que:

    "El servicio PostgreSQL Database Server 8.X se inició en
    Equipo local y
    después se detuvo. Algunos servicios se detienen
    automáticamente si no
    tienen nada que hacer, por ejemplo, el servicio de Alertas
    y registros
    de rendimiento"
    Examina el "event log".

    O bien olvidate de eso de "iniciar servicio" etc, y abre la
    ventana de DOS y ejecuta postmaster en ella. Eso te
    mostrara los logs.
    Si opero a través de la MMC de Servicios, el event log no
    muestra ningún error. Simplemente se limita a decir que los
    comandos se envian correctamente y que Postgres inicia y
    finaliza correctamente, lo cual no es del todo cierto. ¿Por
    qué? Porque no veo los procesos (postgres.exe) en ejecución,
    sino otros en su lugar (postmaster.exe y pg_ctl.exe) que me
    hacen pensar que el proceso de lanzamiento no funciona bien.
    Además, para finalizar estos procesos, debo "matar" el proceso
    postmaster.exe desde el Administrador de Tareas.

    Si opero desde consola, me dice...

    C:\Archivos de programa\PostgreSQL\8.1\bin>pg_ctl.exe start -D
    .\data
    pg_ctl: another postmaster may be running; trying to start
    postmaster anyway
    Execution of PostgreSQL by a user with administrative
    permissions is not permitted.
    The server must be started under an unprivileged user ID to
    prevent
    possible system security compromises. See the documentation for
    more information on how to properly start the server.
    pg_ctl: could not start postmaster
    Examine the log output.

    Debo iniciar el servicio como usuario postgres, así que debo
    especificarle usuario...

    C:\Archivos de programa\PostgreSQL\8.1\bin>runas
    /user:.\postgres "pg_ctl.exe start -D ..\data"
    Escriba la contraseña para .\postgres:
    Error RUNAS: no se puede adquirir la contraseña de usuario

    No la coge, así que lo intento con el binario postmaster...

    C:\Archivos de programa\PostgreSQL\8.1\bin>runas
    /user:.\postgres "postmaster.exe"
    Escriba la contraseña para .\postgres:
    Error RUNAS: no se puede adquirir la contraseña de usuario

    Nada. Inicio sesión en Windows como usuario postgres y pruebo
    de ejecutar en consola y me da un problema (FATAL) de permisos
    en el archivo ..\data\global\pg_control. Como administrador,
    le pongo permisos al directorio data (para probar de forma
    rápida) de control total al usuario NOMBRE_MAQUINA\postgres
    (ojo, no confundir con un usuario de dominio,sino local), y
    voilá! Ahora ya puedo gestionarlo de nuevo desde la MMC como
    un servicio.

    Muchas gracias de nuevo Alvaro!

    ---
    jors - qat [ a t ] ya.com
  • Alvaro Herrera at Jul 17, 2007 at 1:23 pm

    [email protected] escribió:

    Inicio sesi?n en Windows como usuario postgres y pruebo
    de ejecutar en consola y me da un problema (FATAL) de permisos
    en el archivo ..\data\global\pg_control. Como administrador,
    le pongo permisos al directorio data (para probar de forma
    r?pida) de control total al usuario NOMBRE_MAQUINA\postgres
    (ojo, no confundir con un usuario de dominio,sino local), y
    voil?! Ahora ya puedo gestionarlo de nuevo desde la MMC como
    un servicio.
    Ese FATAL era el problema que estaba impidiendo que se iniciara :-)

    Me parecio raro eso de que el eventlog no tuviera mensajes, pero ahora
    que lo pienso quizas es lo natural. Verifica lo siguiente: en
    postgresql.conf deberias tener "log_destination=eventlog".

    Otra alternativa es log_destination=stderr y redirect_stderr=true, y en
    ese caso los logs quedaran en el directorio PGDATA/pg_log

    Ahora, ese problema de permisos no es normal. Y no es algo de Postgres
    tampoco. Te recomendaria investigar un poco: qué lo hizo y por qué.

    --
    Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
    Jason Tesser: You might not have understood me or I am not understanding you.
    Paul Thomas: It feels like we're 2 people divided by a common language...

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppgsql-es-ayuda @
categoriespostgresql
postedJul 9, '07 at 5:22p
activeJul 30, '07 at 9:10p
posts12
users3
websitepostgresql.org.es
irc#postgresql

People

Translate

site design / logo © 2023 Grokbase