Eu sou novo em postgresql e, localmente, uso o pgadmin3. No servidor remoto, no entanto, não tenho esse luxo.
Eu já criei o backup do banco de dados e o copiei, mas existe uma maneira de restaurar um backup a partir da linha de comando? Eu só vejo coisas relacionadas à GUI ou ao pg_dumps, então, se alguém puder me dizer como fazer isso, seria ótimo!
Existem duas ferramentas para examinar, dependendo de como você criou o arquivo de despejo.
Sua primeira fonte de referência deve ser a página de manual pg_dump(1)
, pois é isso que cria o próprio dump. Diz:
Despejos podem ser gerados em scripts ou Formatos de arquivo. Despejos de script são Arquivos de texto simples contendo os comandos SQL Necessários para reconstruir O banco de dados para o estado em que estava No momento em que foi salvo. Para Restaurar de tal script, alimente-o para Psql (1). Os arquivos de script podem ser usados Para reconstruir o banco de dados, mesmo , Em outras máquinas e outras arquiteturas ; com algumas modificações mesmo em outros produtos de banco de dados SQL.
Os formatos de arquivo alternativos Devem ser usados com o pg_restore (1) para Reconstruir o banco de dados. Eles permitem que Pg_restore seja seletivo sobre o que É restaurado, ou até mesmo para reordenar os itens Antes de serem restaurados. Os formatos de arquivo São projetados para Serem portáveis entre as arquiteturas.
Então depende da maneira como foi descartada. Você provavelmente pode descobrir usando o excelente comando file(1)
- se ele menciona texto ASCII e/ou SQL, ele deve ser restaurado com psql
caso contrário você provavelmente deve usar pg_restore
Restaurar é bem fácil:
psql -U <username> -d <dbname> -1 -f <filename>.sql
ou
pg_restore -U <username> -d <dbname> -1 <filename>.dump
Confira suas respectivas páginas de trabalho - há algumas opções que afetam como a restauração funciona. Você pode ter que limpar seus bancos de dados "ao vivo" ou recriá-los do template0 (como apontado em um comentário) antes de restaurar, dependendo de como os dumps foram gerados.
criar backup
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
-F c é um formato personalizado (compactado e capaz de fazer em paralelo com -j N) -b está incluindo blobs, -v é detalhado, -f é o nome do arquivo de backup
restaurar a partir do backup
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
importante para definir -h localhost - opção
Talvez seja necessário efetuar login como postgres
para ter privilégios totais nos bancos de dados.
su - postgres
psql -l # will list all databases on Postgres cluster
pg_dump/pg_restore
pg_dump -U username -f backup.dump database_name -Fc
switch -F
especifica o formato do arquivo de backup:
c
usará o formato personalizado do PostgreSQL que é compactado e resulta no menor tamanho de arquivo de backupd
para o diretório em que cada arquivo é uma tabelat
para arquivo TAR (maior que o formato personalizado)-h
/--Host
Especifica o nome do host da máquina na qual o servidor está executando-W
/--password
Force pg_dump
to Solicitar uma senha antes de se conectar a um banco de dados restaurar backup:
pg_restore -d database_name -U username -C backup.dump
O parâmetro -C
deve criar um banco de dados antes de importar os dados. Se isso não funcionar, você pode sempre criar banco de dados, por exemplo. com o comando (como usuário postgres
ou outra conta que tenha direitos para criar bancos de dados) createdb db_name -O owner
pg_dump/psql
Caso você não tenha especificado o argumento -F
, foi usado o formato SQL padrão de texto simples (ou com -F p
). Então você não pode usar pg_restore
. Você pode importar dados com psql
.
cópia de segurança:
pg_dump -U username -f backup.sql database_name
restaurar:
psql -d database_name -f backup.sql
POSTGRESQL 9.1.12
DESCARTE:
pg_dump -U user db_name > archive_name.sql
coloque a senha do usuário e pressione enter.
RESTAURAR:
psql -U user db_name < /directory/archive.sql
coloque a senha do usuário e pressione enter.
Abaixo está a minha versão do pg_dump
que eu uso para restaurar o banco de dados:
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
ou use psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
onde -h
Host, -p
port, -u
nome de usuário de login, -d
nome do banco de dados
Backup e restauração com GZIP
Para banco de dados de tamanho maior isso é muito bom
cópia de segurança
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
resore
gunzip -c mydb.pgsql.gz | psql dbname -U user
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
1. abra o terminal.
2.backup seu banco de dados com o seguinte comando
seu postgres bin - /opt/PostgreSQL/9.1/bin/
seu servidor de banco de dados de origem - 192.168.1.111
a localização e o nome do seu arquivo de backup - /home/dinesh/db/mydb.backup
seu nome do banco de dados de origem - mydatabase
/opt/PostgreSQL/9.1/bin/pg_dump --Host '192.168.1.111' --port 5432 --username "postgres" --no-password --format personalizado --blobs --file "/ home/dinesh/db /mydb.backup "" mydatabase "
Arquivo 3.restore mydb.backup no destino.
seu servidor de destino - localhost
o nome do seu banco de dados de destino - mydatabase
criar banco de dados para restaurar o backup.
/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "CRIAR BANCO DE DADOS mydatabase"
restaura o backup.
/opt/PostgreSQL/9.1/bin/pg_restore --Host 'localhost' --port 5432 --username "postgres" --dbnome "mydatabase" --no-password --clean "/ home/dinesh/db/mydb. cópia de segurança"
Como abaixo link disse, você pode usar o comando psql para restaurar o arquivo de despejo:
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
se você precisar definir o nome de usuário, basta adicionar o nome de usuário após o comando, como:
psql dbname < infile username
Tente ver se os seguintes comandos podem ajudá-lo:
Sudo su - yourdbuser
psql
\i yourbackupfile
Se você criar um backup usando o pg_dump, poderá restaurá-lo da seguinte maneira:
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
Se você tiver um arquivo SQL de backup, poderá restaurá-lo facilmente. Basta seguir as instruções, dadas no abaixo
1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example: cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql
Digite a senha para o seu usuário postgres, se necessário, e deixe o Postgres fazer seu trabalho. Então você pode verificar o processo de restauração.
Restaurar um arquivo de backup do postgres depende de como você fez o backup em primeiro lugar.
Se você usou pg_dump com -F c ou -F d você precisa usar o pg_restore, caso contrário você pode simplesmente usar
psql -h localhost -p 5432 -U postgres <arquivo de backup
9 maneiras de fazer backup e restaurar bancos de dados postgres
1) Abra o terminal psql.
2) Descompacte/descompacte o arquivo de despejo.
3) Crie um banco de dados vazio.
4) use o seguinte comando para restaurar o arquivo .dump
<database_name>-# \i <path_to_.dump_file>
experimentar:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
Se você quiser fazer backup de seus dados ou restaurar dados de um backup, execute os seguintes comandos:
1 Para criar backup de seus dados, vá para o diretório postgres\bin\como C:\programfiles\postgres\10\bin\
e digite o seguinte comando - pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup
2 Para restaurar dados de um backup, vá para o diretório postgres\bin\como C:\programfiles\postgres\10\bin\
e digite o comando abaixo - C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
Por favor, certifique-se que o arquivo de backup existe.
Eu estava tendo problemas de autenticação com o pg_dump, então mudei meu arquivo de despejo
mv database_dump /tmp
no diretório temp e, em seguida, correu
su -u postgres
cd /tmp
pg_restore database_dump
Se você tiver um despejo de banco de dados grande, talvez queira apenas criar outro diretório no qual o usuário atual e o usuário do postgres possam acessar e colocar o arquivo de despejo do banco de dados nele.
tente isso:
psql -U <username> -d <dbname> -f <filename>.sql
Restaurar o banco de dados psql do arquivo .sql