Hola, leí esta publicación: PostgreSQL 15 update - e intenté actualizar a la versión 15, sin embargo, al ejecutar el comando de reconstrucción, me encuentro con errores que no reconozco y ninguna de mis investigaciones ha resuelto el problema. Agradecería cualquier ayuda que pueda recibir aquí.
Se queja de que tanto Locale como postgres se inicializaron desde la versión 13 y no son compatibles con la 15.
WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-25T12:02:47.588312 #1] INFO -- : Reading from stdin
I, [2025-02-25T12:02:47.603317 #1] INFO -- : File > /etc/service/postgres/run chmod: +x chown:
I, [2025-02-25T12:02:47.608602 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x chown:
I, [2025-02-25T12:02:47.614271 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2025-02-25T12:02:47.619607 #1] INFO -- : File > /root/install_postgres chmod: +x chown:
I, [2025-02-25T12:02:47.623993 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown:
I, [2025-02-25T12:02:47.624696 #1] INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.628520 #1] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.629701 #1] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.635680 #1] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.636635 #1] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.637658 #1] INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.638584 #1] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.639215 #1] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.639833 #1] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.640892 #1] INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.641570 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.642114 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.642818 #1] INFO -- : > if [ -f /root/install_postgres ]; then
/root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi
failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
popen failure: Cannot allocate memory
initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
I, [2025-02-25T12:02:49.979779 #1] INFO -- : Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
Upgrading PostgreSQL from version 13 to 15
I, [2025-02-25T12:02:49.980481 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-02-25T12:02:49.983148 #1] INFO -- : Terminating async processes
2025-02-25 12:02:50.007 UTC [51] FATAL: database files are incompatible with server
2025-02-25 12:02:50.007 UTC [51] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).
Gracias. Creo que podrías intentar agregar 2G o 4G de swap. Pero el mensaje sobre Docker desactualizado y la ejecución de 18.04LTS, significa que estarías en una posición mucho mejor si migras a una nueva instancia con una instalación nueva del sistema operativo: preferiblemente 24.04. Actualmente ejecuto tanto 24.04 como 22.04.
Migrar a una nueva instancia fresca probablemente requiera menos esfuerzo en general que intentar una actualización in situ. Incluso podría ser menos disruptivo. Es muy probable que tengas un tiempo de inactividad, hagas lo que hagas.
El primer paso es hacer una copia de seguridad (con descargas) y descargarla para guardarla de forma segura. También haz una copia de tu archivo app.yml.
Ayer realicé una migración, por razones similares. Además, pude obtener una máquina mejor por el mismo costo al cambiar a una oferta más nueva del proveedor de alojamiento.
También te falta un poco de espacio en disco, especialmente si agregas swap. Normalmente hago: du -kx / | sort -n | tail -55
o algo similar para ver si hay algo grande que no debería estar allí.
Oh, otro enfoque para la migración, en lugar de copia de seguridad y restauración, es usar rsync. No lo he hecho, pero aquí tienes una receta: Move a Discourse site to another VPS with rsync
El otro problema es que tu versión de Docker y tu sistema operativo necesitan una actualización.
La versión de Docker 24.0.7 o más reciente requiere una versión de Ubuntu LTS superior a la 18. El servicio a largo plazo de esa LTS ya no tiene soporte.
He visto algunos sitios actualizarse con 18.04, pero la mayoría no lo ha hecho.
He visto a gente lograr hacer un dist-upgrade, pero su éxito es incierto, y ¿realmente quieres restos de tu sistema operativo de 6 años causando potencialmente problemas durante los próximos 5 años que 24.04 es compatible? Además, una actualización de 18.04 solo te lleva a 20.04, que estará disponible durante unos 60 días más, por lo que necesitarías ejecutar 3 dist-upgrades para llegar al último sistema operativo.
Así que me encontré con este mismo error, excepto que ejecuté ./launcher rebuild, no había estado siguiendo los foros y advertencias y simplemente ejecuté la actualización a ciegas. ¿Cómo mato/revierto esta ejecución? ¿Simplemente Ctrl+C para salir de la ejecución?
Dejó de hacer nada después de DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).
Apagué y encendí el servidor y eso lo reactivó.
Ahora estoy ejecutando más actualizaciones con Docker atascado en 20 por alguna razón y otra dependencia. Qué buena manera de pasar el viernes por la noche jaja
Pude actualizar el sistema operativo del host, la versión de Docker y luego la actualización de la base de datos funcionó, también le di más RAM jajaja, debería estar bien por otros 5 años, ¿verdad? jaja