г. Оренбург, пер. Матросский, д.2, 2 этаж

пн-пт 09:00 - 18:00

Отдел качества: +7 (922) 886 95 17

  • Rutube
  • Яндекс Дзен
  • вконтакте

Мигрируем с SQL Server на PostgreSQL двумя способами

Парадигма современного 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

  1. Установите PostgreSQL ODBC Driver для Windows x86/x64.
  2. В SQL Server Management Studio кликните правой кнопкой мыши по исходной базе данных и выберите Tasks → Export Data.
  3. Выберите SQL Server Native Clients в качестве источника данных и .Net Framework Data Provider for ODBC в качестве драйвера назначения (destination driver).
  4. Установите строку подключения к базе данных. Добавьте имя источника данных, которое соответствует значению, заданному для 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

  1. В SQL Server Management Studio кликните правой кнопкой мыши по исходной базе данных. Затем выберите Tasks → Generate Scripts.
  2. Выберите таблицы для экспорта и нажмите кнопку Next.
  3. На панели Set Scripting Options выберите Save as a script file → Single script file, чтобы сохранить файл schema.sql в <корневой каталог проекта> / conf (при необходимости создайте такой файл). Установите флажок в поле Unicode text. Нажмите на Next.
  4. На странице обзора нажмите кнопку Next. После завершения процесса нажмите Finish.
  5. Поместите файл на сервер, где запущен 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.