Twi*_*Kit 238 postgresql backup command-line restore
我是postgresql的新手,在本地,我使用的是pgadmin3.然而,在远程服务器上,我没有这样的奢侈品.
我已经创建了数据库的备份并将其复制了,但是,有没有办法从命令行恢复备份?我只看到与GUI或pg_dumps相关的东西,所以,如果有人能告诉我如何去做,那就太棒了!
Ste*_*ker 297
根据您创建转储文件的方式,有两种工具可供查看.
您的第一个引用源应该是手册页,pg_dump(1)因为这是创建转储本身的原因.它说:
转储可以以脚本或归档文件格式输出.脚本转储是纯文本文件,包含将数据库重建为保存时所处状态所需的SQL命令.要从这样的脚本恢复,请将其提供给psql(1).即使在其他机器和其他架构上,脚本文件也可用于重建数据库; 即使在其他SQL数据库产品上也有一些修改.
备用存档文件格式必须与pg_restore(1)一起使用才能重建数据库.它们允许pg_restore选择恢复的内容,甚至可以在恢复之前重新排序项目.归档文件格式旨在跨架构移植.
所以取决于它被淘汰的方式.您可以使用优秀的file(1)命令来解决它 - 如果它提到ASCII文本和/或SQL,它应该恢复,psql否则你应该使用pg_restore
恢复非常简单:
psql -U <username> -d <dbname> -1 -f <filename>.sql
Run Code Online (Sandbox Code Playgroud)
要么
pg_restore -U <username> -d <dbname> -1 <filename>.dump
Run Code Online (Sandbox Code Playgroud)
查看他们各自的联机帮助页 - 有很多选项会影响还原的工作方式.在恢复之前,您可能必须清理"实时"数据库或从template0重新创建它们(如注释中所指出的那样),具体取决于转储的生成方式.
小智 181
创建备份
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
Run Code Online (Sandbox Code Playgroud)
-F c是自定义格式(压缩,并且能够与-j N并行执行)-b包括blob,-v是详细的,-f是备份文件名
从备份恢复
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
Run Code Online (Sandbox Code Playgroud)
设置-h localhost - 选项很重要
Tom*_*art 74
您可能需要登录postgres才能拥有数据库的完全权限.
su - postgres
psql -l # will list all databases on Postgres cluster
Run Code Online (Sandbox Code Playgroud)
的pg_dump/pg_restore的
pg_dump -U username -f backup.dump database_name -Fc
Run Code Online (Sandbox Code Playgroud)
switch -F指定备份文件的格式:
c 将使用自定义PostgreSQL格式,该格式经过压缩并产生最小的备份文件大小d 对于每个文件是一个表的目录t 用于TAR存档(大于自定义格式)-h/ --host指定运行服务器的计算机的主机名-W/ --password强制pg_dump在连接到数据库之前提示输入密码恢复备份:
pg_restore -d database_name -U username -C backup.dump
Run Code Online (Sandbox Code Playgroud)
参数-C应在导入数据之前创建数据库.如果它不起作用,您可以随时创建数据库,例如.with command(作为postgres有权创建数据库的用户或其他帐户)createdb db_name -O owner
pg_dump的/ PSQL
如果您未指定参数,-F则使用(或使用-F p)默认纯文本SQL格式.那你就不能用了pg_restore.您可以使用导入数据psql.
备份:
pg_dump -U username -f backup.sql database_name
Run Code Online (Sandbox Code Playgroud)
恢复:
psql -d database_name -f backup.sql
Run Code Online (Sandbox Code Playgroud)
Nat*_*ros 49
POSTGRESQL 9.1.12
倾倒:
pg_dump -U user db_name > archive_name.sql
Run Code Online (Sandbox Code Playgroud)
输入用户密码并按Enter键.
恢复:
psql -U user db_name < /directory/archive.sql
Run Code Online (Sandbox Code Playgroud)
输入用户密码并按Enter键.
Yah*_*r M 30
以下是我pg_dump用来恢复数据库的版本:
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
Run Code Online (Sandbox Code Playgroud)
或使用psql:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
Run Code Online (Sandbox Code Playgroud)
其中-h主机,-p端口,-u登录用户-d名,数据库名称
小智 22
这对我有用:
pg_restore --verbose --clean --no-acl --no-owner --host=localhost --dbname=db_name --username=username latest.dump
Run Code Online (Sandbox Code Playgroud)
Sar*_* Ak 14
使用GZIP备份和恢复
对于更大尺寸的数据库,这是非常好的
备用
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
Run Code Online (Sandbox Code Playgroud)
resore
gunzip -c mydb.pgsql.gz | psql dbname -U user
Run Code Online (Sandbox Code Playgroud)
https://www.postgresql.org/docs/9.1/static/backup-dump.html
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
Run Code Online (Sandbox Code Playgroud)
恢复转储文件
psql -d [Dbname] -U [UserName] -p 5432 < [FileLocation]
Run Code Online (Sandbox Code Playgroud)
恢复 .SQL 文件
pg_restore -U [Username] -d [Dbname] -1 [FileLocation]
Run Code Online (Sandbox Code Playgroud)
如果出现用户身份验证错误,请转到程序文件中 PSQL/data 文件夹中的 pg_hba.conf 文件,并将“METHOD”更改为“Trust”。在 Windows 服务中重新启动 psql 服务器(Win + R --> services.msc)。
如果您正在使用 docker,这个答案可能会有所帮助。
docker start <postgres_container_id>
Run Code Online (Sandbox Code Playgroud)
docker exec -it <postgres_container_id> bash
Run Code Online (Sandbox Code Playgroud)
.tar到docker容器(在另一个窗口中)
docker cp postgres_dump.tar <postgres_container_id>:/
Run Code Online (Sandbox Code Playgroud)
pg_restore -c -U <postgres-user> -d <database-name> -v "postgres_dump.tar" -W
Run Code Online (Sandbox Code Playgroud)
小智 7
尝试这个:
psql -U <username> -d <dbname> -f <filename>.sql
Run Code Online (Sandbox Code Playgroud)
从 .sql 文件恢复 DB psql
小智 7
尝试:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
Run Code Online (Sandbox Code Playgroud)
打开终端.
2.使用以下命令备份数据库
你的postgres bin - /opt/PostgreSQL/9.1/bin/
您的源数据库服务器 - 192.168.1.111
您的备份文件位置和名称 - /home/dinesh/db/mydb.backup
您的源数据库名称 - mydatabase
/opt/PostgreSQL/9.1/bin/pg_dump --host'192.168.1.111' - port 5432 --username"postgres" - no-password --format custom --blobs --file"/ home/dinesh/db /mydb.backup""mydatabase"
3.删除mydb.backup文件到目的地.
您的目标服务器 - localhost
目标数据库名称 - mydatabase
create database for restore backup.
/opt/PostgreSQL/9.1/bin/psql -h 'localhost' 的-p 5432个-U Postgres的-c "CREATE DATABASE MyDatabase的"
恢复备份.
/opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost' 的--port 5432 --username "Postgres的" --dbname "MyDatabase的" --no密码--clean"/家/迪内希/ DB/MYDB.备份"
小智 6
如果您使用 pg_dump 创建备份,您可以通过以下方式轻松恢复它:
cd "C:\ProgramFiles\PostgreSQL\9.5\bin" For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql 1) 打开 psql 终端。
2) 解压/解压转储文件。
3) 创建一个空数据库。
4)使用以下命令恢复.dump文件
<database_name>-# \i <path_to_.dump_file>
Run Code Online (Sandbox Code Playgroud)
我没有看到这里提到转储文件扩展名 (*.dump)。
这个解决方案对我有用:
我有一个转储文件,需要恢复它。
首先,我尝试这样做pg_restore并得到:
pg_restore: error: input file appears to be a text format dump. Please use psql.
Run Code Online (Sandbox Code Playgroud)
我做到了psql并且运行良好:
psql -U myUser -d myDataBase < path_to_the_file/file.dump
Run Code Online (Sandbox Code Playgroud)
小智 5
恢复 postgres 备份文件取决于您最初如何进行备份。
如果您将 pg_dump 与 -F c 或 -F d 一起使用,则需要使用 pg_restore 否则您可以使用
psql -h localhost -p 5432 -U postgres < 备份文件
这是我用来备份、删除、创建和恢复我的数据库的组合(在 macOS 和 Linux 上):
sudo -u postgres pg_dump -Fc mydb > ./mydb.sql
sudo -u postgres dropdb mydb
sudo -u postgres createdb -O db_user mydb
sudo -u postgres pg_restore -d mydb < ./mydb.sql
Run Code Online (Sandbox Code Playgroud)
-Fc将压缩的数据库(˚F ORMAT Ç ustom)sudo -u postgres psql -c "\du+"./mydb.sql,然后通过以下方式更改它:
./`hostname`_mydb_`date +"%Y%m%d_%H%M"`.sql
Run Code Online (Sandbox Code Playgroud)
psql "postgresql://<db_user>:<db_pass>@<ip>:<port>/<db_name>" < "backup.sql"
Run Code Online (Sandbox Code Playgroud)
psql.exe "postgresql://<db_user>:<db_pass>@<ip>:<port>/<db_name>" < "backup.sql"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
550152 次 |
| 最近记录: |