Перенос базы 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

Бэкап базы 1С с Linux на Windows при помощи pg_dump

Коллега, из этой статьи вы узнаете как сделать бэкап базы 1C, что находится у нас на Linux в PostreSQL 14, когда мы удаленно работаем на ПК под ос Windows.

Работать будем из командной строки в CMD. (Можете также использовать и PowerShell). 

Бэкап выполним в sql формате, используя бесплатную программу pg_dump!

Полный курс по PostgreSQL можно скачать здесь >>   

pg_dump — это консольная программа для создания резервных копий (бэкапов) баз 1С в PostgreSQL.

Она создаёт целостные копии, даже если база 1С параллельно используется, то есть с ней работают пользователи и тд.
pg_dump во время создания резервной копии (бэкапа), никак не мешает работе пользователей, что уже работают в базе 1С.
Это касается как операций для чтения, так и для записи.

pg_dump – является кроссплатформенной консольной программой, что есть в составе PostgreSQL как на Windows (скрин ниже), так и на Linux.

PG_DUMP — БЭКАП БАЗЫ 1С ПРЕДПРИЯТИЯ

Конечно, “береженого Бог бережет” и лучше отложить создание бэкапа например до ночного времени, когда есть гарантия, что в базе никого нет.

ПОМНИМ! Программа pg_dump выгружает только одну базу 1С за один раз!

И так, ниже вы найдете команду для создания резервной копии нашей тестовой базы 1С:  “bux_30”  при помощи pg_dump 

«C:\Program Files\PostgreSQL 1C\14\bin\pg_dump» -U postgres -h 192.168.1.35 bux_30 > E:/BACKUP/bux_30.sql

Если не указать в “переменных среды” путь к  pg_dump, тогда придется указать в cmd полный путь к ней, как и в нашем примере выше.

Само собой pg_dump должна находится у вас на ПК на Windows по пути: “C:\Program Files\PostgreSQL 1C\14\bin\pg_dump”

Конечно, выполнить команду вы можете как в CMD так и в PowerShell на windows.

В данном примере, мы работаем на windows, выполняем команду, а наша база 1C как и СУБД находится на сервере Linux – Ubuntu server 22.04 LTS, удаленно в нашей локальной сети.  

По адресу: 192.168.1.35

Создавать бэкап мы будем на диск E:/BACKUP/bux_30.sql  на Windows.

Сразу после начала выполнения скрипта, нас запрашивают указать пароль пользователя “postgres”, что был создан на Linux.

После успешного выполнения команды, должна появится новая строка –

например: (С:\Users\Администратор)  тогда создание резервной копии завершено.

Можем проверить:

Отлично!

Добрый день!

Уже несколько дней не могу решить проблему переноса базы данных Postgresql с Windows машины на Linux. Проблема с кодировками.

Версия PostgreSQL на Windows машине и на linux: 9.4

База данных на Windows имеет следующие параметры:

  • Кодировка: UTF-8
  • Сопоставление: Russian_Russian.1251
  • Тип символа: Russian_Russian.1251

    postgres=# \l

Список баз данных

Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа<br>
-----------+----------+-----------+---------------------+---------------------+-----------------------<br>
postgres | postgres | UTF8 | Russian_Russia.1251 | Russian_Russia.1251 |<br>
project | postgres | UTF8 | Russian_Russia.1251 | Russian_Russia.1251 |<br>
template0 | postgres | UTF8 | Russian_Russia.1251 | Russian_Russia.1251 | =c/postgres +<br>
| | | | | postgres=CTc/postgres<br>
template1 | postgres | UTF8 | Russian_Russia.1251 | Russian_Russia.1251 | =c/postgres +<br>
| | | | | postgres=CTc/postgres<br>
database | postgres | UTF8 | Russian_Russia.1251 | Russian_Russia.1251 |

При попытке создать базу данных на Linux, с такими же параметрами выдается:

postgres=# CREATE DATABASE database WITH OWNER = postgres ENCODING = 'UTF-8' LC_COLLATE = 'ru_RU.cp1251' LC_CTYPE = 'ru_RU.cp1251' CONNECTION LIMIT = -1;

ОШИБКА: кодировка «UTF8» не соответствует локали «ru_RU.cp1251»
ПОДРОБНОСТИ: Для выбранного параметра LC_CTYPE требуется кодировка «WIN1251».

То есть либо всё должно быть в UTF-8, либо в WIN1251.

Пробовал создавать базу, где кодировка, сопоставление и тип в UTF-8 и перенести дамп в нее. С виду все хорошо, база заливается без ошибок, но потом в ходе работы обнаруживаются косяки, не может найти и подхватить значения в некоторых местах.

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

И как быть в такой ситуации? Как перенести базу данных из Windows в Linux с такими параметрами?

Помогите, пожалуйста.

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

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

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

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

Создание резервной копии БД PostgreSQL в pgAdmin 4

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

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

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

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

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

Импорт дампа БД 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. На этом мы заканчиваем наш материал, спасибо за внимание!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Codeblocks для windows xp
  • Программы для компьютера офисные программы для windows
  • Windows server 2019 разрядность
  • Можно ли переименовать папку пользователя в windows 11
  • Windows xp x64 ahci iso