¡Gracias por la ayuda!
He creado una nueva copia de seguridad del antiguo servidor de producción que aún funciona perfectamente.
He eliminado tanto Docker como Discourse del servidor de nueva etapa. He vuelto a instalar ambos, Docker y Discourse, siguiendo las instrucciones oficiales. Luego, he procedido con las instrucciones de restauración por línea de comandos.
La copia de seguridad se creó con docker-engine 17.05.0~ce-0~debian-stretch y debe restaurarse con docker-ce-cli 5:19.03.9~3-0~debian-buster. Esto también resulta en una versión más reciente de PostgreSQL. (antigua: 10; nueva: 12)
¿Es un enfoque legítimo hacer una copia de seguridad de una versión obsoleta de Docker/PostgreSQL y tratar de restaurarla en una instalación actualizada de Docker/Discourse?
Esta vez estoy obteniendo un error diferente.
ERROR: no se pudo crear el índice único "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL: La clave (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) está duplicada.
EXCEPTION: psql falló: DETAIL: La clave (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) está duplicada.
Registro completo:
root@whonix-app:/var/www/discourse# discourse restore whonix-forum-2020-05-25-065253-v20200506044956.tar.gz
Iniciando restauración: whonix-forum-2020-05-25-065253-v20200506044956.tar.gz
[INICIADO]
¡'system' ha iniciado la restauración!
Marcando la restauración como en curso...
Asegurando que /var/www/discourse/tmp/restores/default/2020-05-25-132224 existe...
Copiando el archivo comprimido al directorio tmp...
Descomprimiendo el archivo, esto puede tomar un tiempo...
Extrayendo el archivo volcado...
Validando los metadatos...
Versión actual: 20200524181959
Versión restaurada: 20200506044956
Habilitando el modo de solo lectura...
Pausando sidekiq...
Esperando hasta 60 segundos a que Sidekiq termine de ejecutar trabajos...
Creando funciones faltantes en el esquema discourse_functions...
Restaurando el archivo volcado... (esto puede tomar un tiempo)
[recortado]
ALTER TABLE
[recortado muchas líneas duplicadas de ALTER TABLE]
ALTER TABLE
CREATE INDEX
[recortado muchas líneas duplicadas de CREATE INDEX]
CREATE INDEX
ERROR: no se pudo crear el índice único "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL: La clave (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) está duplicada.
EXCEPTION: psql falló: DETAIL: La clave (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) está duplicada.
/var/www/discourse/lib/backup_restore/database_restorer.rb:95:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:49:in `run'
script/discourse:143:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
script/discourse:284:in `\u003ctop (required)\u003e'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in \u003ctop (required)\u003e'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `\u003ctop (required)\u003e'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `\u003cmain\u003e'
Intentando revertir...
Revertiendo...
Limpizando cosas...
Eliminando funciones del esquema discourse_functions...
Eliminando el directorio tmp '/var/www/discourse/tmp/restores/default/2020-05-25-132224'...
Reanudando sidekiq...
Deshabilitando el modo de solo lectura...
Marcando la restauración como finalizada...
Notificando a 'system' el fin de la restauración...
¡Finalizado!
[FALLIDO]
Restauración completada.
root@whonix-app:/var/www/discourse#
Me pregunto cómo es posible, ya que mi antiguo servidor de producción de Discourse sigue funcionando perfectamente. Y es la segunda copia de seguridad que intento.
¿PostgreSQL 10 o PostgreSQL 12?
EDIT:
root@whonix-app:/var/www/discourse# rails c
[1] pry(main)> IncomingReferer.where(path: "/wiki/Tor_Browser")
=> [#<IncomingReferer:0x0000561cba422f48
id: 11361,
path: "/wiki/Tor_Browser",
incoming_domain_id: 3>]
[2] pry(main)>
EDIT2:
[6] pry(main)> IncomingReferer.where("path LIKE '%/wiki/Tor_Browser%'")
=> [#<IncomingReferer:0x0000561cc08882a8
id: 19,
path: "/wiki/Tor_Browser",
incoming_domain_id: 3>,
#<IncomingReferer:0x0000561cc08b3f48
id: 67,
path: "/wiki/Tor_Browser/Download_Confirmation_Screen",
incoming_domain_id: 3>,
#<IncomingReferer:0x0000561cc08b3e08
id: 331,
path: "/wiki/Tor_Browser/Internal_Updater",
incoming_domain_id: 3>,
#<IncomingReferer:0x0000561cc08b3cf0
id: 489,
path: "/wiki/Tor_Browser",
<page break> --- Presiona Enter para continuar ( q<enter> para salir ) --- <page break>
incoming_domain_id: 113>,
#<IncomingReferer:0x0000561cc08b3bb0
id: 2957,
path: "/wiki/Tor_Browser/Advanced_Users",
incoming_domain_id: 617>,
#<IncomingReferer:0x0000561cc08b3a70
id: 4052,
path: "/wiki/Tor_Browser",
incoming_domain_id: 617>,
#<IncomingReferer:0x0000561cc08b38e0
id: 4196,
path: "/wiki/Tor_Browser",
incoming_domain_id: 1513>,
#<IncomingReferer:0x0000561cc08b37f0
id: 4220,
<page break> --- Presiona Enter para continuar ( q<enter> para salir ) --- <page break>
path: "/wiki/Tor_Browser/Advanced_Users",
incoming_domain_id: 1513>,
#<IncomingReferer:0x0000561cc08b3700
id: 4307,
path: "/wiki/Tor_Browser",
incoming_domain_id: 1552>,
#<IncomingReferer:0x0000561cc08b34a8
id: 4346,
path: "/wiki/Tor_Browser/Advanced_Users",
incoming_domain_id: 1552>,
#<IncomingReferer:0x0000561cc08b3318
id: 8713,
path: "/wiki/Tor_Browser/Advanced_Users",
incoming_domain_id: 3>,
#<IncomingReferer:0x0000561cc08b3188
<page break> --- Presiona Enter para continuar ( q<enter> para salir ) --- <page break>
id: 9746,
path: "/wiki/Tor_Browser_without_Tor",
incoming_domain_id: 3>,
#<IncomingReferer:0x0000561cc08b2f08
id: 10248,
path: "/wiki/Tor_Browser_without_Tor",
incoming_domain_id: 113>,
#<IncomingReferer:0x0000561cc08b2cb0
id: 11361,
path: "/wiki/Tor_Browser",
incoming_domain_id: 3>,
#<IncomingReferer:0x0000561cc08b2bc0
id: 11754,
path: "/wiki/Tor_Browser/Advanced_Users",
incoming_domain_id: 113>,
<page break> --- Presiona Enter para continuar ( q<enter> para salir ) --- <page break>
#<IncomingReferer:0x0000561cc08b2ad0
id: 12094,
path: "/wiki/Tor_Browser/Advanced_Users",
incoming_domain_id: 4560>,
#<IncomingReferer:0x0000561cc08b28f0
id: 12892,
path: "/wiki/Tor_Browser",
incoming_domain_id: 4559>,
#<IncomingReferer:0x0000561cc08b25f8
id: 13038,
path: "/wiki/Tor_Browser",
incoming_domain_id: 4560>]
[7] pry(main)>
[8] pry(main)>