Gartner прогнозира, че до 2022 г. 50% от съществуващите търговски бази данни ще бъдат преобразувани в бази данни с отворен код. Нещо повече, 70% от новите вътрешни приложения ще бъдат разработени на платформа за база данни с отворен код (Състояние на пазара на СУБД с отворен код, 2018 г.).
Това са високи числа, като се има предвид зрелостта, стабилността и критичността на популярния патентован софтуер за бази данни. Същото може да се наблюдава и в топ класацията на базата данни, където повечето от първите десет бази данни са с отворен код.
https://db-engines.com/en/rankingКакво подтиква компаниите да предприемат подобни ходове?
Може да има много причини за мигриране на системи от бази данни. За някои основната причина ще бъде цената на лиценза и собствеността; но наистина ли става дума само за цената? И дали отвореният код е достатъчно стабилен, за да премести критичните производствени системи към този нов свят с отворен код?
Базите данни с отворен код, особено новите, въведени в организация, често идват от разработчик в екип по проекта. Избрано е, защото е безплатно (не оказва влияние върху директните външни разходи на проекта) и отговаря на техническите изисквания на момента.
Но безплатният аспект всъщност не идва просто без разходи, тъй като трябва да вземете предвид много фактори, включително миграцията и цената на човекочасовете. Колкото по-плавно е миграцията, толкова по-малко време и пари са изразходвани за проекта.
Миграцията на бази данни може да бъде предизвикателство, особено за хетерогенни миграции на собствени бази данни като Oracle към PostgreSQL, Oracle към Percona или MySQL. Сложната структура на схемата, типове данни и кодът на базата данни като PL/SQL могат да бъдат доста различни от тези на целевите бази данни,
които изискват стъпка на трансформация на схема и код, преди да започне миграцията на данни.
В неотдавнашната статия на моя колега Пол Намуаг той разгледа как да мигрираме Oracle към Percona.
Този път ще разгледаме какво трябва да знаете, преди да мигрирате от Oracle към MariaDB.
MariaDB обещава корпоративни функции и функции за миграция, които могат да помогнат за мигрирането на бази данни на Oracle в света с отворен код.
В тази публикация в блога ще разгледаме следното:
- Защо да мигрирате?
- Разлики в механизма за съхранение
- Съображения за свързване на база данни
- Простота на инсталиране и администриране
- Разлики в сигурността
- Репликация и HA
- PL/SQL и код на база данни
- Групиране и мащабиране
- Архивиране и възстановяване
- Облачна съвместимост
- Разни съображения
Защо да мигрирате от Oracle?
Повечето предприятия ще работят с Oracle или SQL Server, или комбинация от двете, с малки джобове от изолирани бази данни с отворен код, работещи независимо. Малките и средните предприятия биха били склонни да внедряват основно бази данни с отворен код, особено за нови приложения. Но това се променя и често отвореният код е основният избор дори за големите организации.
Бързо сравнение на тези две системи за бази данни изглежда по следния начин:
- Само Oracle Express Edition е безплатно, но има много ограничени функции в сравнение с MariaDB. За обширни функции трябва да закупите Oracle Standard Edition или Oracle Enterprise Edition.
- От друга страна, общността на MariaDB и MySQL работи усилено, за да сведе до минимум потенциалната липса на функции. Съответствието със сигурността, горещите архиви и много други корпоративни функции вече са налични в MariaDB.
Има неща, които винаги са били по-гъвкави в MariaDB/MySQL, отколкото в масивни настройки на Oracle. Една от тях е лекотата на репликация и хоризонталната мащабируемост на клъстерите.
Разлики в системата за съхранение
Първо, нека започнем с някои основни неща. Все още можете да чуете много легенди и митове относно ограниченията на MySQL или MariaDB, които се отнасят най-вече за тъмните времена, когато основната машина за съхранение беше MyISAM.
MyISAM беше машината за съхранение по подразбиране от MySQL 3.23, докато не беше заменена от InnoDB в MariaDB 5.5. Това е лек двигател без транзакции с отлична производителност, но не предлага заключване на ниво ред или надеждността на InnoDB.
С InnoDB (машина за съхранение по подразбиране), MariaDB предлага двете стандартни заключване на ниво ред, които са споделени ключалки(S) и изключителни ключалки(X). Получава се споделено заключване за четене на ред и позволява на други транзакции да четат заключения ред. Различните транзакции също могат да придобият свои собствени споделени заключвания.
Конкретното заключване се получава за запис в ред и спира допълнителни транзакции да заключват същия ред.
InnoDB определено покри най-голямата разлика в транзакционните функции между тези две системи.
Поради включващия се характер на MariaDB, той предлага още повече двигатели за съхранение, за да можете по-добре да го настроите към конкретно работно натоварване. т.е. когато пространството има значение, можете да използвате TokuDB, който предлага страхотно съотношение на компресия, Spider, оптимизиран за разделяне и разделяне на данни, ColumnStore за мащабиране на големи данни.
Независимо от това, за тези, които мигрират от Oracle, моята препоръка би била да минат първо с механизма за съхранение на InnoDB.
Съображения за свързване
MariaDB споделя с Oracle добра поддръжка за достъп до база данни, включително ODBC и JDBC драйвери, както и библиотеки за достъп за Perl, Python и PHP. MySQL и Oracle поддържат двоични големи обекти, символни, числови и типове данни за дата. Така че не би трябвало да имате проблеми с намирането на правилния конектор за услугите за приложения.
MariaDB няма специален процес на слушател за поддържане на връзки към базата данни nori SCAN адрес за клъстерираната база данни, както знаем от Oracle. Също така няма да намерите гъвкави услуги за бази данни. Вместо това ще трябва да конфигурирате ръчно между Unix сокет (локален, най-сигурен начин за свързване на DB - приложение на същия сървър), отдалечени връзки (по подразбиране MariaDB не позволява отдалечено влизане) и също канал и памет, налични в Windows само системи. За клъстера SCAN адресът трябва да бъде заменен от балансира на натоварването. MariaDB препоръчва използването на другия им продукт MaxScale, но можете да намерите и други като ProxySQL или HAproxy, които ще работят с MariaDB, с някои ограничения. Докато използването на външни балансери на натоварването за MariaDB може да бъде трудно, може да намерите страхотни функции, които за сравнение не са налични в базата данни на Oracle.
Балансьорът на натоварване също би бил препоръка за тези, които търсят Oracle Transparent Application Failover (TAF), Oracle Firewall DB или някои от разширените функции за сигурност като Oracle Connection Manager. Можете да намерите повече за избора на правилния балансьор на натоварването в следната бяла книга.
Въпреки че тези технологии са безплатни и могат да се внедряват ръчно с помощта на инсталации, базирани на скриптове, системи като ClusterControl автоматизират процеса със своя интерфейс „точи и щракни“. ClusterControl също ви позволява да разгръщате технологии за кеширане.
Простота на инсталиране и администриране
Най-новата налична версия на Oracle DB добави дългоочаквана инсталационна функция:Oracle 18c вече може да бъде инсталиран на Oracle Linux с помощта на RPM. Специализираната Java-базирана инсталация винаги е била проблем за тези, които искат да напишат автоматизация за своите готварски книги или фрагменти от код на Puppet. Можете да използвате предварително дефинирана тиха инсталация, но файлът се променяше от време на време и все пак трябваше да се справите с ада на зависимостите. Инсталацията, базирана на RPM, определено беше добър ход.
И така, как работи в MariaDB?
За тези, които се движат от света на Oracle, винаги е приятна изненада да видят колко бързо можете да разгръщате екземпляри, да създавате нови бази данни или дори да настройвате сложни потоци за репликация. Процесът на инсталиране и конфигуриране е може би най-гладката част от процеса на миграция. Въпреки че изборът на правилните настройки отнема време и знания.
Oracle предоставя набор от двоични дистрибуции на MySQL. Те включват общи двоични дистрибуции под формата на компресирани tar файлове (файлове с разширение .tar.gz) за редица платформи и двоични файлове в специфични за платформата пакети. На платформата Windows можете да намерите стандартен съветник за инсталиране чрез GUI.
Помощникът за конфигуриране на база данни на Oracle (DBCA) по принцип не е необходим, тъй като ще можете да създадете база данни с команда от един ред.
CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
Можете също така да имате база данни с различни съпоставяния на база данни и набори от знаци под същия екземпляр на MariaDB.
Настройката на репликацията е само да се активира двоично регистриране на главен (подобно на архивния дневник в Oracle) и да се изпълни следната команда на подчинения, за да се прикачи към главния.
CHANGE MASTER TO
MASTER_HOST = host,
MASTER_PORT = port,
MASTER_USER = replication_user,
MASTER_PASSWORD = password,
MASTER_AUTO_POSITION = 1;
Сигурност и съответствие
Oracle осигурява подобрена сигурност на базата данни.
Удостоверяването на потребителя се извършва в Oracle чрез посочване на глобални роли в допълнение към местоположението, потребителското име и паролата. В Oracle удостоверяването на потребителя се извършва чрез различни методи за удостоверяване, включително удостоверяване на база данни, външно удостоверяване и удостоверяване на прокси.
Дълго време ролите не са били налични в MariaDB или MySQL. MariaDB добави роли с версия 10.2, след като се появиха в MySQL 8.0.
Ролите, опция, която се използва широко в общите настройки на Oracle DB, може лесно да се трансформира в MariaDB, така че не е нужно да губите време за корекции на разрешенията за един потребител.
Създавайте, променяйте потребителски, пароли:всичко работи подобно на Oracle DB.
За постигане на стандарти за съответствие на корпоративната сигурност, MariaDB предлага вградени функции като:
- Плъгин за одит
- Криптиране на данни в покой
- Сертификати, TSS връзка
- PAM Plugin
Оферти за плъгини за одит един вид фино-зърнест одит (FGA) или AUDI SQL, наличен в Oracle. Той не предлага същия набор от функции, но обикновено е достатъчно добър, за да удовлетвори одитите за съответствие със сигурността.
Криптиране на данни в покой Криптирането на данни в покой може да бъде изискване за разпоредби за сигурност като HIPAA или PCI DSS. Такова криптиране може да се реализира на няколко нива - можете да шифровате целия диск, на който се съхраняват файловете. Можете да шифровате само базата данни MySQL чрез функционалност, налична в най-новите версии на MySQL или MariaDB. Шифроването може също да бъде внедрено в приложението, така че да криптира данните, преди да ги съхрани в базата данни. Всяка опция има своите плюсове и минуси:криптирането на диска може да помогне само когато дисковете са физически откраднати, но файловете няма да бъдат криптирани на работещ сървър на база данни.
PAM Plugin разширява функционалността за регистриране до строги потребителски акаунти с LDAP настройки. Всъщност намирам, че е много по-лесно да се настрои, отколкото LDAP интеграция с Oracle Database.
Репликация и HA
MariaDB е добре известна със своята простота и гъвкавост на репликация. По подразбиране можете да четете или дори да пишете на вашите резервни/подчинени сървъри. За щастие, версиите на MySQL 10.X донесоха много значителни подобрения на репликацията, включително глобални идентификатори на транзакции, контролни суми на събития, многонишкови подчинени и безопасни при срив подчинени/главни, за да направят репликацията още по-добра. DBA, свикнали с MySQL репликация, четене и запис, биха очаквали подобно или дори по-просто решение от неговия по-голям брат, Oracle. За съжаление не по подразбиране.
Стандартната физическа готовност за Oracle е затворена за всякакви операции четене-запис. Всъщност Oracle предлага логически варианти, но има много ограничения и не е проектиран за HA. Решението на този проблем е допълнителна платена функция, наречена Active Data Guard, която можете да използвате за четене на данни от режим на готовност, докато прилагате регистрационни файлове за повторно изпълнение.
Active Data Guard е платена добавка към безплатния софтуер за възстановяване след бедствие на Oracle Data Guard, наличен само за Oracle Database Enterprise Edition (лиценз с най-висока цена). Той предоставя достъп само за четене, като същевременно прилага непрекъснато промени, изпратени от основната база данни. Като активна резервна база данни, тя помага за разтоварване на заявки за четене, отчети и инкрементални архиви от основната база данни. Архитектурата на продукта е проектирана така, че да позволи на резервните бази данни да бъдат изолирани от повреди, които могат да възникнат в основната база данни.
Вълнуваща характеристика на базата данни на Oracle 12c и нещо, което Oracle DBA би пропуснало, е проверката на повреда на данните. Проверките за повреда на Oracle Data Guard се извършват, за да се гарантира, че данните са в точно подравняване, преди данните да бъдат копирани в резервна база данни. Този механизъм може да се използва и за възстановяване на блокове от данни на първичния директно от резервната база данни.
MariaDB предлага различни методи за репликация и функции за репликация като:
- синхронно,
- асинхронно,
- полусинхронен
Наборът от функции за репликация на MariaDB е богат. Със синхронна репликация можете да настроите отказоустойчивост без загуба на транзакция при запис. За да намалите закъсненията при асинхронна репликация, може да пожелаете да използвате In-order паралелизирана репликация на подчинени устройства. Събитията, които могат да бъдат компресирани, са събитията, които обикновено могат да бъдат със значителен размер:събития на заявка (за DDL и DML при репликация, базирана на изрази), и събития на редове (за DML в базирана на ред репликация). Подобно на други опции за компресиране, компресираната репликация на MariaDB е прозрачна. Както бе споменато по-горе, целият процес е много лесен в сравнение с физическата и логическа репликация на Oracle Data Guard.
PL/SQL и код на база данни
Сега стигаме до трудната част:PL/SQL.
Докато репликацията и HA с MariaDB властват. Oracle е царят на PL/SQL, без съмнение.
PL/SQL е основната пречка за миграцията към света с отворен код в много организации. Но MariaDB не се отказва тук.
MariaDB 10.3 (известен също като MariaDB TX 3.0) добави някои невероятни нови функции, включително конструкции SEQUENCE, пакети в стил Oracle и тип данни ROW – което прави миграцията много по-лесна.
С новия параметър SQL_MODE =ORACLE, MariaDB вече може да анализира, в зависимост от случая, куп от наследения Oracle PL/SQL, без да пренаписва кода.
Както можем да открием на страницата им с история на клиентите, използвайки основната съвместимост на Oracle PL/SQL в MariaDB TX 3.0, Сингапурската банка за развитие (DBS) успя да мигрира повече от половината от техните бизнес критични приложения само за 12 месеца от Oracle База данни към MariaDB.
Новият режим на съвместимост помага със следния синтаксис:
- Синтаксис на цикъла
- Декларация на променлива
- Конструкция на съхранена процедура, която не отговаря на ANSI
- Синтаксис на курсора
- Параметри на съхранената процедура
- Наследяване на тип данни (%TYPE, %ROWTYPE)
- Изключения в стил PL/SQL
- Синоними за основни типове SQL (VARCHAR2, NUMBER, …)
Но ако погледнем по-старата версия 10.2, част от съвместимостта между Oracle и MariaDB се появи преди като:
- Общи таблични изрази
- Рекурсивни SQL заявки
- Функции на Windows, NTILETE, RANK, DENESE_RANK.
Вроден PL/SQL синтактичен анализ или в някои случаи директното изпълнение на собствени процедури на Oracle може значително да намали разходите за разработка.
Друга много полезна функция, добавена от SQL_MODE=Oracle, са последователностите. Внедряването на последователности в MariaDB Server 10.3 следва стандарта SQL:2003 и включва съвместимост на синтаксиса с Oracle.
За създаване на последователност се използва оператор create:
CREATE SEQUENCE Sequence_1
START WITH 1
INCREMENT BY 1;
Когато се създават последователности могат да се използват например с вмъквания като:
INSERT INTO database (database_id, database_name) VALUES(Sequence_1.NEXTVAL, 'MariaDB');
Групиране и мащабиране
MariaDB е асинхронен, активен-активен, мулти-главен клъстер на база данни.
MariaDB Cluster се различава от това, което е известно като MySQL клъстер на Oracle - NDB.
MariaDB клъстерът е базиран на приставката за репликация с няколко главни, предоставена от Codership (Galera). От версия 5.5 технологията Galera (wsrep API) е неразделна част от MariaDB. Архитектурата на приставките Galera се основава на три основни слоя:сертифициране, репликация и рамка за групова комуникация.
Сертификационният слой подготвя наборите за запис и извършва сертификационни проверки върху тях, като гарантира, че могат да бъдат приложени.
Слоят за репликация управлява протокола за репликация и осигурява пълната способност за подреждане.
Group Communication Framework внедрява архитектура на плъгини, която позволява на други системи да се свързват чрез gcomm backend схема.
Основната разлика от Oracle RAC е, че всеки възел има отделни данни. Oracle RAC често се заблуждава като допълващо HA решение, докато дисковете обикновено са в един и същ дисков масив. MariaDB не само предлага излишно хранилище, но също така поддържа клъстериране по географски данни без нужда от специално влакно.
Архивиране и възстановяване
Oracle предлага много механизми за архивиране, включително горещо архивиране, архивиране, импортиране, експортиране и много други.
За разлика от MySQL, MariaDB предлага външен инструмент за горещо архивиране, наречен mariabackup. Това е разклонение на Percona XtraBackup, предназначено да работи с криптирани и компресирани таблици и е препоръчителният метод за архивиране за бази данни на MariaDB.
MariaDB Server 10.1 въведе компресиране на MariaDB и криптиране на данни в покой, но съществуващите решения за архивиране не поддържаха пълна способност за архивиране за тези функции. Затова MariaDB реши да разшири XtraBackup (версия 2.3.8) и нарече това решение Mariabackup.
Percona и Mariabackup предлагат подобни функции, но ако се интересувате от разлики, можете да ги намерите тук.
Това, което MariaDB не предлага, е каталогът за възстановяване на резервните копия на вашата база данни. За щастие това може да бъде разширено със системи на трети страни като ClusterControl.
Облачна съвместимост
Облачните инфраструктури стават все по-популярни в наши дни. Въпреки че облачната виртуална машина може да не е толкова надеждна като сървър от корпоративен клас, основните доставчици на облачни услуги предлагат различни инструменти за увеличаване на наличността на услугите. Можете да избирате между EC2 архитектура или DBaaS като Amazon RDS.
Amazon RDS поддържа MariaDB Server 10.3. Той не поддържа SQL_MODE=Oracle, но все пак можете да намерите набор от функции, които улесняват мигрирането. Облакът на Amazon поддържа общи задачи за управление, като наблюдение, архивиране, внедряване на множество A-Z и др.
Друг популярен доставчик на облак, Google Cloud, също предлага най-новата версия на MariaDB. Можете да го разположите като контейнер или изображение на VM, сертифицирано от библиотека Bintami.
Azure предлага и собствена реализация на MariaDB. Той е подобен на Amazon RDS, с архивиране, мащабиране и сборки с висока наличност. Гарантираният SLA е 99,99%, което съответства на 4 m 23 секунди на месец престой.
Разни съображения
Както беше споменато в самото начало на тази статия, миграцията на Oracle към MariaDB е многоетапен процес. Един общ съвет ще бъде да не се опитвате да мигрирате всички бази данни наведнъж. Разделянето на миграцията на малки партиди в повечето сценарии е най-добрият подход.
Ако не сте запознати с технологията, опитайте я. Трябва да се чувствате уверени с платформата и да знаете, че има плюсове и минуси. Тестването ще изгради увереност и ще повлияе на решенията ви по отношение на миграцията.
Има интересни инструменти, които могат да ви помогнат с най-трудния процес на миграция на PL/SQL. Толкова интересни са dbconvert, AWS Schema Conversion Tool - AWS Documentation.
През годините MariaDB придоби корпоративна поддръжка и зрялост за управление на критични и сложни системи за транзакции на данни. С последната версия MariaDB добави някои страхотни нови функции като SQL_Mode=Oracle съвместимост, което прави процеса на преход по-лесен от всякога.
И накрая, можете да се присъедините към мен на 12 март за уебинар, по време на който ще ви преведа през всичко, което трябва да знаете, когато става въпрос за мигриране от база данни на Oracle към MariaDB.