Como baixar e restaurar o banco de dados local do Discourse

Acesse a interface de backup do site para ver todas as situações de backup atuais.


Clique no botão de download.

É importante notar que, após o download, o sistema enviará um link para o seu endereço de e-mail.

Você pode usar o link recebido em seu e-mail para baixar os dados.

Link de Download

Clique no link de download recebido no e-mail para baixar.


O arquivo baixado é um arquivo tar.gz e precisa ser descompactado para ser usado.

Por exemplo, o arquivo que baixamos atualmente é: isharkfly-2023-09-14-092024-v20230910021213.tar

Após uma série de caminhos complexos de descompactação, você encontrará o arquivo dump.sql.

Este arquivo é o backup de todo o seu banco de dados.

Restauração de Dados

O caminho de instalação do psql no PQadmin para Windows é: C:\Users\yhu\AppData\Local\Programs\pgAdmin 4\v7\runtime

Nosso comando de execução é: psql -h nas1120 -p 5433 -U postgres -W -d discourse -f C:\\Users\\yhu\\Downloads\\isharkfly-2023-09-14-092024-v20230910021213\\isharkfly-2023-09-14-092024-v20230910021213\\dump.sql\\dump.sql

O banco de dados local não pode ser sobrescrito ao restaurar.

Se o seu banco de dados local já existir, você precisará esvaziar o banco de dados existente localmente antes de poder restaurá-lo.

O processo de restauração de backup requer a restauração de todos os dados e a estrutura da tabela.

O programa de restauração não consegue restaurar sobre uma estrutura de dados existente e não realiza restauração incremental.

Verificação de Dados da Tabela

Verifique os dados da tabela para confirmar que alguns dados da tabela foram restaurados para o estado atual.


O timestamp é geralmente uma boa forma de validação.

1 curtida

Complemento.
Se o serviço de e-mail falhar, administradores com permissões SSH podem ver todos os arquivos de backup em /var/discouse/{standalone | web_only}/backup/default.

Uma nota:
Se o serviço de e-mail falhar, o administrador com permissões SSH pode ver todos os arquivos de backup em /var/discouse/{standalone | web_only}/backup/default.

3 curtidas

Como faço backup com o Minio? Não consigo entender as mensagens de erro no log, o log é o seguinte:

....
[2023-10-03 13:33:24] Removendo o diretório tmp '/var/www/discourse/tmp/backups/default/2023-10-03-133319'...
[2023-10-03 13:33:24] Compactando o arquivo, isso pode levar algum tempo...
[2023-10-03 13:33:25] Enviando o arquivo...
[2023-10-03 13:33:27] EXCEPTION: Aws::S3::Errors::Forbidden
[2023-10-03 13:33:27] /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/object.rb:445:in `rescue in exists?'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/object.rb:440:in `exists?'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:46:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:344:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2023-10-03 13:33:27] Excluindo backups antigos...
[2023-10-03 13:33:28] Limpando coisas...
[2023-10-03 13:33:28] Removendo o arquivo do armazenamento local...
[2023-10-03 13:33:28] Removendo sobras de '.tar'...
[2023-10-03 13:33:28] Marcando o backup como concluído...
[2023-10-03 13:33:28] Notificando 'XXX' sobre o fim do backup...

O log acima deve estar dizendo que o S3 não tem permissão.

Verifique se as permissões do seu S3 estão configuradas corretamente.

Aqui estão minhas configurações, por favor, me ajudem a ver onde está o problema:

  1. Configurações do Discourse
  2. Configurações de permissão do bucket de backup do Minio
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::discourse-backup"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::discourse-backup/*"
            ]
        }
    ]
}
  1. A permissão do bucket de upload do Minio é pública

Consulte este artigo para ver: discourse-docs/minio.md at master · rishabhnambiar/discourse-docs · GitHub

Este artigo ainda é da época em que o path style era suportado, agora apenas o estilo DNS é suportado, e não consigo encontrar tutoriais de configuração do MinIO em toda a rede.

Então, vamos ver se o problema pode estar nas configurações do Minio.

Tente usar outra ferramenta, como uma que possa acessar diretamente o bucket, para fazer o upload.

Se o upload funcionar diretamente aqui, o problema provavelmente está na configuração do Discourse. Se não funcionar, o problema provavelmente são as permissões.