Практический опыт миграции с MySQL на SQL Express. Постановка задачи

1. Постановка задачи

«1С-Битрикс» (http://www.1c-bitrix.ru/) - совместное предприятие, созданное фирмой «1С» и компанией «Битрикс» для развития веб-направления, разработки новых интернет-решений. Компания «Битрикс» производит разработку и сопровождение системы управления контентом (CMS) «1С-Битрикс: Управление сайтом» (http://www.1c-bitrix.ru/products/cms/), позволяющей управлять статическим и динамическим контентом сайта, осуществлять деятельность Интернет-магазина, вести форумы, дискусионные группы, создавать социальные сети, проводить анализ посещаемости сайта, эффективности рекламных компаний, использовать он-лайновый монитор и другие средства Веб-аналитики.

Для своей работы «1С-Битрикс: Управление сайтом» использует базу данных, в которой хранит контент и настройки сайта. В качестве СУБД используются свободно распространяемые MySQL (http://dev.mysql.com/downloads/mysql/5.0.html) или SQL Express (http://www.microsoft.com/rus/express/sql/default.aspx). В последнее время от клиентов, выбравших инсталляцию с MySQL, стали поступать вопросы о переходе на SQL Express. В связи с этим встала задача исследовать осуществимость и трудоемкость такого перехода и, по возможности, разработать процедуру автоматической миграции БД MySQL на SQL Express.

2. Выбор инструмента

По условиям задачи необходимо было избежать программных средств сторонних производителей. Все технологические компоненты, используемые в процессе миграции, должны были предоставляться к продуктам MySQL или SQL Express и быть также бесплатными. По этим причинам не рассматривались, например, Cherry City Software® MySQL OLE DB Provider или Microsoft Integration Services. Для обеспечения доступа к БД MySQL из внешних приложений были выбраны (http://dev.mysql.com/downloads/connector/) MySQL Connector/ODBC 5.1 и MySQL Connector/Net 6.0. Первый коннектор использовался при сравнении структур баз MySQL- и SQL Express-инсталляций, второй – непосредствено при переносе данных.

3. Замечания по процессу миграции

При миграции от нас не требовалось создавать структуры таблиц, индексы, представления, ограничения, триггеры на стороне SQL Express по образу того, как это было в MySQL. Как отмечалось выше, «1С-Битрикс: Управление сайтом» имеет отдельные инсталляции для MySQL и SQL Express, т.е. структура базы и там, и там создается самостоятельно в процессе установки продукта и изменению не подлежит. От нас требовалось провести их сравнение в случае MySQL и SQL Express, соотнести таблицы и колонки и скопировать данные из БД MySQL в SQL Express на основе выстроенной схемы отображения.

Для эмуляции действий клиента была создана виртуальная машина, имеющая следующие характеристики:

Рис. 3.1

работающая под управлением Hyper-V Manager, Version: 6.0.6001.18016.

Авторы: Алексей Шуленин, Денис Шаромов