update stable postgres how current change actualizar postgresql upgrade

stable - ¿Cómo actualizar PostgreSQL de la versión 9.6 a la versión 10.1 sin perder datos?



upgrade postgresql 9.4 to 9.6 windows (13)

A pesar de todas las respuestas anteriores, aquí va mi 5 centavos.

Funciona en cualquier sistema operativo y en cualquier versión postgres.

  • Detener cualquier instancia de postgres en ejecución;
  • Instala la nueva versión y comienza; Compruebe si puede conectarse a la nueva versión también;
  • Cambie el port postgresql.conf -> de la versión anterior de 5432 a 5433 ;
  • Inicie la versión anterior de la instancia de postgres;
  • Abra una terminal y un CD en la carpeta de la nueva versión bin ;
  • Ejecute pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username> pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • Detener la vieja instancia de ejecución de Postgres;

Estoy usando la base de datos PostgreSQL para mi aplicación Ruby on Rails (en Mac OS X 10.9).

¿Hay alguna instrucción detallada sobre cómo actualizar la base de datos PostgreSQL?

Me temo que destruiré los datos en la base de datos o lo estropearé.


Aquí está la solución para los usuarios de Ubuntu

Primero tenemos que dejar de postgresql

sudo /etc/init.d/postgresql stop

Crea un nuevo archivo llamado /etc/apt/sources.list.d/pgdg.list y agrega la siguiente línea

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

Sigue los comandos a continuación

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get install postgresql-9.4 sudo pg_dropcluster --stop 9.4 main sudo /etc/init.d/postgresql start

Ahora tenemos todo, solo necesitamos actualizarlo como se muestra a continuación

sudo pg_upgradecluster 9.3 main sudo pg_dropcluster 9.3 main

Eso es. El clúster mayormente actualizado se ejecutará en el puerto número 5433. Verifíquelo con el comando debajo

sudo pg_lsclusters


Asumiendo que ha usado home-brew para instalar y actualizar Postgres, puede realizar los siguientes pasos.

  1. Detener el servidor actual de Postgres:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Inicializa una nueva base de datos 10.1:

    initdb /usr/local/var/postgres10.1 -E utf8

  3. ejecute pg_upgrade (nota: cambie la versión del bin si está actualizando desde algo que no sea más abajo) :

    pg_upgrade -v / -d /usr/local/var/postgres / -D /usr/local/var/postgres10.1 / -b /usr/local/Cellar/postgresql/9.6.5/bin/ / -B /usr/local/Cellar/postgresql/10.1/bin/

  4. Mover datos nuevos a su lugar:

    cd /usr/local/var mv postgres postgres9.6 mv postgres10.1 postgres

  5. Reiniciar Postgres:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  6. Consulte /usr/local/var/postgres/server.log para obtener más información y asegurarse de que el nuevo servidor se haya iniciado correctamente.

  7. Finalmente, reinstale los rieles pg joya

    gem uninstall pg gem install pg

Le sugiero que se tome un tiempo para leer la documentación de PostgreSQL para comprender exactamente lo que está haciendo en los pasos anteriores para minimizar las frustraciones.


Creo que este es el mejor enlace para su solución para actualizar Postgres a 9.6

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/


De pie sobre los hombros de las otras criaturas pobres que atraviesan esta porquería, pude seguir estos pasos para volver a funcionar después de una actualización a Yosemite:

Asumiendo que ha usado home-brew para instalar y actualizar Postgres, puede realizar los siguientes pasos.

  1. Detener el servidor actual de Postgres:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Inicializa una nueva base de datos 9.4:

    initdb /usr/local/var/postgres9.4 -E utf8

  3. Instalar postgres 9.3 (ya que ya no estaba presente en mi máquina):

    brew install homebrew/versions/postgresql93

  4. Agregar directorios eliminados durante la actualización de Yosemite:

    mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep

  5. ejecutar pg_upgrade :

    pg_upgrade -v -d /usr/local/var/postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.5/bin/ -B /usr/local/Cellar/postgresql/9.4.0/bin/

  6. Mover datos nuevos a su lugar:

    cd /usr/local/var mv postgres postgres9.3 mv postgres9.4 postgres

  7. Reiniciar Postgres:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  8. Consulte /usr/local/var/postgres/server.log para obtener más información y asegurarse de que el nuevo servidor se haya iniciado correctamente.

  9. Finalmente, reinstalar las bibliotecas relacionadas?

    pip install --upgrade psycopg2 gem uninstall pg gem install pg


El manual del usuario cubre este tema en profundidad. Usted puede:

  • pg_upgrade en el lugar; o

  • pg_dump y pg_restore .

Si tiene dudas, hágalo con vertederos. No borres el viejo directorio de datos, solo guárdalo en caso de que algo salga mal o te equivoques; de esa manera, puedes volver a tu instalación 9.3 sin cambios.

Para detalles, vea el manual.

Si está atascado, publique una pregunta detallada que explique cómo está atascado, dónde y qué intentó primero. Depende también de cómo instaló PostgreSQL, ya que hay varias "distribuciones" diferentes de PostgreSQL para OS X (desafortunadamente). Entonces necesitarías proporcionar esa información.


En Windows , seguí enfrentando diferentes mensajes de error cuando intentaba usar pg_upgrade .

Ahorré mucho tiempo para que yo solo:

  1. Backup DB
  2. Desinstale todas las copias de PostgreSQL
  3. Instalar 9.5
  4. Restaurar DB


Mi solución fue hacer una combinación de estos dos recursos:

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

y

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

El segundo ayudó más que el primero. Además, no siga los pasos, ya que algunos no son necesarios. Además, si no puede hacer una copia de seguridad de los datos a través de la consola postgres, puede usar un enfoque alternativo y hacer una copia de seguridad con pgAdmin 3 o algún otro programa, como lo hice en mi caso.

Además, el enlace: https://help.ubuntu.com/stable/serverguide/postgresql.html Ayudó a establecer la contraseña cifrada y establecer md5 para autenticar al usuario de postgres.

Después de todo, para verificar la versión del server postgres ejecute en la terminal:

sudo -u postgres psql postgres

Después de ingresar la contraseña, ejecuta en la terminal de postgres:

SHOW SERVER_VERSION;

Saldrá algo así como:

server_version ---------------- 9.4.5

Para configurar e iniciar postgres he utilizado el comando:

> sudo bash # root > su postgres # postgres > /etc/init.d/postgresql start > /etc/init.d/postgresql stop

Y luego para restaurar la base de datos de un archivo:

> psql -f /home/ubuntu_username/Backup_93.sql postgres

O si no funciona, intente con este:

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

Y si está utilizando Rails haga un bundle exec rake db:migrate después de tirar el código :)


Para Mac a través de homebrew:

brew tap petere/postgresql ,

brew install <formula> (por ejemplo: brew install petere/postgresql/postgresql-9.6 )

Eliminar el antiguo Postgres:

brew unlink postgresql

brew link -f postgresql-9.6

Si ocurre algún error, no olvide leer y seguir instrucciones brew en cada paso.

Mira esto para obtener más información: https://github.com/petere/homebrew-postgresql


Parece que la solución se ha horneado en Homebrew ahora:

$ brew info postgresql ... ==> Caveats To migrate existing data from a previous major version of PostgreSQL run: brew postgresql-upgrade-database ....


Si está utilizando servicios homebrew y homebrew, probablemente pueda hacer lo siguiente:

brew services stop postgresql brew upgrade postgresql brew postgresql-upgrade-database brew services start postgresql

Creo que esto podría no funcionar por completo si está utilizando funciones avanzadas de Postgres, pero funcionó perfectamente para mí.


Actualización : este proceso es el mismo para actualizar 9.6 a 10; simplemente modifique los comandos para reflejar las versiones 9.6 y 10 , donde 9.6 es la versión anterior y 10 es la nueva versión. Asegúrese de ajustar los directorios "antiguos" y "nuevos" en consecuencia, también.

Acabo de actualizar PostgreSQL 9.5 a 9.6 en Ubuntu y pensé en compartir mis hallazgos, ya que hay un par de matices específicos de SO / paquete de los cuales estar al tanto.

( No quería tener que volcar y restaurar datos manualmente , por lo que varias de las otras respuestas aquí no eran viables).

En resumen, el proceso consiste en instalar la nueva versión de PostgreSQL junto con la versión anterior (por ejemplo, 9.5 y 9.6), y luego ejecutar el binario pg_upgrade , que se explica en (algunos) detalles en https://www.postgresql.org/docs/9.6/static/pgupgrade.html .

El único aspecto " pg_upgrade " de pg_upgrade es que si no se pasa el valor correcto para un argumento, o si no se pg_upgrade sesión como el usuario o cd correcto en la ubicación correcta antes de ejecutar un comando, se pueden generar mensajes de error crípticos.

En Ubuntu (y probablemente en Debian), siempre que esté utilizando el repositorio "oficial", deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main , y siempre que no haya cambiado el sistema de archivos predeterminado rutas de acceso o opciones de tiempo de ejecución, el siguiente procedimiento debería hacer el trabajo.

Instale la nueva versión (tenga en cuenta que especificamos el 9.6 , explícitamente):

sudo apt install postgresql-9.6

Una vez que la instalación tenga éxito, ambas versiones se ejecutarán una al lado de la otra, pero en diferentes puertos. El resultado de la instalación menciona esto, en la parte inferior, pero es fácil pasar por alto:

Creating new cluster 9.6/main ... config /etc/postgresql/9.6/main data /var/lib/postgresql/9.6/main locale en_US.UTF-8 socket /var/run/postgresql port 5433

Detenga ambas instancias del servidor (esto se detendrá a la vez):

sudo systemctl stop postgresql

Cambie al usuario dedicado del sistema PostgreSQL:

su postgres

Múdate a su directorio de inicio (no hacer esto causará errores):

cd ~

pg_upgrade requiere las siguientes entradas ( pg_upgrade --help nos dice esto):

When you run pg_upgrade, you must provide the following information: the data directory for the old cluster (-d DATADIR) the data directory for the new cluster (-D DATADIR) the "bin" directory for the old version (-b BINDIR) the "bin" directory for the new version (-B BINDIR)

Estas entradas se pueden especificar con "nombres largos", para que sean más fáciles de visualizar:

-b, --old-bindir=BINDIR old cluster executable directory -B, --new-bindir=BINDIR new cluster executable directory -d, --old-datadir=DATADIR old cluster data directory -D, --new-datadir=DATADIR new cluster data directory

También debemos pasar el --new-options , porque al no hacerlo, se produce lo siguiente:

connection to database failed: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/lib/postgresql/.s.PGSQL.50432"?

Esto ocurre porque las opciones de configuración predeterminadas se aplican en ausencia de este conmutador, lo que da como resultado el uso de opciones de conexión incorrectas, de ahí el error de socket.

Ejecute el comando pg_upgrade desde la nueva versión de PostgreSQL:

/usr/lib/postgresql/9.6/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.5/bin --new-bindir=/usr/lib/postgresql/9.6/bin --old-datadir=/var/lib/postgresql/9.5/main --new-datadir=/var/lib/postgresql/9.6/main --old-options=-cconfig_file=/etc/postgresql/9.5/main/postgresql.conf --new-options=-cconfig_file=/etc/postgresql/9.6/main/postgresql.conf

Salir de la cuenta de usuario del sistema dedicado:

exit

La actualización ahora está completa, pero la nueva instancia se vinculará al puerto 5433 (el valor predeterminado estándar es 5432 ), así que ten esto en cuenta si intentas probar la nueva instancia antes de "cortarlo".

Inicie el servidor como siempre (de nuevo, esto iniciará tanto las instancias antiguas como las nuevas):

systemctl start postgresql

Si desea que la nueva versión sea la predeterminada, deberá editar el archivo de configuración efectivo, por ejemplo, /etc/postgresql/9.6/main/postgresql.conf , y asegurarse de que el puerto esté definido como tal:

port = 5432

Si hace esto, cambie el número de puerto de la versión anterior a 5433 al mismo tiempo (antes de comenzar los servicios), o simplemente elimine la versión anterior (esto no eliminará el contenido de su base de datos real; necesitará usar apt --purge remove postgresql-9.5 para que eso suceda):

apt remove postgresql-9.5

El comando anterior detendrá todas las instancias, por lo que deberá iniciar la nueva instancia por última vez con:

systemctl start postgresql

Como último punto a destacar, no olvide considerar los buenos consejos de pg_upgrade :

Upgrade Complete ---------------- Optimizer statistics are not transferred by pg_upgrade so, once you start the new server, consider running: ./analyze_new_cluster.sh Running this script will delete the old cluster''s data files: ./delete_old_cluster.sh