Перенос postgres с windows на linux

Обновлено: 03.07.2024

Добрый день. Кратко ситуация:
Была 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

День добрый, ну так

Изображение Игорь

День добрый, ну так совместите кодировки.

Спасибо. но уточните.

А может всё проще

А может всё проще получится?
У pg_dump вообще-то есть ключик

Да вы правы, я этот ключик уже нашел .

как раз тоже смотрел про команду дамп. но вот не задача .
что прописать в ключике то ? в моем случае. Подозреваю что : -E Russian_russia
Сейчас буду пробывать.
знать бы точно что там можно указывать.

С таким параметром не проканало..

invalid client encoding "Russian_Russia" specified

В мануале есть раздел

Посмотрел я разделы

Признаюсь честно мало чего понял. но все же по крайней мере какой параметр в -E должен быть win . Но эксперимент потерпел неудачу pg_dump выдал ошибку, (не приведу полный код, но явно с тем что UTF8 более win1251 ) Но и в принципе чтj то мне подсказывает что не надо менять кодировку, так как и linux и winows - базы в UTF8.
Скажите пожалуйста вообще это возможно? (то что нужно мне сделать) или я бьюсь даже не в закрытую дверь, а в нарисованную на бетонной стене.

Это вполне возможно. А

Это вполне возможно. А кодировку проверить очень просто. Сделайте дамп в текстовом виде (виде .sql-файла). Загляните внутрь и посмотрите что там на самом деле. Заодно и директивы которые могут менять кодировку.

Пишу для себя, чтобы не забыть как делал. 95 % рабочее. На комментарии отвечаю, когда увижу.

суббота, 23 марта 2019 г.

Тест 1С и PostgreSQL Windows vs PostgreSQL Linux on Windows

Сравним на одной Windows 10 машине тест гилева(без настройки postgresql.conf)

с PostgreSQL, версия 10.5-24.1C
на Windows


с PostgreSQL, версия 10.5-24.1C на Linux на виртуальной машине vbox сервер 1с на Windows


На той же Windows машине 1C и PostgreSQL под Linux на vbox guest host на Windows


Тест расчета зарплаты на 3000 сотрудников (с оптимизацией postgresql.conf):


с PostgreSQL, версия 10.5-24.1C на Windows

Заполнить 317
Провести 215

с PostgreSQL, версия 10.5-24.1C на Linux на виртуальной машине vbox сервер 1с на Windows
Заполнить 465
Провести 371


На той же Windows машине 1C и PostgreSQL под Linux на vbox guest host на Windows
3. Заполнить 740
Провести 647

Провести и закрыть: 215


Короче миф не нашел подтверждения.

Посокольку не ставил целью сравнивать работу из под windows с нативным линуксом, не подготовил стенд, сравним с тем что было измерено ранее:


Более слабое железо, ниже частота процессора, SATA2
G2020
с настройкой postgresql.conf и без тж
Заполнить: 229 с
Провести: 222 с


i7-6700
1. Без настройки postgresql.conf и без тж
Заполнить: 156 с
Провести: 114 с


Вывод (сравниваем с G2020 более слабое железо):
1. под Linux (при установке Linux непосредственно на железо) система 1С + PostgreSQL работает минимум в 1,5 раза быстрее (скорее в 2), чем аналогичная на Windows.

2. Linux установленный поверх Windows на виртуальной машине (VirtualBox), даёт замедление работы 1С + PostgreSQL на Linux по сравнению с 1С + PostgreSQL установленной на Windows.

3. PostgreSQL установленный на Linux установленный поверх Windows (cредства виртуализации VirtualBox под Windows) даёт замедление работы 1С (Windows)+ PostgreSQL (Linux) по сравнению с 1С + PostgreSQL установленной на Windows.

Добрый день! Уже несколько дней не могу решить проблему переноса базы данных postgresql с виндовой машины на линуксовую, проблема с кодировками.

Версия PostgreSQL: 9.4

База данных на Windows имеет следующие параметры:
Кодировка: UTF-8
Сопоставление: Russian_Russian.1251
Тип символа: Russian_Russian.1251

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

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

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

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

А вы попробуйте создать базу

А вы попробуйте создать базу в UTF-8 и перенести дамп. И посмотрите что получится.
Что касается LC_COLLATE, то в общем-то логично. Я, например, не понимаю как могут быть данные в многобайтовой UTF-8, а сортировка осуществляться по правилом однобайтовой кодировки windows-1251.

Вы уверены, что всё правильно понимаете про базу в Windows?
Зайдите в windows в psql и наберите там команду "\l". Должно получиться что-то типа того, что ниже:

Проверьте точно ли у вас UTF-8 соседствует с cp1251.

Вывод psql

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

Вывод на Windows машине:

Судя по выводу действительно UTF-8 соседствует с windows-1251.. вопрос остается открытым.

доброго дня. А вы попробуйте

Изображение Игорь

доброго дня. А вы попробуйте перекодировать дамп из 1251 в utf. Хотя это у вас 1С и перекодировать наверно даже вредно.

Всем привет! Сегодня мы разберем процесс установки PostgreSQL 13 на операционную систему Linux Ubuntu Server 20.04, а также выполним первоначальную настройку PostgreSQL. В результате у нас получится полноценный сервер баз данных, реализованный на базе Ubuntu Server + PostgreSQL, и данный сервер можно будет использовать в сети предприятия.

Установка и настройка PostgreSQL 13 на Linux Ubuntu Server 20.04

Установка PostgreSQL 13 на Ubuntu Server 20.04

Итак, давайте перейдем к установке и рассмотрим все шаги, которые необходимо выполнить, чтобы установить PostgreSQL 13 на Ubuntu Server 20.04.

Установку я буду производить удаленно, для подключения к Ubuntu Server буду использовать программу PuTTY.

Заметка! О том, как установить Ubuntu Server, я подробно рассказывал в материале – Установка Linux Ubuntu Server 20.04.

Шаг 1 – Подключение репозитория и обновление списка пакетов в системе

Установку и настройку PostgreSQL необходимо выполнять с правами пользователя root, поэтому давайте сразу переключимся на root.

Для этого пишем команду sudo -i и вводим пароль.

Скриншот 1

Далее, подключаем репозиторий, который будет содержать актуальную версию PostgreSQL, на текущий момент актуальной версией является PostgreSQL 13, поэтому в данном репозитории хранится именно эта версия, которую мы и будем устанавливать.

Однако, если Вам требуется установить не самую последнюю версию, то на этапе установки пакетов нужно будет указать номер версии в названии пакета, чуть ниже, на соответствующем шаге, я поясню, где именно необходимо указать номер конкретной версии.

Для подключения репозитория вводим следующую команду, которая создает файл в источниках с адресом нужного репозитория.

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

Осталось обновить список пакетов в системе, это делаем стандартной командой.

Скриншот 2

И для проверки того, что теперь нам доступны пакеты PostgreSQL 13, давайте запустим команду поиска пакетов.

Скриншот 3

Нужные пакеты нам доступны, и мы можем переходить к установке PostgreSQL 13.

Шаг 2 – Установка необходимых пакетов для PostgreSQL

Для установки актуальной версии, т.е. PostgreSQL 13 и базовых стандартных утилит, необходимо установить пакет postgresql, это делается следующей командой.

Скриншот 4

Чтобы установить какую-то конкретную версию PostgreSQL, необходимо указать номер этой версии в названии пакета, например, для 12 версии необходимо установить пакет postgresql-12.

Шаг 3 – Проверка установки

Чтобы проверить, установился и запущен ли PostgreSQL, давайте выполним следующую команду, которая покажет статус сервиса PostgreSQL.

Скриншот 5

Как видим, PostgreSQL 13 установился и работает.

Настройка PostgreSQL 13 в Ubuntu Server 20.04

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

Создание пользователя и базы данных в PostgreSQL

После установки к серверу PostgreSQL мы можем подключиться только с помощью системного пользователя postgres, причем без пароля.

Давайте переключимся на пользователя postgres (данная учетная запись была создана автоматически во время установки PostgreSQL).

Затем запускаем утилиту psql – это консоль для PostgreSQL.

Первым делом нам нужно задать пароль для пользователя postgres.

Затем создаем нового пользователя на сервере PostgreSQL, так как работать от имени postgres крайне не рекомендуется.

Далее давайте создадим базу данных.

где test_db – это имя новой базы данных.

Теперь давайте дадим права на управление базой данных нашему новому пользователю.

Все готово, выходим из консоли.

Скриншот 6

Для проверки давайте подключимся к PostgreSQL от имени нового пользователя, на предложение о вводе пароля вводим пароль от новой учетной записи.

Все работает, я подключился. Для выхода снова набираем \q.

Для переключения обратно на root вводим exit.

Скриншот 7

Разрешаем подключение к PostgreSQL по сети

По умолчанию PostgreSQL прослушивает только адрес localhost, поэтому, для того чтобы мы могли подключаться по сети, нам нужно указать, какие сетевые интерфейсы будет просушивать PostgreSQL. Я для примера укажу, что прослушивать нужно все доступные интерфейсы. Если у Вас несколько сетевых интерфейсов, и Вы хотите, чтобы PostgreSQL использовал только один конкретный, то Вы его можете указать именно здесь.

Чтобы это сделать, открываем файл postgresql.conf, например, редактором nano.

Находим следующую строку.

и вносим следующие изменения (вместо звездочки Вы в случае необходимости указываете IP адрес нужного интерфейса).

Скриншот 8

Сохраняем изменения сочетанием клавиш CTRL+O и подтверждаем нажатием Enter, затем просто закрываем редактор nano сочетанием клавиш CTRL+X.

Теперь давайте разрешим подключение из сети, я для примера разрешу подключаться из сети 192.168.0.0/24 с методом аутентификации md5.

Для этого открываем файл pg_hba.conf

Ищем следующие строки.

Скриншот 9

Скриншот 10

Далее точно так же сохраняем изменения сочетанием клавиш CTRL+O, подтверждаем нажатием Enter и закрываем редактор nano сочетанием клавиш CTRL+X.

Перезапускаем PostgreSQL, чтобы изменения вступили в силу.

Теперь можно подключаться к нашему серверу PostgreSQL удаленно по сети.

Таким образом, мы установили и настроили систему управления базами данных PostgreSQL 13 на операционной системе Ubuntu Server 20.04.

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

Видео-инструкция – Установка и настройка PostgreSQL 13 на Ubuntu Server

Читайте также: