Как одна из самых популярных баз данных, SQL Server известен своей простотой установки и настройки, такими функциями безопасности, как шифрование, отличными возможностями восстановления данных и многочисленными удобными инструментами.

Однако из-за ряда ограничений SQL Server постепенно теряет своих пользователей. SQL Server имеет довольно ограничительную лицензию и затраты на обслуживание, которые увеличиваются по мере увеличения размера базы данных или количества клиентов. Его максимальный размер — 10 ГБ, а буферный кэш — 1 МБ. Работает только в Windows.

PostgreSQL, совершенно бесплатная база данных с открытым исходным кодом, может понравиться пользователям SQL Server. Эта база данных имеет международную поддержку и доступна в Windows, Mac, Linux, FreeBSD и Solaris. Кроме того, существует множество дополнений с открытым исходным кодом.

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

Contents

Инструменты миграции базы данных:

1. Pgloader

Pgloader — это программа загрузки данных, выполняющая миграцию с MS SQL Server на PostgreSQL. Инструмент автоматически обнаруживает схему (первичный ключ, ограничения внешнего ключа и структуру индекса) и предоставляет правила преобразования для преобразования типа данных SQL Server в тип данных PostgreSQL.

ЧИТАТЬ   Красная дорожка Met Gala уже расстелилась, а страсти по поводу нарядов этих 15 звезд все еще кипят.

2. SQLserver2pgsql

Sqlserver2pgsql — еще один инструмент миграции с открытым исходным кодом, написанный на Perl, который преобразует схему SQL Server в PostgreSQL и переносит все данные SQL Server в PostgreSQL с использованием полученного Pentaho Data Integrator (Kettle). Однако он не инкапсулирует хранимые процедуры. Этот инструмент лучше всего использовать для автономной миграции базы данных. Вы можете найти его на GitHub.

Он должен работать в Linux, Windows и любой системе Unix.

Способ 1. Миграция с SQL Server на PostgreSQL с помощью SSIS

  1. Установить Драйвер ODBC PostgreSQL для Windows х86/х64.

  2. В SQL Server Management Studio щелкните правой кнопкой мыши исходную базу данных и выберите Задачи > Экспорт данных.

  3. Выбирать Собственные клиенты SQL Server в качестве источника данных и Поставщик данных .Net Framework для ODBC в качестве водителя назначения.

  4. Установите строку подключения к базе данных. Добавьте имя источника данных, соответствующее значению, указанному для Driver= {имя-вашего-источника-данных} для драйвера PostgreSQL.

Для 32-битной системы

Driver={PostgreSQL UNICODE};Server=;Port=;Database=yourDBname;Uid=postgres;Pwd=admin;

Для 64-битной системы

Driver={PostgreSQL UNICODE (x64) };Server=;Port=;Database=yourDBname;Uid=postgres;Pwd=admin;
  1. Выберите исходные таблицы. Вы также можете изменить сопоставление SQL Server по умолчанию.

Способ 2. Миграция с SQL Server на PostgreSQL с помощью Sqlserver2pgsql

Что нам нужно:

  • Информация о подключении к SQL Server, включая IP-адрес, порт, имя пользователя, пароль, имена баз данных и экземпляров (если не установлено по умолчанию).

  • Доступ к пустой целевой базе данных PostgreSQL.

Создание образа Docker

Docker — отличный инструмент для создания процедуры миграции базы данных, не зависящей от облака, которую можно применить к большинству ИТ-архитектур.

Создаем образ на OpenJDK 8, который позволяет создавать и запускать приложения Java 1.8.

FROM adoptopenjdk/openjdk8

Мы устанавливаем ряд переменных среды для обеих баз данных.

ENV SRC_HOST=

ENV SRC_PORT=

ENV SRC_USER=

ENV SRC_PWD=

ENV SRC_DB=

Настройка рабочего каталога

ENV MIGRATIONDIR=/opt/data_migration

RUN mkdir -p $MIGRATIONDIR

Устанавливаем несколько инструментов для работы с клиентом

RUN apt-get update; apt-get install perl netcat -y; \

apt-get install wget unzip postgresql-client -y

Установите Kettle, чтобы начать миграцию.

RUN wget --progress=dot:giga  -O /tmp/kettle.zip; \

unzip /tmp/kettle.zip -d /tmp/kettle; \

mv /tmp/kettle/data-integration $MIGRATIONDIR; \

chmod -R +x $MIGRATIONDIR/data-integration/*.sh

Установка jTDS для подключения SQL Server в задании Kettle

RUN wget  -O /tmp/jtds.zip; \

unzip /tmp/jtds.zip -d /tmp/jtds; \

cp /tmp/jtds/jtds-*.jar $MIGRATIONDIR/data-integration/lib/; \

rm -Rf /tmp/jtds;rm -f /tmp/jtds.zip

Настройка .sh-скрипта для запуска задач Kettle

COPY ./scripts /scripts

RUN chmod +x /scripts/*.sh

WORKDIR $MIGRATIONDIR

Настройка сценария миграции

Начнем с запуска bash

#!/bin/bash

Давайте настроим его на сбой, если его команды не выполняются.

set -e

Преобразование схемы SQL Server в сценарии PostgreSQL

echo !!! Creating Kettle job && \

./sqlserver2pgsql.pl -b before.sql -a after.sql -u unsure.sql -k kettlejobs -stringtype_unspecified -f conf/$SCHEMA_FILE \

  -sh $SRC_HOST -sp $SRC_PORT -su $SRC_USER -sw $SRC_PWD -sd $SRC_DB \

  -ph $DST_HOST -pp $DST_PORT -pu $DST_USER -pw $DST_PWD -pd $DST_DB

Файлы Kettlejob будут храниться в папке $MIGRATIONDIR/kettlejobs/migration.kjb.

ЧИТАТЬ   Ракетные комплексы «Ярс» вышли на боевое дежурство на Алтае [ФОТО] / news2.ru

Запускаем скрипт before.sql, содержащий команды Postgres SQL, используемые для создания структуры таблицы.

Использование SSL-сертификатов PostgreSQL для аутентификации (обратите внимание на настройки sslmode, sslrootcert, sslcert И sslkeyдля этого нужно)

echo !!! Executing before.sql && \

# restricting access to key file as per psql requirements:

chmod 0600 conf/client-key.pem && \

PGPASSWORD=$DST_PWD psql -h $DST_HOST -p $DST_PORT -U $DST_USER -d $DST_DB -v sslmode=verify-ca -v sslrootcert=conf/server-ca.pem -v sslcert=conf/client-cert.pem -v sslkey=conf/client-key.pem -f before.sql

Использование логина и пароля PostgreSQL для аутентификации

echo !!! Executing before.sql && \

# restricting access to key file as per psql requirements:

chmod 0600 conf/client-key.pem && \

PGPASSWORD=$DST_PWD psql -h $DST_HOST -p $DST_PORT -U $DST_USER -d $DST_DB -f before.sql

Запуск задания Чайник

echo !!! Running Kettle job && \

data-integration/kitchen.sh -file=kettlejobs/migration.kjb -level=rowlevel

Запустите скрипт после.sql

Использование SSL-сертификатов PostgreSQL для аутентификации (обратите внимание на настройки sslmode, sslrootcert, sslcert И sslkeyдля этого нужно)

echo !!! Executing after.sql && \

PGPASSWORD=$DST_PWD psql -h $DST_HOST -p $DST_PORT -U $DST_USER -d $DST_DB -v sslmode=verify-ca -v sslrootcert=conf/server-ca.pem -v sslcert=conf/client-cert.pem -v sslkey=conf/client-key.pem -f after.sql

Использование логина и пароля PostgreSQL для аутентификации

echo !!! Executing after.sql && \

PGPASSWORD=$DST_PWD psql -h $DST_HOST -p $DST_PORT -U $DST_USER -d $DST_DB -f after.sql

Создание образа контейнера Docker

docker build -t sqlserver2psql .

Экспортируйте схему с помощью SQL Server Management Studio.

  1. В SQL Server Management Studio щелкните правой кнопкой мыши исходную базу данных. Затем выберите Задачи > Создание сценариев.

  2. Выберите таблицы для экспорта и нажмите кнопку Следующий.

  3. На панелях Установить параметры сценария выбирать Сохранить как файл сценария > Один файл сценария, чтобы сохранить файл Schema.sql в /conf (при необходимости создайте такой файл). Установите флажок Текст Юникод. Нажимать Следующий.

  4. На странице обзора нажмите кнопку Следующий. После завершения процесса нажмите «Готово».

  5. Поместите файл на сервер, на котором работает sqlserver2pgsql.

Загрузка сертификатов для аутентификации PostgreSQL с использованием SSL

Загрузите сертификаты и скопируйте их в /конф.

Файлы сертификатов должны иметь имена: server-ca.pem, client-cert.pem и client-key.pem.

Возможность миграции с SQL Server на PostgreSQL

docker run --name sqlserver2psql --rm -e SRC_HOST=<SQL Server host> \

  -e SRC_USER=<SQL Server username> -e SRC_PWD="<SQL Server password>" \

  -e SRC_DB=<SQL Server db name> -e DST_HOST=<PostgreSQL host> \

  -e DST_PORT=5432 -e DST_USER=<PostgreSQL username> \

  -e DST_PWD=<PostgreSQL password> -e DST_DB="<PostgreSQL db name>"

  --mount type=bind,source="$(pwd)"/conf,target=/opt/data_migration/conf \

  sqlserver2psql /scripts/migrate.sh

Заключение

SQL Server и PostgreSQL — мощные и популярные базы данных среди пользователей по всему миру, и некоторые пользователи могут захотеть преобразовать свою базу данных SQL Server в PostgreSQL для большей свободы и экономии средств (узнайте, как перейти с PostgreSQL на SQL Server).

В этой статье представлены два способа миграции баз данных с помощью SSIS и инструмента с открытым исходным кодом sqlserver2pqsql.

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

В заключение приглашаем всех посетить открытый урок 26 марта в 20:00, где мы рассмотрим инструменты автоматической миграции с MS SQL Server на PostgreSQL. Вы можете зарегистрироваться связь.

Source

От admin