восстановить файл резервной копии postgres с помощью командной строки?

<p>я новичок в postgresql и локально использую pgadmin3. однако на удаленном сервере такой роскоши у меня нет.</p><p>я уже создал резервную копию базы данных и скопировал ее, но есть ли способ восстановить резервную копию из командной строки? я вижу только вещи, связанные с gui или pg\_dumps, так что, если кто-нибудь скажет мне, как это сделать, это будет потрясающе!</p>

<p>есть два инструмента, которые нужно посмотреть, в зависимости от того, как вы создали файл дампа.</p><p>первым источником информации должна быть справочная страница <code>pg\_dump(1)</code>, поскольку именно она создает сам дамп. это говорит:</p><blockquote> <p>дампы могут быть выведены в сценарии или форматы архивных файлов. скрипты дампов текстовые файлы, содержащие sql команды, необходимые для восстановления база данных до состояния это было в то время, когда он был сохранен. для восстановить из такого скрипта, скормить его в psql (1). файлы сценариев могут быть использованы восстановить базу данных даже на других машинах и прочее архитектуры; с некоторыми изменениями даже на других продуктах баз данных sql.</p> <p>альтернативные форматы архивных файлов должен использоваться с pg\_restore (1) до восстановить базу данных. они разрешают pg\_restore, чтобы быть избирательным о чем восстановлен, или даже изменить порядок предметы до восстановления. форматы архивных файлов предназначены для быть переносимым между архитектурами.</p> </blockquote><p>так что зависит от того, как он был сброшен. вы, вероятно, можете понять это с помощью превосходной команды <code>file(1)</code> - если в ней упоминается текст ascii и/или sql, его следует восстановить с помощью <code>psql</code>, в противном случае вам, вероятно, следует использовать <code>pg\_restore</code></p><p>восстановление довольно просто:</p><pre><code>psql -u <username> -d <dbname> -1 -f <filename>.sql </code></pre><p>или же</p><pre><code>pg\_restore -u <username> -d <dbname> -1 <filename>.dump </code></pre><p>проверьте их соответствующие man-страницы - есть довольно много вариантов, которые влияют на то, как работает восстановление. возможно, вам придется очистить ваши «живые» базы данных или воссоздать их из template0 (как указано в комментарии) перед восстановлением, в зависимости от того, как были созданы дампы.</p>

<p><strong> создать резервную копию </strong></p><pre><code>pg\_dump -h localhost -p 5432 -u postgres -f c -b -v -f "/usr/local/backup/10.70.0.61.backup" old\_db </code></pre><p>-f c - это пользовательский формат (сжатый и может работать параллельно с -j n) -b - включает в себя большие двоичные объекты, -v - подробный, -f - имя файла резервной копии.</p><p><strong> восстановить из резервной копии </strong></p><pre><code>pg\_restore -h localhost -p 5432 -u postgres -d old\_db -v "/usr/local/backup/10.70.0.61.backup" </code></pre><p><em>важно установить<strong> -h localhost </strong>- option</em></p>

<p>вам может потребоваться войти в систему как <code>postgres</code>, чтобы иметь полные права на базы данных.</p><pre><code>su - postgres psql -l # will list all databases on postgres cluster </code></pre><p><strong> pg\_dump/pg\_restore </strong></p><pre><code> pg\_dump -u username -f backup.dump database\_name -fc </code></pre><p>ключ <code>-f</code> указать формат файла резервной копии:</p><ul> <li><code>c</code> будет использовать собственный формат postgresql, который сжимается и приводит к наименьшему размеру файла резервной копии</li> <li><code>d</code> для каталога, где каждый файл представляет собой одну таблицу</li> <li><code>t</code> для архива tar (больше, чем пользовательский формат)</li> <li><code>-h</code>/<code>--host</code> указывает имя хоста компьютера, на котором работает сервер</li> <li><code>-w</code>/<code>--password</code> принудительно <code>pg\_dump</code> запрашивать пароль перед подключением к базе данных </li> </ul><p>восстановление резервной копии:</p><pre><code> pg\_restore -d database\_name -u username -c backup.dump </code></pre><p>параметр <code>-c</code> должен создать базу данных перед импортом данных. если это не работает, вы всегда можете создать базу данных, например. с командой (от имени пользователя <code>postgres</code> или другой учетной записи, имеющей права на создание баз данных) <code>createdb db\_name -o owner</code></p><p><strong> pg\_dump/psql </strong></p><p>в случае, если вы не указали аргумент <code>-f</code>, по умолчанию использовался обычный текстовый формат sql (или с <code>-f p</code>). тогда вы не можете использовать <code>pg\_restore</code>. вы можете импортировать данные с помощью <code>psql</code>.</p><p>резервное копирование:</p><pre><code>pg\_dump -u username -f backup.sql database\_name </code></pre><p>восстановить: </p><pre><code>psql -d database\_name -f backup.sql </code></pre>

<p>postgresql 9.1.12</p><p>dump:</p><pre><code>pg\_dump -u user db\_name > archive\_name.sql </code></pre><p>введите пароль пользователя и нажмите ввод.</p><p>восстановить:</p><pre><code>psql -u user db\_name < /directory/archive.sql </code></pre><p>введите пароль пользователя и нажмите ввод.</p>

<p>ниже моя версия <code>pg\_dump</code>, которую я использую для восстановления базы данных:</p><pre><code>pg\_restore -h localhost -p 5432 -u postgres -d my\_new\_database my\_old\_database.backup </code></pre><p>или используйте <code>psql</code>:</p><pre><code>psql -h localhost -u postgres -p 5432 my\_new\_database < my\_old\_database.backup </code></pre><p>где <code>-h</code> хост, <code>-p</code> порт, <code>-u</code> логин, <code>-d</code> имя базы данных</p>

<p><strong>резервное копирование и восстановление с помощью gzip</strong></p><blockquote> <p>для базы данных большего размера это очень хорошо</p> </blockquote><p>резервное копирование</p><pre><code>pg\_dump -u user -d mydb | gzip > mydb.pgsql.gz </code></pre><p>resore</p><pre><code>gunzip -c mydb.pgsql.gz | psql dbname -u user </code></pre><p> <a href="https://www.postgresql.org/docs/9.1/static/backup-dump.html">https://www.postgresql.org/docs/9.1/static/backup-dump.html</a> </p>

<pre><code>backup: $ pg_dump -u {user-name} {source_db} -f {dumpfilename.sql} restore: $ psql -u {user-name} -d {desintation\_db} -f {dumpfilename.sql} </code></pre>

<p><strong>1.откройте терминал.</strong></p><p><strong>2. сделайте резервную копию вашей базы данных с помощью следующей команды</strong></p><p>ваш postgres bin - /opt/postgresql/9.1/bin/</p><p>ваш исходный сервер базы данных - 192.168.1.111</p><p>расположение и имя файла резервной копии - /home/dinesh/db/mydb.backup</p><p>ваше имя базы данных источника - mydatabase</p><p>/opt/postgresql/9.1/bin/pg\_dump --host '192.168.1.111' --port 5432 --username "postgres" --no-пароль - отформатировать пользовательские --blobs --file "/ home/dinesh/db /mydb.backup "" моя база данных "</p><p><strong>3. восстановить файл mydb.backup в место назначения.</strong></p><p>ваш целевой сервер - localhost</p><p>имя вашей целевой базы данных - mydatabase</p><p><strong>создать базу данных для восстановления резервной копии.</strong></p><p>/opt/postgresql/9.1/bin/psql -h 'localhost' -p 5432 -u postgres -c "create database mydatabase"</p><p><strong>восстановить резервную копию.</strong></p><p>/opt/postgresql/9.1/bin/pg\_restore --host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/ home/dinesh/db/mydb. резервное копирование"</p>

<p>как сказано ниже, вы можете использовать команду psql для восстановления файла дампа:</p><p> <a href="https://www.postgresql.org/docs/8.1/static/backup.html#backup-dump-restore">https://www.postgresql.org/docs/8.1/static/backup.html#backup-dump-restore</a> </p><pre><code>psql dbname < infile </code></pre><p>если вам нужно установить имя пользователя, просто добавьте имя пользователя после команды, например:</p><pre><code>psql dbname < infile username </code></pre>

<p>попробуйте посмотреть, могут ли вам помочь следующие команды:</p><pre><code>sudo su - yourdbuser psql \i yourbackupfile </code></pre>

<p>если вы создаете резервную копию с помощью pg\_dump, вы можете легко восстановить ее следующим образом:</p><ol> <li>открыть окно командной строки</li> <li>перейдите в папку postgres bin. например: <code> cd "c:\programfiles\postgresql\9.5\bin"</code></li> <li>введите команду для восстановления вашей базы данных. <code> for example: psql.exe -u postgres -d yourdatabase -f d:\backup\.sql </code></li> <li>введите пароль для вашего пользователя postgres</li> <li>проверьте процесс восстановления</li> </ol>

<p>если у вас есть резервный файл sql, вы можете легко восстановить его. просто следуйте инструкциям, приведенным ниже</p><pre><code>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 </code></pre><p>введите пароль для вашего пользователя postgres, если это необходимо, и позвольте postgres выполнять свою работу. затем вы можете проверить процесс восстановления.</p>

<p>восстановление файла резервной копии postgres зависит от того, как вы взяли резервную копию в первую очередь.</p><p>если вы использовали pg\_dump с -f c или -f d, вам нужно использовать pg\_restore, иначе вы можете просто использовать </p><blockquote> <p>psql -h localhost -p 5432 -u postgres <резервный файл</p> </blockquote><p> <a href="http://www.brownfort.com/2014/10/backup-restore-postgresql/">9 способов резервного копирования и восстановления баз данных postgres</a> </p>

<p>1) откройте терминал psql.</p><p>2) разархивируйте/распакуйте файл дампа.</p><p>3) создать пустую базу данных.</p><p>4) используйте следующую команду для восстановления файла .dump</p><pre><code><database\_name>-# \i <path\_to\_.dump\_file> </code></pre>

<p>пытаться:</p><pre><code>pg\_restore -h localhost -p 5432 -u <username> -d <dbname> -1 <filename> </code></pre>

<p>если вы хотите сделать резервную копию ваших данных или восстановить данные из резервной копии, вы можете выполнить следующие команды:</p><p>1 чтобы создать резервную копию ваших данных, перейдите в каталог postgres\bin \, например <code>c:\programfiles\postgres\10\bin\</code>, и введите следующую команду - <code>pg\_dump -fc -u ngb -d ngb -p 5432 >c:\back\_up\ngb.090718\_after\_readupload.backup</code></p><p>2 чтобы восстановить данные из резервной копии, перейдите в каталог postgres\bin \, например <code>c:\programfiles\postgres\10\bin\</code>, а затем введите следующую команду - <code>c:\programfiles\postgres\10\bin> pg\_restore -fc -u ngb -d ngb -p 5432 <c:\ngb.130918.backup</code></p><p>пожалуйста, убедитесь, что файл резервной копии существует.</p>

<p>у меня были проблемы с аутентификацией при запуске pg\_dump, поэтому я переместил свой файл дампа</p><pre><code>mv database\_dump /tmp </code></pre><p>во временный каталог, а затем побежал</p><pre><code>su -u postgres cd /tmp pg\_restore database\_dump </code></pre><p>если у вас большой дамп базы данных, вы можете просто создать другой каталог, к которому ваш текущий пользователь и пользователь postgres могут получить доступ и поместить в него файл дампа базы данных.</p>

<p>попробуй это:</p><pre><code>psql -u <username> -d <dbname> -f <filename>.sql </code></pre><p>восстановить psql бд из файла .sql</p>