Как перенести базу 1с на postgresql
Столкнулся с проблемой резервирования и восстановления бэкпапа на PostgreSQL (оказалось все не так просто как MSSQL). На просторах нашей не объятой сети, найти что то дельное и работающее из коробки очень проблемно, поэтому все пришлось собирать по кусочкам из разных источников, методом проб и ошибок чтобы получить действительно рабочую схему. Также решение проблем, с которыми можно столкнуться.
pg_dump — выгрузить базу данных Postgres:
REM /////////////////////////////////////////////////////////////////////////////////
REM РЕЗЕРВИРВОВАНИЕ ПЕРВОЙ БАЗЫ sibek
REM ПРИМЕР СОЗДАНИЯ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ 1C НА POSTGRESQL
CLS
ECHO OFF
CHCP 866 - установить кодовую страницу 1251 Windows, 866 DOS
REM УКАЗАНИЕ ПЕРЕМЕННЫХ СРЕДЫ POSTGRESQL
SET PGBIN=C:\Program Files\PostgreSQL\11.5-7.1C\bin\
SET PGDATABASE=bdpostgre - Имя базы на Postgre сервере
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres - Имя пользователя Postgre сервера
SET PGPASSWORD=password - Пароль пользователя Postgre сервера
REM ПЕРЕХОД В КАТАЛОГ С bat-ФАЙЛОМ (ОТКУДА ЗАПУЩЕН ФАЙЛ)
%
REM ФОРМИРОВАНИЕ ИМЕНИ ФАЙЛА ДЛЯ РЕЗЕРВНОЙ КОПИИ И LOG ФАЙЛА ОТЧЕТА
SET DAT=%date:
6,4% - Получаем текущую дату для имени файла
SET DUMPFILE=D:\1C BackUp\%DAT%-sibek.pgsql.backup - Бэкап файл базы
SET LOGFILE=D:\1C BackUp\%DAT%-sibek.pgsql.log - лог файл процесса
SET DUMPPATH="%DUMPFILE%"
SET LOGPATH="%LOGFILE%"
REM ВЫПОЛНЕНИЕ КОМАНДЫ (ПРОГРАММЫ) ДЛЯ СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ БАЗЫ
CALL "%PGBIN%\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH%
REM ВЫПОЛНЕНИЕ КОМАНДЫ (ПРОГРАММЫ) ЗАВЕРШЕНО, ЕСЛИ ОШИБОК НЕТ ТО КОНЕЦ
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM ПРИ ВОЗНИКНОВЕНИИ ОШИБОК УДАЛЯЕТСЯ ПОВРЕЖДЕННЫЙ ФАЙЛ КОПИИ И СООТВЕТСТВУЮЩАЯ ЗАПИСЬ В ЖУРНАЛЕ О ЕЕ СОЗДАНИИ
:Error
DEL %DUMPPATH%
MSG * "Ошибка при создании резервной копии базы данных. Смотрите backup_sibek.log."
ECHO %DATETIME% Ошибки при создании резервной копии базы данных %DUMPFILE%. Смотрите отчет %LOGFILE%. >> backup_sibek.log
GOTO End
REM ЕСЛИ КОПИЯ СДЕЛАНА БЕЗ ОШИБОК ДЕЛАЕТСЯ ЗАПИСЬ В ЖУРНАЛЕ РЕГИСТРАЦИИ
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup_sibek.log
GOTO End
:End
REM УСТАНАВЛИВАЕТСЯ ПАРАМЕТРЫ ДЛЯ КОПИИ ХРАНИТЬ 5 ДНЕЙ ОТ ДАТЫ СОЗДАНИЯ, УДАЛЯТЬ ПО ИСТЕЧЕНИЮ
FORFILES /p "D:\1C BackUp\" /s /m *.* /d -5 /c "CMD /c del /Q @FILE"
ВАЖНО! Убрать все пробелы после параметров (чтобы сразу был перенос строки) иначе работать не будет т.к. пробелы будут считаться как символы.
Если несколько БД то можно сделать для каждой БД отдельный bat-файл, либо скопировать полностью код и вставить в один bat-файл (2-3 раза) в зависимости от количества баз, изменяя только имя базы и имена файлов бэкапа и логов.
2. Автоматическое резервирование по расписанию
Автоматическое резервирование будем настраивать через планировщик задач: Пуск -> Панель управления -> Администрирование» и запускаем Планировщик заданий, в планировщике выбираем пункт Создать задачу.
Заходим в раздел Триггеры там настраиваем расписание выполнения задания
В разделе Действия указываем какое действие выполнять (в нашем случае указываем наш bat-файл), где прописаны все необходимые команды
После выполнения команды в указанной папке будет создан бэкап и лог файлы процесса выполнения.
На этом этап резервирование закончен, переходим в этапу восстановления БД из резервной копии.
3. Восстановление копии БД 1С 8 на PostgreSQL
На этом этапе были небольшие трудности. т.к. не где не было указано конкретно, что надо делать именно так и по другому это не заработает (пришлось догадываться).
Первая проблема. При попытка восстановить БД может возникнуть ошибка:
Не какие регистрации данной DLL (regsvr32), обновление и прочее не помогу, надо данную DLL скопировать в System32 и все заработает как часы.
DLL находится: C:\Program Files\PostgreSQL\11.5-7.1C\pgAdmin 4\bin\python36.dll
DLL скопировать: C:\Windows\System32\python36.dll
Вторая проблема. При восстановление БД в PostgreSQL, она должна быть создана только на Postgre сервер, а в консоле 1С Севера ее быть не должно иначе будет куча ошибок проблем и результат отрицательный (в сравнении с MSSQL таких проблем нет). Так и не разобрался почему, но если настроена связь базы данные на 1с сервере и PostgreSQL сервере то база валится в ошибки (Сервер 1с и PostgreSQL находятся на одном ПК, возможно причина в этом).
Поэтому перед восстановлением создаем базу данных в PostgreSQL, правой кнопкой создать, указываем имя БД, параметры все стандартные по умолчанию.
После чего наживаем правой кнопкой на созданную БД выбираем пункт "Восстановить"
И указываем параметры:
Процесс восстановление займет какое то время.
После этого в базу можно заходить и работать, все работает корректно проблем в работе не было.
PostgerSQL заточен под Linux и в своей среде он будет работать лучше и быстрее (как рыба в воде), но есть и адаптированный под Windows, требующий чуть больших настроек для оптимизации, чем просто "далее-далее-далее" в MSSQL. Хотя на небольших БД на первых этапах хватает и стандартной настройки задаваемой при установке.
Тесты о работе и производительности на разных системах разных продуктов MS SQL, PostgerSQL, под Linux, Windows легко можно найти в интернете, тут же мы рассмотрим простую установку и базовую настройку для работы 1С 8 на PostgerSQL 11.5 под Windows Server 2008 R2.
Постановка задачи:
1С Предприятие 8.3.16.1063, 1С БД Бухгалтерия 3.0.75.58 – размер файла
Сервер: i5-9400, ОЗУ DDR4 16 Гб, SSD 256, ОС Windows Server 2008R2 x64
Установка и настройка PostgreSQL:
1. Подготовка:
Перед установкой и настройкой рекомендуется отключить протокол IPv6, иначе это может затруднить дальнейшую настройку.
Также необходимо установить Microsoft Visual C++ 2015 (на сайте 1С он идет в комплекте)
Также заранее рекомендуется включить службу "Вторичный вход в систему", иначе при установке будет ошибка.
2. Процесс установки
Далее указываем путь установки программы (его не меняем) и путь, где будут располагаться БД (его рекомендуется сменить, чтобы БД хранились не на системном диске)
Если вы не запустили службу "Вторичный вход в систему" то у вас будет ошибка, ее можно включить на этапе установки и продолжить:
После установки запускаем консоль администратора "Пуск-PostgreSQL 11.5-7.1C(x64)-pgAdmin 4"
На этом установка PostgreSQL закончена.
3. Установка 1С сервера:
Запуститься помощник установки системы «1С:Предприятия». На первой странице жмем «Далее».
На следующей странице необходимо выбрать те компоненты, которые будут устанавливаться, нам требуются компоненты:
- Сервер 1С:Предприятия — компоненты сервера «1С:Предприятия»
- Администрирование сервера 1С:Предприятия 8 — дополнительные компоненты для администрирования кластера серверов «1С:Предприятия»
Если сервер «1С:Предприятия» устанавливается как служба Windows рекомендуется сразу создать отдельного пользователя, из под которого будет запускаться служба "Агент сервера 1С Предприятия", либо можно выбрать существующего пользователя для запуска сервера. Для создание нового пользователя необходимо:
- Выбираем флаг «Установить сервер 1С:Предприятие как сервис Windows (рекомендуется)»;
- Выбираем «Создать пользователя USR1CV8» и задаем его пароль (пароль должен отвечать политики паролей Windows).
Также пользователю обязательно следует дать необходимые права на каталог служебных файлов сервера (по умолчанию C:\Program Files\1cv8\srvinfo для 64-х разрядного и C:\Program Files (x86)\1cv8\srvinfo для 32-х разрядного сервера). Созданный автоматически пользователь USR1CV8 будет обладать всеми перечисленными правами.
Заполнив соответствующие параметры, жмем «Далее».
Далее идет установка всех необходимых файлов и служб. После чего следует убедиться что появилась и запущена соответствующая служба.
На этом установка Сервера 1С Предприятия закончена.
4. Создание 1С БД для PostgreSQL
После установки 1С Сервера запускаем "Администрирование серверов 1С Предприятия x86-64", переходим в список "Информационные базы" и создаем новую БД. Заполняем основные поля:
- Имя - имя БД на сервере 1с
- Сервер баз данные - имя сервера где будет располагаться БД 1С SQL
- Тип СУБД - выбор на какой платформе у вас будет работать ваша база (MSSQL, PostgeSQL, IBM DB2, Oracle DateBase)
- База данных - имя базы которое будет создано в SQL
- Пользователь и пароль БД - пользователь в SQL
- Создавать базу данных в случае ее отсутствия - Создает БД в SQL если ее нет.
Если вы не отключили протокол IPv6 то у вас при создании будет ошибка:
можно отключить протокол IPv6 и продолжить создание, либо можно указать IP адрес сервера без отключение протокол IPv6:
Все на этом этапе БД готова, в принципе ее можно подключать загружать в SQL и работать. Но рекомендуется сделать настройку самого Postgre сервера для оптимизации и более стабильной работы базы 1С на PostgreSQL. Делается это в 1 файле расположенном в каталоге с базами (путь который вы указывали при установке для баз по умолчанию C:\Program Files\PostgreSQL\11.5-7.1C\data). Файл postgresql.conf
5. Настройка PostgreSQL под 1С 8
ВАЖНО. Перед любыми изменения в этом файле обязательно сделайте его копию, в противном случаем если какой то параметр указан не верно у вас не запустится служба PostgreeSQL:
Перед тем как вносить изменения в файл postgresql.conf необходимо остановить службу
Изменение параметров в postgresql.conf:
После чего запускаем службу PostgreSQL и можно работать.
Так же иногда по какой то причине после загрузки в PostgreSQL в базе отключается "Полнотекстовый поиск", поэтому после настройки рекомендуется проверить и включить если выключено и обновить индексы (все функции-стандартные-управление полнотекстовым поиском).
Повышение скорости работы 1С, отказоустойчивости системы.
Программные продукты фирмы 1С имеют два основных формата хранения базы данных: файловая база данных и база данных, размещенная на SQL Server средствами СУБД
В список поддерживаемых СУБД входят:
- Microsoft SQL Server
- PostgreSQL
- Oracle Database
- IBM Db2.
Файловые базы данных, как правило, используют небольшие компании с 1-5 пользователями, где нет большого объема документооборота, а также не произойдет быстрого роста объема базы данных.
Когда нужно переходить с файловой базы 1С на СУБД MS SQL?
Если конфигурация долго открывается и также долго открываются и проводятся документы, если периодически выскакивают ошибки «Нарушена целостность базы данных» или «Файл базы данных поврежден», файл ИБД *.1СD имеет объем более 5ГБ, планируется рост пользователей или в результате внедрения еще одной конфигурации 1С планируется достаточно быстрый рост объема данных, пора задуматься о вопросе, как перенести файловую базу 1С на SQL поскорее и узнать, что такое сервер 1С.
Преимущества SQL
Если переход все же вызывает некоторые колебания, стоит учесть, что преимуществ у клиент-серверного варианта значительно больше, чем недостатков, а у файлового – наоборот.
При высокой отказоустойчивости и поддержке бесконечно большой базы данных SQL-сервер дает возможность одновременной работы большому числу пользователей. Конечно, наиболее мощные СУБД – MS SQL Server/Oracle стоят недешево, но бесплатный вариант PostgreSQL также широко используется в среде 1С. Да, SQL требует настройки сервера 1С и администрирования, но подобные услуги оказывает широкий круг компаний-франчайзи 1С, и конечно же – наша.
Работа с файловой базой плохо защищена, потому что доступ к копированию файла БД открыт любому пользователю, плохо масштабируется и начинает «тормозить», когда пользователей становится больше пяти из-за высокого уровня изоляции транзакций, а также имеет ограничения по размеру в 5-10 Гб. При этом отдельные функции конфигурации при таком варианте просто не работают (к примеру, регламентные задания).
Да, быстрая настройка, отсутствие дополнительного ПО и низкая цена – весьма привлекательные «черты» файловых БД, но выбор в их пользу может иметь место только при построении самой простой информационной системы.
Этапы перехода на внешнюю СУБД
Для переноса файловой базы 1С 8.3 на сервер SQL проделаем следующие шаги:
Шаг №1 Выгрузка ИБ
Откроем конфигуратор файловой версии базы 1С.
В конфигураторе выбираем пункт меню «Администрирование» и «Выгрузить информационную базу».
Итогом процесса выгрузки будет файл *.dt.
Шаг №2 Создание кластера
Для данного пункта запустим консоль управление сервером 1С.
Важно: Для работы сервера 1С обязательно требуется установка лицензии на сервер 1С.
Лицензия бывает 32х-разрядная и 64х-разрядная. Разрядность определяет количество ОЗУ доступное серверу 1С: у 32х до 4ГБ, а 64х более 4ГБ.
Для уточнения цен, подбора сервера для 1С с учетом плановых нагрузок и форматов обслуживания таких систем обратитесь к нашим специалистам. Мы с радостью подберем для вас подходящее решение.
В открывшемся приложении выберите «Кластер-Создать кластер», а если кластер уже создан, выберите существующий.
Шаг №3 Создание базы данных в кластере
Следующим шагом в процессе миграции базы 1С будет создание новой конфигурации в кластере. Существует два возможных варианта создания базы 1С на сервере 1С:
- Через консоль администрирования кластера 1С;
- Через окно запуска 1С:Предприятие.
Создание информационной базы в кластере через консоль администрирования кластера 1С
Чтобы создать базу 1С в СУБД SQL, выбираем «Создание новой информационной базы» и заполнить обязательные поля:
- Имя – название вашей базы 1С;
- Сервер баз данных – указываем имя кластера 1С;
- База данных – название базы данных в вашей СУБД SQL;
- Пользователь сервера БД – логин от администратора СУБД SQL;
- Пароль сервера БД – пароль от администратора СУБД SQL.
Далее добавляем эту ИБД в список 1С для последующего запуска конфигуратора 1С и загрузки ранее подготовленного файла выгрузки базы. После того как база в кластере создана, добавляем ее в список баз 1С. Для этого запускаем 1С:Предприятие и «Добавить…» базу 1С.
Далее выбираем «Добавление в список существующей информационной базы» и переходим «Далее».
После появления формы добавления базы 1С, заполняем последние строки в списке и переключаем режим работы на «На сервере 1С:Предприятие».
Запуск 1С:Предприятие и добавление конфигурации
Этот способ быстрее предыдущего и бывает полезен, когда, например, вы не установили у себя компоненту консоли управления при установке платформы. Чтобы им воспользоваться, запускаем 1С:Предприятие и в открывшемся окне приложения жмем кнопку «Добавить».
Далее выбираем «Создание информационной базы».
После перехода в следующий пункт меню выбираем « Создание информационной базы без конфигурации для разработки новой конфигурации» или «Загрузки выгруженной ранее информационной базы».
Следующим шагом будет выбор пункта «На сервере 1С:Предприятие».
Мы попадем в искомое нами окно заполнения полей для создания базы на сервере 1С.
Шаг №4 Завершение переноса
Перенос базы 1С на SQL-сервер
Поможем определить необходимость переноса базы 1С на SQL и подготовить инфраструктуру
Перенос данных 1С
Переходите на новую программу 1С? Проведем бесплатный анализ и перенесем только необходимые данные
После запуска конфигуратора переходим в раздел «Администрирование» и выбираем пункт «Загрузить информационную базу».
Далее выбираем ранее сохраненный файл выгрузки и начинаем непосредственно процесс загрузки базы на СУБД SQL.
Готово! Ваша конфигурация успешно переведена из файлового режима на SQL-сервер.
Если повторная работа в конфигураторе не требуется, выбираем вариант «Нет» и запускаем базу в режиме «Предприятия» для проверки ее работоспособности.
Мы рассмотрели процесс миграции файловой базы на сервер 1С. Если в будущем вам потребуется перенос базы 1С SQL на другой сервер или у вас остались вопросы по этому переводу, обратитесь к нашим специалистам за консультацией, мы с радостью вам поможем.
Вопросу, какая же СУБД - Postgresql или MS SQL для 1С является наиболее оптимальной, посвящено множество статей. В этой статье мы рассмотрим шаги оптимизации обоих. Каждая СУБД вендора имеет как собственные рекомендации по настройке, так и рекомендации фирмы 1С. Следует отметить, что в зависимости от оборудования, конфигурации серверов и количества пользователей, задающих разную нагрузку, детали процесса оптимизации СУБД под 1С и реализации рекомендаций могут меняться.
Настройка PostgreSQL под 1С
Опыт эксплуатации баз 1С на PostgreSQL показал, что наибольшей производительности и оптимальной работы 1С и PostgreSQL удалось добиться на linux, поэтому желательно использовать именно ее. Но вне зависимости от операционной системы, важно помнить, что настройки, указанные по умолчанию при установке PostgreSQL, предназначены только для запуска сервера СУБД. Ни о какой промышленной эксплуатации речи идти не может! Следующим шагом после запуска станет оптимизация PostgreSQL под 1С:
Установка параметра shared_buffers в RAM/4 является рекомендацией по умолчанию, но пример Sql Server говорит о том, что чем больше памяти ему выделяется, тем лучше его производительность (при отключенном сбросе страниц в файл подкачки). То есть, чем больше страниц данных располагаются в оперативной памяти, тем меньше обращений к диску. Возникает вопрос: почему такой маленький кэш? Ответ прост: если shared_buffers большой, то часть неиспользуемых страниц свопируется на диск. Но как отследить момент, когда сброс прекратится, и показатель параметра будет оптимальным? Для достижения и выхода на оптимальный показатель shared_buffers, его значение необходимо поднимать на продуктиве ежедневно (по возможности) с определенным шагом прироста и смотреть, в какой момент начнется сброс страниц на диск (увеличится своп).
- Помимо этого, на «большой параметр» негативно влияет работа с множеством мелких страниц, которые по умолчанию имеют размер 8Кб. Работа с ними увеличивает накладные расходы. Что можно с этим сделать для оптимизации под 1С? В версии postgreSQL 9.4 появился параметр huge_pages, который можно включить, но только в Linux. По умолчанию включаются огромные страницы с размером по умолчанию 2048 kB. Дополнительно поддержку данных страниц необходимо включить в ОС. Таким образом, оптимизировав структуру хранения, можно выйти на больший показатель shared_buffers.
- work_mem = RAM/32..64 или 32MB..128MB Задает объем памяти для каждой сессии, который будет использоваться для внутренних операций сортировки, объединения и пр., прежде чем будут задействованы временные файлы. При превышении этого объема, сервер будет использовать временные файлы на диске, что может существенно снизить скорость обработки запросов. Данный параметр используется при выполнении операторов: ORDER BY, DISTINCT, соединения слиянием и пр.
- Посчитать дополнительно данный параметр можно следующим образом: (Общая память shared_buffers – память на другие программы) / число активных соединений. Это значение можно уменьшать, следя за количеством создаваемых временных файлов. Такую статистику по размеру и количеству временных файлов можно получить из системного представления pg_stat_database.
- effective_cache_size = RAM - shared_buffers основная задача этого параметра подсказать оптимизатору запроса, какой способ получения данных выбрать: полный просмотр или сканирование по индексу. Чем выше значение параметра, тем больше вероятность использования сканирования по индексу. При этом сервер не учитывает, что данные при выполнении запроса могут оставаться в памяти, и следующему запросу не надо их поднимать с диска.
Установка PostgreSQL
Установка 1С на PostgreSQL под Windows – достаточно простой процесс. При запуске установочного пакета необходимо указать кодировку UTF-8. По сути, это единственный интересный нюанс и еще какая-то настройка PostgreSQL для 1С 8.3 из-под Windows не потребуется. Установка и настройка PostgreSQL для 1С на ОС linux может вызвать ряд затруднений. Для их преодоления в качестве примера рассмотрим запуск работы (используя дистрибутивы ведущего российского вендора PostgreSQL-Pro и компании 1С) PostgreSQL на сервере Ubuntu 16.04 х64
Установка дистрибутивов 1С для СУБД PostgreSQL
1.Скачиваем указанную позицию дистрибутива СУБД PostgreSQL:
2.Выкладываем PostgreSQL на сервер;
3.Распаковать установщик СУБД PostgreSQL можно командой:
4.Перед установкой дистрибутива СУБД PostgreSQL проверим наличие в системе необходимой локали (по умолчанию ru_RU.UTF-8):
5.Если система, с которой будет работать PostgreSQL, ставилась с языком отличным от русского, необходимо создать новые локали:
6.Если необходимая локаль все же имеется, устанавливаем ее по умолчанию:
7.После перезагрузки, установим необходимые пакеты для нашей версии PostgreSQL:
8.Версия PostgreSQL пакета 9.4.2-1.1C связана с пакетом libicu версии libicu48. В репозитории нужной версии уже нет, ее можно скачать;
9.Скачиваем и помещаем в каталог, где хранятся скачанные файлы для PostgreSQL;
10.Перейдя в каталог с файлами PostgreSQL, производим установку, последовательно набирая следующие команды:
Читайте также: