¿Has probado una nueva instalación sin restauración pero conectándote a tu base de datos backend existente?
Supongo que eso significa perder potencialmente cualquier configuración realizada en la interfaz de usuario que no se haya guardado en la base de datos. No estoy seguro de qué más se copia y restaura.
Quizás deberías considerar dejar Bitnami por una instalación estándar real. Tus problemas no son causados por “errores en la migración de la base de datos”, son específicos de Bitnami.
¿Kubernetes permite hacer una instalación manual? Si es así, podrías hacer una instalación estándar de esa manera. (Nunca lo he intentado, así que no sé cómo funciona Kubernetes)
Te escucho alto y claro sobre las ventajas de la instalación estándar y la naturaleza independiente y no sancionada del gráfico Helm de Bitnami. No pretendía insinuar que la culpa recae en Discourse en sí. Mi elección de usar Bitnami sigue dependiendo de un cálculo que compara el costo de solucionar problemas con el gráfico de Bitnami y el costo de desarrollar mi propio gráfico Helm equivalente basado en la instalación compatible oficialmente y luego solucionar problemas con él.
Lo consideré, pero estoy tratando de evitar modificaciones en la configuración predeterminada del gráfico para mantenerme “en el camino principal”. Dicho esto, intenté actualizar solo el servidor de Discourse a la v3.2.0 anulando la etiqueta de la imagen de Deployment, mientras conservaba la base de datos existente, para ver si la migración tenía éxito; todavía falló.
He intentado eliminar y restaurar manualmente la base de datos a través de kubectl exec en el contenedor de postgres usando el archivo de volcado SQL generado por el propio Discourse, pero esto falla con el error sobre la tabla sidebar_sections. Más recientemente, creé una nueva VM y seguí el método de instalación estándar para instalar Discourse v3.3.0. Cuando intenté una restauración de copia de seguridad, ocurrió el mismo error.
Mi conclusión es que, aunque el archivo de copia de seguridad de producción fue generado por el propio Discourse, la estructura de la base de datos de mi instancia de producción v3.0.6 es de alguna manera diferente de lo que espera Discourse, lo que provoca errores en las migraciones. Si este es el caso, soy pesimista sobre mis opciones. La única idea que tengo en este momento es empezar a modificar el archivo de volcado SQL en el archivo de copia de seguridad para eliminar las tablas que causan los errores DuplicateTable en la etapa de migración de la base de datos del proceso de restauración.
Con la esperanza de que esto salve a alguien de pasar horas como yo en esta situación, aquí está el proceso que finalmente me permitió actualizar de Discourse v3.0.6 a v3.2.0 en el contexto de usar el gráfico Helm de Bitnami (v11 a v12). Si bien más descargos de responsabilidad no deberían ser necesarios según los comentarios anteriores, este problema se debe a un error en el gráfico Helm de Bitnami y sus imágenes personalizadas; el problema no afecta a las versiones oficiales de Discourse.
Las instrucciones a continuación muestran cómo navegar por la actualización. El “sitio de producción” es una versión del gráfico Helm del sitio de Discourse que se está actualizando, y el “sitio de migración” se refiere a una versión temporal del gráfico implementada en paralelo en el espacio de nombres discourse-dev.
Sitio de producción
Establezca el foro de producción en modo de solo lectura en el panel de administración de Copias de seguridad /admin/backups.
Realice una copia de seguridad utilizando el panel de administración de Copias de seguridad. Descargue el archivo de copia de seguridad localmente.
Sitio de migración
Instale una nueva instancia del gráfico Bitnami v12.6.2 (Discourse v3.2.0). Redimensione el despliegue del servidor Discourse a cero.
cat > /tmp/db_init.sql << EOF
DROP DATABASE bitnami_application;
CREATE DATABASE bitnami_application;
GRANT ALL PRIVILEGES ON DATABASE bitnami_application TO bn_discourse;
CREATE EXTENSION hstore;
CREATE EXTENSION pg_trgm;
ALTER database bitnami_application owner to bn_discourse ;
EOF
Por alguna razón, los complementos no se descargaron e instalaron automáticamente. Haga esto manualmente y verifique la funcionalidad de los complementos.