Мигрирането от собствени двигатели към двигатели с отворен код е тенденция, която се разраства в индустрията.
Въпреки това, миграцията на база данни не е нещо, което трябва да се приема лекомислено.
В този блог нека видим какво е необходимо, за да преминете от Microsoft SQL Server към MySQL Server и как да го направите.
И така, нека започнем с преглед какво е MS SQL и какво е MySQL.
Microsoft SQL Server е много популярна RDBMS с ограничително лицензиране и скромна цена на притежание, ако базата данни е със значителен размер или се използва от значителен брой клиенти. Той предоставя много удобен и лесен за научаване интерфейс, което е довело до голяма инсталирана потребителска база. Подобно на друг софтуер за RDBMS, MS SQL Server е изграден върху SQL, стандартизиран език за програмиране, който администраторите на бази данни (DBA) и други ИТ специалисти използват за управление на бази данни и запитване на данните, които съдържат. SQL Server е свързан с Transact-SQL (T-SQL), реализация на SQL от Microsoft, която добавя набор от собствени разширения за програмиране към стандартния език.
MySQL е поддържана от Oracle система за управление на релационни бази данни с отворен код, базирана на SQL.
Това е втората най-популярна база данни в света според класацията на db-engines и вероятно най-настоящият бекенд на база данни на планетата, тъй като управлява повечето интернет услуги по целия свят.
MySQL работи на почти всички платформи, включително Linux, UNIX и Windows. Това е важен компонент от корпоративния стек с отворен код, наречен LAMP. Версията MySQL Enterprise се предлага с поддръжка и допълнителни функции за сигурност и висока наличност.
https://db-engines.com/en/rankingКомбинацията от спестяване на разходи, съвместимост на платформата и набор от функции на MySQL го прави наистина привлекателен и много организации мигрират от MS SQL Server към тази платформа с отворен код, за да се възползват от тези функции.
Защо да мигрирате?
Обикновено първата причина за мигриране е цената. SQL Server е собствена база данни от Microsoft. Има безплатна версия на SQL Server, наречена Express, но тя има някои ограничения като лимит от 10 GB база данни, ограничено количество CPU, ограничено количество RAM и други, така че вероятно трябва да платите лиценза, за да го използвате в производството. Можете да проверите цените тук.
С MySQL можете да използвате изданието на общността безплатно и без никакви ограничения.
Друга причина може да е поддръжката на операционната система. За разлика от MS SQL Server, MySQL поддържа широка гама от операционни системи, включително Linux, Windows, Mac OS, Solaris и много други.
По отношение на инсталацията и конфигурацията, MySQL се инсталира по-бързо, има по-малък отпечатък, като същевременно може да управлява доста големи бази данни и има по-малко конфигурационни копчета, които се нуждаят от настройка, отколкото SQL Server.
В областта на високата наличност MySQL има редица доказани решения, включително репликация, SAN и MySQL Cluster, които са равни или най-добри SQL Server в зависимост от сценария.
Страхотната MySQL общност предоставя много предимства, включително страхотна мрежа за разработчици и DBA, в която всички работят заедно, за да помогнат за осигуряването на висококачествен продукт и за успеха един на друг.
Какво трябва да знаете
Преместването на данни и индексни структури към MySQL обикновено не е предизвикателна задача, тъй като MySQL поддържа всички важни типове данни, дизайни на таблици и индексни структури. Както и да е, има някои обекти, които ще се изправят пред някои предизвикателства. Обектите, свързани с кода, като съхранените процедури, могат да използват нестандартни ANSI функции, тъй като Transact-SQL има много от тях.
Така че следните елементи ще изискват специално внимание при мигриране:
- Асамблеи
- Типове
- Задействания, базирани на DDL и изрази (MySQL има базирани на редове тригери)
- Извиквания на функции на собствен SQL Server
- Определени случаи на динамичен T-SQL
По същия начин синонимите и ролите за сигурност ще се нуждаят от заобикаляне, тъй като не могат да бъдат директно мигрирани в MySQL.
Типове данни, изискващи преобразуване
Следната карта може да се използва за преобразуване на типове данни на SQL Server, които не се съпоставят във връзка 1 към 1 към MySQL:
SQL сървър | MySQL |
---|---|
ИДЕНТИЧНОСТ | AUTO_INCREMENT |
NTEXT, НАЦИОНАЛЕН ТЕКСТ | НАБОР ТЕКСТОВИ СИМВОЛИ UTF8 |
SMALLDATETIME | DATETIME |
ПАРИ | DECIMAL(19,4) |
МАЛКИ ПАРИ | DECIMAL(10,4) |
УНИКАЛЕН ИДЕНТИФИКАТОР | БИНАРЕН(16) |
SYSNAME | CHAR(256) |
Как да го направя
Има много инструменти за извършване на миграцията от MS SQL Server към MySQL като Amazon DMS или Data Integration (Kettle), но в този случай ще използваме инструмента за миграция на MySQL Workbench.
Този инструмент е предназначен да спести време на DBA и на разработчиците, като предоставя визуална, насочваща и щракваща лекота на използване във всички фази на конфигуриране и управление на сложен процес на миграция:
- Миграции на бази данни:Позволява миграции от Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite и др.
- Управление на проекти за миграция:Позволява миграциите да бъдат конфигурирани, копирани, редактирани, изпълнени и планирани.
- Избор на източник и цел:Позволява на потребителите да дефинират конкретни източници на данни и да анализират изходните данни преди миграцията.
- Мигриране на обекти:Позволява на потребителите да избират обекти за мигриране, да присвояват източник на целеви съпоставяния, където е необходимо, да редактират скриптове за мигриране и да създават целевата схема.
- Надстройки на версията:Използвайки миграция, потребителите могат лесно да преместват бази данни от по-стари версии на MySQL до най-новата.
Така че, нека го направим.
За тази задача предполагаме, че имате:
- SQL Server, инсталиран с вашата база данни за мигриране:Ще използваме примерната база данни на Northwind през MS SQL Server Express 2014 Edition.
- Инсталиран MySQL сървър:Имаме MySQL 5.7.25 Community Edition над CentOS.
- Потребители на двата сървъра на бази данни с привилегии за изпълнение на задачата:Имаме потребител „sa“ на SQL Server и потребител „migration“ с всички привилегии в MySQL.
- MySQL Workbench инсталиран с достъп до двата сървъра на база данни:Ще използваме MySQL Workbench 6.3.
За да започнете процеса на миграция, на главния екран на MySQL Workbench отидете на База данни-> Съветник за миграция.
Трябва да проверим предпоставките, за да потвърдим дали можем да продължим задачата. Ако всичко изглежда наред, можем да натиснем Стартиране на миграцията.
В тази стъпка трябва да предоставим информацията за изходната база данни, в този случай SQL Server.
Ще конфигурираме нашия изходен параметър, както можете да видите на предишното изображение:
Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost
Username: sa
Що се отнася до параметъра Server, ние изпълняваме MySQL Workbench на възела на SQL Server, но вероятно ще използвате IP адреса/името на хост на вашия сървър на база данни.
Сега можем да проверим връзката, като използваме бутона Тестване на връзката.
След това трябва да добавим целевите параметри, в този случай MySQL Server:
Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration
И натиснете Test Connection, за да потвърдите добавената информация.
В следващата стъпка MySQL Workbench ще се свърже с нашия SQL Server, за да извлече списък с каталозите и схемите.
Сега ще изберем примерната база данни на Northwind от списъка.
Можем да изберем как трябва да бъдат картографирани обратно проектираните схеми и обект. Ще използваме опцията Catalog.Schema.Table -> Catalog.Table, така че в нашия MySQL ще имаме база данни, наречена Northwind, и текущите таблици, които имаме в нашата база данни на SQL Server.
Ако всичко е минало добре, ще имаме списък с обекти за мигриране.
В този случай имаме обекти на таблица, изглед на обекти и рутинни обекти. Ще изберем само обектите на таблицата, защото за останалата част от обекта трябва да проверим ръчно съответния еквивалентен код на MySQL.
В тази стъпка обектите от източника се преобразуват в MySQL съвместими обекти.
Ако всичко е минало добре, можем да продължим, като изберем как искаме да създадем мигрираната схема в целта. Ще използваме опцията по подразбиране „Създаване на схема в целевата RDBMS“.
Сега нека проверим процеса на създаване на схемата.
В следващата стъпка можем да проверим резултата от всяко изпълнение на скрипт и можем да проверим новата база данни, създадена на нашия MySQL сървър.
В нашия MySQL сървър имаме:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| NORTHWND |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
В този момент ще имаме структурата на базата данни, но все още нямаме данните. Сега ще изберем как искаме да копираме данните в MySQL сървъра. Ще използваме опцията „Онлайн копие на таблични данни за насочване към RDBMS“.
И можем да наблюдаваме процеса на копиране от приложението MySQL Workbench.
В този момент цялата информация е мигрирала към нашия MySQL сървър.
mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
| 1 | Eastern |
| 2 | Western |
| 3 | Northern |
| 4 | Southern |
+----------+-------------------+
4 rows in set (0.00 sec)
В последната стъпка можем да проверим отчета за миграцията и да завършим задачата.
Миграцията приключи!
Тестване
Преди процеса на миграция трябва да тествате приложението и базата данни MySQL, за да разберете поведението с новия двигател.
Би трябвало също да е полезно да извършите сравнителен тест, за да потвърдите ефективността преди миграцията.
Има няколко съвета, които трябва да вземете предвид:
- Тестът трябва да симулира броя на очакваните потребителски връзки.
- Свързаните сесии трябва да изпълняват задачи, както биха възникнали през нормален ден.
- Трябва да заредите базата си данни с тестови данни, които са приблизително с размера, който очаквате да бъде в реалния свят.
За тази тестова задача можете да използвате инструмента mysqlslap. Това е диагностична програма, предназначена да емулира натоварването на клиента за MySQL сървър и да отчита времето на всеки етап.
Заключение
Както разгледахме в този блог, има няколко причини, които могат да накарат бизнеса да вземе решение за миграция на база данни, преминавайки от собствен двигател към такъв с отворен код. Тук видяхме популярен случай на използване, миграция от SQL Server към MySQL и направихме пример стъпка по стъпка, като използвахме един широко известен инструмент MySQL, MySQL Workbench. Надяваме се да намерите тази статия за полезна.