Парадигма современного IT в России такова, что завтра можно проснуться без лицензии на БД, а это в свою очередь ведет к остановке производства, бизнеса, учета, отчетности.
Начнем знакомство с двумя бесплатными инструментами для миграции с SQL Server на PostgreSQL, затем поэтапно пропишу, как выполнить миграцию между этими двумя базами данных.
Инструменты миграции базы данных:
1.Pgloader
Pgloader — это программа загрузчик данных, которая производит миграцию из MS SQL Server в PostgreSQL. Инструмент автоматически обнаруживает схему (первичный ключ, ограничения внешних ключей и структуру индексов) и предоставляет правила приведения для преобразования типа данных SQL Server в тип данных PostgreSQL.
2. Sqlserver2pgsql
Sqlserver2pgsql — еще один инструмент миграции с открытым исходным кодом, написанный на Perl, который конвертирует схему SQL Server в PostgreSQL и переводит все данные SQL Server в PostgreSQL с помощью полученного Pentaho Data Integrator (Kettle). Однако он не переносит хранимые процедуры. Этот инструмент лучше использовать для миграции базы данных в автономном режиме. Найти его можно на Github.
Он должен работать на Linux, Windows и любой Unix-системе.
Способ 1: Миграция с SQL Server на PostgreSQL с помощью SSIS
- Установите PostgreSQL ODBC Driver для Windows x86/x64.
- В SQL Server Management Studio кликните правой кнопкой мыши по исходной базе данных и выберите Tasks → Export Data.
- Выберите SQL Server Native Clients в качестве источника данных и .Net Framework Data Provider for ODBC в качестве драйвера назначения (destination driver).
- Установите строку подключения к базе данных. Добавьте имя источника данных, которое соответствует значению, заданному для Driver= {имя-вашего-источника-данных} для драйвера PostgreSQL.
Способ 2: Миграция с SQL Server на PostgreSQL с помощью Sqlserver2pgsql
Что нам нужно:
- Данные о подключении к SQL Server, включая IP, порт, имя пользователя, пароль, имена баз данных и инстансовов (если они не установлены по умолчанию).
- Доступ к пустой целевой базе данных PostgreSQL.
Создаем образ Docker
Docker — это отличный инструмент для создания процедуры миграции баз данных, которая не будет зависеть от облака и может быть применена в большинстве IT-архитектур.
Создаем образ на OpenJDK 8, который позволяет создавать и запускать приложения Java 1.8.
Настраиваем рабочий каталог
Устанавливаем несколько инструментов для работы с клиентом
Устанавливаем Kettle для запуска миграции
Устанавливаем jTDS для подключения SQL Server в Kettle-джобе
Настраиваем .sh-скрипт для запуска Kettle-джобы
Настраиваем скрипт миграции
Сначала запустим bash
#!/bin/bash
Настроим его на отказ, если его команды не выполняются
set -e
Преобразуем схему SQL Server в скрипты PostgreSQL
Файлы Kettle-джобы будут храниться в $MIGRATIONDIR/kettlejobs/migration.kjb.
Запускаем скрипт before.sql, содержащий SQL-команды Postgres, используемые для создания структуры таблицы
Используя для аутентификации PostgreSQL SSL-сертификаты (обратите внимание на параметры *sslmode,*sslrootcert,*sslcert*и*sslkey, необходимые для этого)
Используя для аутентификации PostgreSQL логин/пароль
Выполняем Kettle-джобу
Запускаем скрипт after.sql
Используя для аутентификации PostgreSQL SSL-сертификаты (обратите внимание на параметры *sslmode,*sslrootcert,*sslcert*и*sslkey, необходимые для этого)
Используя для аутентификации PostgreSQL логин/пароль
Создаем образ Docker-контейнера
docker build -t sqlserver2psql .
Экспорт схемы с помощью SQL Server Management Studio
- В SQL Server Management Studio кликните правой кнопкой мыши по исходной базе данных. Затем выберите Tasks → Generate Scripts.
- Выберите таблицы для экспорта и нажмите кнопку Next.
- На панели Set Scripting Options выберите Save as a script file → Single script file, чтобы сохранить файл schema.sql в <корневой каталог проекта> / conf (при необходимости создайте такой файл). Установите флажок в поле Unicode text. Нажмите на Next.
- На странице обзора нажмите кнопку Next. После завершения процесса нажмите Finish.
- Поместите файл на сервер, где запущен sqlserver2pgsql.
Загружаем сертификаты для аутентификации PostgreSQL с помощью SSL
Загрузите сертификаты и скопируйте их в <корневой каталог проекта>/conf.
Файлы сертификатов должны иметь имена: server-ca.pem, client-cert.pem и client-key.pem.
Мигрируем с SQL Server на PostgreSQL
В статье продемонстрированы опыт поколения администраторов сталкнувшихся с потребностью миграции баз данных с помощью SSIS и инструмента с открытым исходным кодом sqlserver2pqsql.
Также не забывайте делать бекапы и проверять их работоспособность до и после миграции, чтобы сохранить копию на случай сбоя или катастрофы.
Специалисты компании «1С:БИЗНЕС РЕШЕНИЯ» помогут Вам освоить все возможности программ 1С, помогут установить, проведут бесплатную демонстрацию программ и ответят на вопросы!
Узнать подробнее можно по телефону +7 (3532) 43-05-17.