Перенос базы postgresql с linux на windows

Есть Ubuntu с базой postgresql. Нужно эту же базу перенести на Windows. На Убунту сделал дамп следующим образом :

sudo su - postgres
pg_dump postgres > postgres_db.sql

На Windows делаю импорт следующим образом:

"C:\Program Files\PostgreSQL\10\bin\psql.exe" test < "E:\\Shared\\backup.sql"

Необходимо дальше ввести пароль. Ввожу пароль и получаю ошибку

psql: ВАЖНО:  пользователь "User" не прошёл проверку подлинности (по паролю)

spoiler

5aba87d79b430322238671.png

Непойму почему так. Во-первых неясно пароль какого пользователя запрашивается? На винде никаких паролей не было. Значит пароль с убунту, но там есть пароль именно администратора, а есть пароль пользователя postgresql. В любом случае ни тот ни другой пароль не подходят. Как мне заимпортить дамп в бд на винде? Помогите, просто крик души.

Добрый день. Кратко ситуация:
Была 1 машина с win2008r2, на ней работает postgres9.02 , сервер 1с 8.2, клиенты 1с в терминальных сессиях. база порядка 20гВ. Хоть и характеристики сервера не самые плохие но что то жутко тормозит при работе в 1с , и регулярно не предсказуемо подвисает. Проведение документов за месяц вообще не успевает произойти за ночь, а в рабочее время и не пытаемся запускать. Для выявления причин проблемы , ради эксперимента , на машинке которая не плохая, но все ж конечно не дотягивает до первого основного сервера по мощности. Мною установлен SUSE open 12.1 и Postgres 9.02. Таким образом там подняли базу 1с. А именно средствами 1с выгрузили в «дт» и в ту базу загрузили. таким образом получилась та же схема что и ранее , только к самим базам 1с сервер обращается к машине linux. Результат порадовал, работать стало все быстрее , зависания прекратились. Определились что как минимум часть проблемы в постгри на вин сервере. но это отдельная тема. Посколько с linux общаюсь давно то быстренько настроил резервное копирование и реиндексацию средствами psql. pg_dump b pg_restore работают в пределах машины linux замечательно. а вот как восстановить базу на win машине?. Уточняю вопрос:
Как правильно выгрузить на linux машине с помощью pg_dump ,базу , так чтоб она загрузилась pg_restore на windows (2008r2) машине???
попытка сделать это также как в linux — не увенчалась успехом. вываливает кучу ошибок явно связаных с кодировкой . Подскажите такое восстановление вообще возможно и если да то как именно это правильно делать , а потом уж попробую разобратся в ошибках..
Спасибо, жду помощи.1

Всем привет! Сегодня мы рассмотрим процесс переноса базы данных PostgreSQL с одного сервера на другой, например, с компьютера разработчика на production-сервер, при этом мы будем использовать графический инструмент pgAdmin 4.

Перенос базы данных PostgreSQL на другой сервер с помощью pgAdmin 4

Заметка! Установка и настройка PostgreSQL на Windows 10.

Содержание

  1. Исходные данные. Задача
  2. Создание дампа базы данных PostgreSQL в pgAdmin 4
  3. Создание дампа базы данных в сжатом формате
  4. Создание дампа базы данных в простом формате SQL
  5. Импорт дампа базы данных PostgreSQL в pgAdmin 4
  6. Импорт сжатого дампа базы данных
  7. Импорт дампа базы данных в формате SQL
  8. Видео – Перенос базы данных PostgreSQL на другой сервер с помощью pgAdmin 4

Исходные данные. Задача

Допустим, мы разрабатываем базу данных в PostgreSQL, при этом мы используем обычный клиентский компьютер под управлением операционной системы Windows 10, где собственно локально и установлен PostgreSQL.

В качестве инструмента разработки мы используем стандартное графическое приложение pgAdmin 4.

pgAdmin 4 – это стандартный и бесплатный графический инструмент для разработки баз данных в PostgreSQL, который можно использовать для написания SQL запросов, разработки процедур, функций, а также для выполнения базовых задач администрирования баз данных.

В итоге базу данных мы разработали, протестировали ее, внесли в нее необходимые данные, заполнили справочники, в общем, база данных готова.

Теперь у нас возникла необходимость перенести эту базу данных на реальный сервер, который и будет выступать в качестве сервера баз данных. И так как мы используем PostgreSQL, в качестве такого сервера баз данных обычно выступает сервер под управлением операционной системы Linux.

Таким образом, нам необходимо перенести базу данных PostgreSQL, разработанную в Windows, в базу данных PostgreSQL на Linux. В моем случае в качестве операционной системы Linux будет выступать дистрибутив Debian.

Заметка! Как установить PostgreSQL на Linux Debian.

Весь процесс переноса базы данных PostgreSQL достаточно простой, суть в следующем.

Нам необходимо создать копию нашей базы данных (дамп), затем создать пустую базу на нужном нам сервере и восстановить все данные, используя созданный ранее дамп.

Все это можно сделать с нашего клиентского компьютера, используя pgAdmin 4, если, конечно же, целевой сервер нам доступен, если недоступен, то придётся каким-то другим образом переносить дамп базы данных на нужный сервер и, используя стандартные консольные утилиты, восстановить базу данных из дампа.

Кстати, стоит отметить, что pgAdmin 4 для экспорта/импорта баз данных использует как раз эти стандартные консольные утилиты, в частности pg_dump, pg_dumpall и pg_restore, которые по умолчанию входят в состав PostgreSQL.

pg_dump – утилита для экспорта баз данных PostgreSQL

pg_dumpall – утилита для экспорта кластера баз данных PostgreSQL (всех данных на сервере)

pg_restore – утилита восстановления баз данных PostgreSQL из файла архива

Таким образом, благодаря pgAdmin 4 нам не нужно писать и выполнять команды в командной строке, за нас все это делает pgAdmin 4, мы всего лишь будем пользоваться мышкой, настраивая все параметры в графическом интерфейсе.

Создать дамп базы данных PostgreSQL можно в нескольких форматах, в частности:

Специальный (Custom) – это пользовательский формат, который использует сжатие. Данный формат по умолчанию предлагается в pgAdmin 4 и рекомендован для средних и больших баз данных. Обычно архивные файлы в таком формате создают с расширением backup, однако можно использовать и другое расширение.

Tar (tar) – база данных выгружается в формат tar. Данный формат не поддерживает сжатие.

Простой (plain) – в данном случае база данных выгружается в обычный текстовый SQL-скрипт, в котором все объекты базы данных и непосредственно сами данные будут в виде соответствующих SQL инструкций. Данный скрипт можно легко отредактировать в любом текстовом редакторе и выполнить, используя Query Tool, как обычные SQL запросы. Данный формат рекомендован для небольших баз данных, а также для тех случаев, когда требуется внести изменения в дамп базы данных перед восстановлением.

Заметка! Что такое SQL. Назначение и основа.

Каталог (directory) – этот формат файла создает каталог, в котором для каждой таблицы и большого объекта будут созданы отдельные файлы, а также файл оглавления в машиночитаемом формате, понятном для утилиты pg_restore. Этот формат по умолчанию использует сжатие, а также поддерживает работу в несколько потоков.

В данном материале мы рассмотрим создание дампа в специальном формате, а также в формате обычного SQL скрипта, дело в том, что процесс восстановления базы данных из этих форматов в pgAdmin 4 немного отличается.

Создание дампа базы данных в сжатом формате

Чтобы создать дамп базы данных PostgreSQL в pgAdmin 4, необходимо в обозревателе выбрать нужную базу данных, я выбираю базу данных shop, далее необходимо вызвать контекстное меню правой кнопкой мыши и нажать на пункт «Резервная копия».

Затем всего лишь нужно указать имя архивного файла и путь к каталогу, где его сохранить, для этого можно использовать кнопку с тремя точками.

Формат «Специальный», как было отмечено ранее, предлагается по умолчанию, поэтому выбирать его не требуется.

Как я уже отмечал, обычно архив в таком формате создают с расширением backup, я так и поступаю, т.е. архив назову shop.backup и сохраню его в каталоге D:\PostgreSQL_Backup\.

В случае необходимости задать определенный уровень сжатия можно с помощью параметра «Коэффициент сжатия», поддерживаются значения от 0 до 9, где 0 – вообще не использовать сжатие, а 9 самый высокий уровень сжатия, по умолчанию используется умеренное сжатие.

В нашем случае база данных небольшая, поэтому мы можем оставить все по умолчанию.

Больше никаких настроек в нашем случае делать нет необходимости, и мы можем нажать на кнопку «Резервная копия», чтобы запустить процесс создания дампа базы данных.

Скриншот 1

Когда появится сообщение «Успешно завершено», значит, процесс создания дампа базы данных PostgreSQL завершен успешно, в противном случае Вы будете получать сообщения о неуспешном завершении.

Скриншот 2

Заметка! ТОП 5 популярных систем управления базами данных (СУБД).

Создание дампа базы данных в простом формате SQL

В данном случае нам необходимо сделать практически все то же самое, только нужно выбрать формат «Простой» и дополнительно включить пару параметров, чтобы добавление данных осуществлялось с помощью обычных инструкций INSERT, а не с помощью команды COPY, которая используется по умолчанию.

Для этого переходим на вкладку «Параметры выгрузки» и включаем два параметра «Использовать команды INSERT» и «INSERT с указанием столбцов», хотя данный параметр можно и не указывать.

Заметка! Начинающим программистам рекомендую почитать мою книгу «SQL код», которая поможет Вам изучить язык SQL как стандарт, в ней рассматриваются все базовые конструкции языка SQL, приводится много примеров и скриншотов.

Скриншот 3

Импорт дампа базы данных PostgreSQL в pgAdmin 4

Дамп готов, теперь можно переходить к восстановлению базы данных из этого дампа. Однако перед тем как приступать к импорту, необходимо создать пустую базу данных, в которую собственно и импортировать все данные, как это делается, я подробно рассказывал в отдельном материале.

Заметка! Как создать базу данных в PostgreSQL с помощью pgAdmin 4.

Все действия по созданию базы данных и восстановлению данных этой базы из архивной копии мы будем делать все на том же компьютере с помощью того же pgAdmin 4, только для этого необходимо подключиться к нужному нам серверу (пункт контекстного меню «Создать сервер» и ввести настройки для подключения, подробнее, как это делается, я рассказывал в той же статье, которая посвящена установке PostgreSQL на Debian).

Импорт сжатого дампа базы данных

Чтобы импортировать базу данных, дамп который был создан в «специальном» формате, необходимо на целевом сервере выбрать базу данных, которую требуется восстановить из дампа (мы ее предварительно создали), в контекстном меню выбрать пункт «Восстановить», затем в пункте «Имя файла», используя кнопку с тремя точками, указать файл дампа, который мы создали чуть ранее с расширением backup.

Больше никаких настроек вводить не требуется, нужный формат выбран по умолчанию, мы можем сразу нажимать кнопку «Восстановить».

Скриншот 4

Когда появится сообщение «Успешно завершено», процесс будет завершен.

Скриншот 5

В результате все данные будут восстановлены из дампа, и таким образом мы перенесли базу данных PostgreSQL на новый сервер.

Заметка! Как создать таблицу в PostgreSQL с помощью pgAdmin 4.

Импорт дампа базы данных в формате SQL

В случае с простым форматом, т.е. с обычными SQL инструкциями, использовать отдельный функционал для восстановления не получится, поэтому мы можем просто выполнить SQL скрипт, который содержится в этом файле.

Для этого открываем Query Tool (запросник) в контексте нужной нам базы данных, затем используя кнопку «Открыть файл» выбираем наш дамп в формате SQL и нажимаем кнопку «Выполнить».

Если инструкция выполнится без ошибок, значит, все хорошо.

Скриншот 6

Примечание! Если Вы уже восстановили базу данных предыдущим способом, то, чтобы использовать этот способ, необходимо пересоздать базу данных, иначе возникнет конфликт и, соответственно, ошибка, так как все объекты в базе уже будут существовать.

В итоге мы перенесли базу данных PostgreSQL с одного сервера, который управляется операционной системой Windows, на другой, который управляется Linux, хотя это, как Вы понимаете, в нашем случае было не так принципиально.

Стоит отметить, что если требуется перенести базу данных, размер которой достаточно большой, например, несколько десятков или сотен гигабайт, то лучше напрямую использовать консольные утилиты pg_dump или pg_dumpall, т.е. без графического интерфейса pgAdmin 4.

Опрос. Какой операционной системой Вы пользуетесь?

Видео – Перенос базы данных PostgreSQL на другой сервер с помощью pgAdmin 4

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Logo
MurCode

  • Форумы
  • Поиск
  • О проекте

Завитушкин

Дата: 11.05.2017 10:44:30

Сделал sql-backup c базы(командой pg_dump.exe —host servername —username «postgres» —no-password —format custom —blobs —verbose —file «D:\db.dump» —schema «s1» —schema «s2» «DatabaseName»), имеющей параметры кодировки UTF-8 LC_COLLATE = ‘ru_RU.UTF8’ LC_CTYPE = ‘ru_RU.UTF8’. Пытаюсь импортнуть в базу c win1251 при помощи psql естесственно ничего не получается в консоли сообщения в непонятной кодировке. Решил вручную
без исталятора создать и запустить бд с нужной кодировкой:
@ECHO ON
@REM Set environment variables for PostgreSQL
@SET PATH=»%CD%\bin»;%PATH%
@SET PGDATA=%CD%\data
@SET PGDATABASE=postgres
@SET PGUSER=postgres
@SET PGPORT=5432
@REM Create new DB with Russian encoding only at first run
%CD%\bin\initdb -U postgres -A trust -E UTF8 —locale=russian_russia —lc-collate=russian_russia —lc-ctype=russian_russia —lc-messages=russian_russia —lc-monetary=russian_russia —lc-numeric=russian_russia —lc-time=russian_russia

@%CD%\bin\pg_ctl -D %CD%/data -l logfile start
@ECHO Press Enter to stop server
@pause
@%CD%\bin\pg_ctl -D %CD%/data stop
Если точно повторять локаль ru_Ru.UTF8 то ее postgres не находит.
Бекап поднимаю командой :psql -h localhost -U username -w database < db.dump
Полуаю сообщения вида: РОКА 1: REVOKE ALL ON TABLE incomebymonth FROM postgres;
^
ОШИБКА: отношение «incomebymonth» РЅРµ существует
ОШИБКА: отношение «incomebymonth» РЅРµ существует
ОШИБКА: ошибка синтаксиса (примерное положР
µРЅРёРµ: «»)
СТРОКА 1:  SELECT i.customer_id, c.cutomername, i.period_month, i.per…

big-trot

Дата: 11.05.2017 11:06:53

Завитушкин
—format custom

Данный формат нельзя использовать в psql. Используйте умолчательный (plain) формат. И укажите нужную кодировку. А так почитайте описание утилиты pg_dump.

Павел Лузанов

Дата: 11.05.2017 14:35:50

Завитушкин,

pg_dump.exe … —format custom …

Используйте pg_restore для восстановления.

Если точно повторять локаль ru_Ru.UTF8 то ее postgres не находит.

Windows не понимает короткие имена локали, поэтому правильно Russian_Russia.

ОШИБКА: отношение «incomebymonth» РЅРµ существует

Пропишите в postgresql.conf
lc_messages = American_America.UTF8

PostgreSQL в виндовой консоли неправильно работает с UTF и русскими буквами.

Завитушкин

Дата: 19.05.2017 12:56:24

Павел Лузанов, спасибо именно в этом крылось решение проблемы.

Завитушкин

Дата: 19.05.2017 12:58:40

big-trot, спасибо имеенно в этом крылось решение проблемы, сослепу не заметил что помимо вас еще один пользователь
ответил на данную тему

В этой статье расскажем, как правильно осуществить перенос базы данных PostgreSQL с одного сервера на другой. Рассмотрим несколько вариантов создания дампа и его дальнейшего импорта на новый VPS/VDS.

  • Создание резервной копии БД PostgreSQL в pgAdmin 4
  • Импорт дампа БД PostgreSQL в pgAdmin 4
  • Экспортирование и импортирование базы данных в простом формате SQL

Необходимость такого переноса может возникнуть после того, как IT-специалист завершает разработку базы данных PostgreSQL через бесплатную программу pgAdmin 4. Этот инструмент предпочитают многие разработчики, так как он идеально подходит для решения самых разных задач:

  • написание SQL-запросов;
  • разработка процедур;
  • администрирование БД PostgreSQL.

Прелесть pgAdmin 4 редакции в том, что она работает в режиме веб-приложения, так что с программой можно работать удаленно буквально из любой точки мира. Это программное обеспечение совместимо со всеми актуальными версиями операционных систем Linux, Windows и macOS, что лишь подчеркивает его универсальность. Но не будем сильно отклоняться от темы и перейдем к рассмотрению процесса переноса базы данных PostgreSQL на другой сервер.

Наша задача – создать копию существующей БД, а затем перенести её на новый VPS-сервер и там восстановить данные. Всё это легко делается через клиентский компьютер в веб-приложении pgAdmin 4:

  1. В обозревателе выберите целевую базу данных.
  2. Кликните на неё ПКМ и выберите пункт «Резервная копия».

Программа предложит вам указать имя для дампа и путь, по которому сохранится бэкап-файл. В поле «Формат» оставляем «Специальный», или «Custom», если интерфейс приложения у вас на английском. Рассматриваемый формат предполагает сжатие, и он рекомендуется для резервирования больших и средних баз данных, так будет проще осуществить перенос. Помимо него, существуют еще три формата:

  1. Tar (tar) – в этом случае база данных не сжимается.
  2. Простой (plain). На выходе получаем текстовый SQL-скрипт, содержащий инструкции. Этот формат хорош тем, что позволяет на ходу редактировать дамп базы данных через любой удобный текстовый редактор. Если после создания дампа планируете что-то изменять в нем до импорта на новый сервер, то этот вариант оптимален.
  3. Каталог (directory). Создается каталог, где все таблицы и объемные объекты резервируются в виде отдельных файлов. Directory-формат применяет алгоритмы сжатия и позволяет выгружать данные в несколько потоков параллельно – удобно для больших БД.

Как мы уже отметили выше, в большинстве случаев следует оставлять формат, установленный по умолчанию – это custom. В результате сжатия вы получите файл в расширении .backup, и система выдаст сообщение об успешном завершении.

Как перенести базу данных postgresql на другой сервер с помощью pgadmin 4

Импорт дампа БД PostgreSQL в pgAdmin 4

Полученный файл необходимо перенести на другой VPS или VDS. Здесь всё просто:

  1. На новом сервере заходим в pgAdmin и создаем пустую базу данных. Для этого кликните правой кнопкой по вкладке «Базы данных» и выберите пункт «Создать».
  2. Теперь по созданной базе данных во всё той же вкладке «Базы данных» кликните правой кнопкой и выберите пункт «Восстановить», или «Restore».
  3. Далее укажите формат дампа базы данных и путь к файлу с расширением .backup, который мы создали несколькими минутами ранее.

После подтверждения начнется процесс импорта дампа БД PostgreSQL в pgAdmin 4, он может длиться от доли секунды до нескольких минут, всё зависит от производительности серверного железа и размера файла.

Экспортирование и импортирование базы данных в простом формате SQL

Графическая оболочка pgAdmin 4 позволяет также осуществить экспорт базы данных в виде системных SQL инструкций. Делать нужно практически всё то же самое, только при выборе формата указываем «Простой», и дополнительно активируем пару опций во вкладке «Параметры выгрузки»:

  • Использовать команды INSERT.
  • INSERT с указанием столбцов.

Затем аналогичным образом переносим резервную копию на новый сервер и импортируем её. Стандартные функции для восстановления здесь не подойдут, вместо этого от нас потребуется выполнить SQL-скрипт, содержащийся в файле дампа. Для этого делаем следующее:

  1. Через контекстное меню целевой БД заходим в запросник Query Tool.
  2. Нажимаем на пункт «Открыть файл», и в появившемся окошке выбираем дамп базы данных в простом формате SQL, созданный ранее.
  3. Жмем «Выполнить».

Если всё сделали правильно, процесс восстановления займет пару мгновений, и вы сможете приступить к дальнейшей работе. Импорт дампа БД в формате SQL подойдет в тех ситуациях, когда нужно перенести базу данных с одной ОС на другую – например, с Windows на Linux, с macOS на Debian и т.д.

Напоследок добавим, что при необходимости переноса объемной базы данных, размер которой исчисляется несколькими десятками или даже сотнями гигабайт, разумнее прибегнуть к использованию консольных утилит pg_dump или pg_dumpall, в обход графического интерфейса pgAdmin 4. На этом мы заканчиваем наш материал, спасибо за внимание!

  • Перенос системы на другой диск windows 10
  • Перенос активации windows 10 на другой компьютер
  • Перенос системы на nvme windows 10
  • Перенос windows с ссд на ссд
  • Перенос рейд 1 в windows 2008