Mysql
 sql >> Database >  >> RDS >> Mysql

Come migrare da MSSQL a MySQL

La migrazione da motori proprietari a motori open source è una tendenza in crescita nel settore.

Tuttavia, la migrazione del database non è qualcosa da prendere alla leggera.

In questo blog, vediamo cosa è necessario per passare da Microsoft SQL Server a MySQL Server e come farlo.

Quindi, iniziamo esaminando cos'è MS SQL e cos'è MySQL.

Microsoft SQL Server è un RDBMS molto popolare con licenze restrittive e costi di proprietà modesti se il database è di dimensioni significative o viene utilizzato da un numero significativo di client. Fornisce un'interfaccia molto intuitiva e facile da imparare, che ha portato a un'ampia base di utenti installati. Come altri software RDBMS, MS SQL Server si basa su SQL, un linguaggio di programmazione standardizzato che gli amministratori di database (DBA) e altri professionisti IT utilizzano per gestire i database e interrogare i dati in essi contenuti. SQL Server è legato a Transact-SQL (T-SQL), un'implementazione di SQL di Microsoft che aggiunge una serie di estensioni di programmazione proprietarie al linguaggio standard.

MySQL è un sistema di gestione di database relazionali open source supportato da Oracle basato su SQL.

È il secondo database più popolare al mondo secondo la classifica di db-engines e probabilmente il database backend più presente al mondo poiché gestisce la maggior parte dei servizi Internet in tutto il mondo.

MySQL funziona praticamente su tutte le piattaforme, inclusi Linux, UNIX e Windows. È un componente importante di uno stack aziendale open source chiamato LAMP. La versione MySQL Enterprise include supporto e funzionalità aggiuntive per la sicurezza e l'elevata disponibilità.

https://db-engines.com/en/ranking

La combinazione di risparmio sui costi, compatibilità della piattaforma e set di funzionalità di MySQL lo rende davvero interessante e molte organizzazioni stanno migrando da MS SQL Server a questa piattaforma open source per sfruttare queste funzionalità.

Perché migrare?

Di solito, il primo motivo per migrare è il costo. SQL Server è un database proprietario di Microsoft. Esiste una versione gratuita di SQL Server chiamata Express, ma presenta alcune limitazioni come 10 GB di limite di database, una quantità limitata di CPU, una quantità limitata di RAM e altro, quindi probabilmente è necessario pagare la licenza per utilizzarlo in produzione. Puoi controllare i prezzi qui.

Con MySQL, puoi utilizzare l'edizione della community gratuitamente e senza alcuna limitazione.

Un altro motivo potrebbe essere il supporto del sistema operativo. A differenza di MS SQL Server, MySQL supporta un'ampia gamma di sistemi operativi tra cui Linux, Windows, Mac OS, Solaris e molti altri.

Per quanto riguarda l'installazione e la configurazione, MySQL si installa più velocemente, ha un ingombro ridotto pur essendo in grado di gestire database abbastanza grandi e ha meno manopole di configurazione che necessitano di ottimizzazione rispetto a SQL Server.

Nell'area dell'elevata disponibilità, MySQL dispone di una serie di soluzioni collaudate, tra cui replica, SAN e MySQL Cluster, che eguagliano o meglio SQL Server a seconda dello scenario.

La fantastica community MySQL offre molti vantaggi, tra cui un'ottima rete di sviluppatori e DBA in cui tutti lavorano insieme per garantire un prodotto di alta qualità e il successo reciproco.

Cosa dovresti sapere

Lo spostamento di dati e strutture di indici su MySQL non è in genere un compito impegnativo poiché MySQL supporta tutti i tipi di dati importanti, i design delle tabelle e le strutture degli indici. Ad ogni modo, ci sono alcuni oggetti che dovranno affrontare alcune sfide. Gli oggetti relativi al codice, come le procedure memorizzate, possono utilizzare funzionalità ANSI non standard, poiché Transact-SQL ne ha molte.

Pertanto, i seguenti elementi richiederanno un'attenzione particolare durante la migrazione:

  • Assemblee
  • Tipi
  • Trigger DDL e basati su istruzioni (MySQL ha trigger basati su righe)
  • Chiamate di funzione proprietarie di SQL Server
  • Alcuni casi di T-SQL dinamico

Allo stesso modo, i sinonimi e i ruoli di sicurezza avranno bisogno di una soluzione alternativa poiché non possono essere migrati direttamente in MySQL.

Tipi di dati che richiedono conversione

La mappa seguente può essere utilizzata per convertire i tipi di dati di SQL Server che non vengono mappati in relazione 1 a 1 a MySQL:

SQL Server MySQL
IDENTITÀ AUTO_INCREMENT
TESTO, TESTO NAZIONALE SET DI CARATTERI DI TESTO UTF8
SMALLDATETIME DATA ORA
SOLDI DECIMAL(19,4)
PICCOLI SOLDI DECIMAL(10,4)
IDENTIFICATORE UNICO BINARIO(16)
SYSNAME CHAR(256)

Come farlo

Esistono molti strumenti per eseguire la migrazione da MS SQL Server a MySQL come Amazon DMS o Data Integration (Kettle), ma in questo caso utilizzeremo lo strumento MySQL Workbench Migration.

Questo strumento è progettato per far risparmiare tempo ai DBA e agli sviluppatori fornendo facilità d'uso visiva, punta e clicca in tutte le fasi di configurazione e gestione di un complesso processo di migrazione:

  • Migrazioni database:consente migrazioni da Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite e altro.
  • Gestisci progetti di migrazione:consente di configurare, copiare, modificare, eseguire e programmare le migrazioni.
  • Selezione di origine e destinazione:consente agli utenti di definire origini dati specifiche e di analizzare i dati di origine prima della migrazione.
  • Migrazione degli oggetti:consente agli utenti di selezionare gli oggetti da migrare, assegnare un'origine alle mappature di destinazione dove necessario, modificare gli script di migrazione e creare lo schema di destinazione.
  • Aggiornamenti di versione:utilizzando la migrazione, gli utenti possono spostare facilmente i database dalle versioni precedenti di MySQL a quelle più recenti.

Allora, facciamolo.

Per questa attività, assumiamo che tu abbia:

  • SQL Server installato con il database per la migrazione:utilizzeremo il database di esempio Northwind su MS SQL Server Express 2014 Edition.
  • MySQL Server installato:abbiamo MySQL 5.7.25 Community Edition su CentOS.
  • Utenti su entrambi i server di database con privilegi per eseguire l'attività:abbiamo l'utente "sa" su SQL Server e l'utente "migrazione" con tutti i privilegi su MySQL.
  • MySQL Workbench installato con accesso a entrambi i server di database:utilizzeremo MySQL Workbench 6.3.

Per avviare il processo di migrazione, nella schermata principale di MySQL Workbench, vai su Database-> Migrazione guidata.

Dovremmo controllare i prerequisiti per confermare se possiamo continuare l'attività. Se tutto sembra a posto, possiamo premere su Avvia migrazione.

In questo passaggio, dobbiamo fornire le informazioni sul database di origine, in questo caso SQL Server.

Configureremo il nostro parametro sorgente come puoi vedere nell'immagine precedente:

Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost 
Username: sa

Per quanto riguarda il parametro Server, stiamo eseguendo MySQL Workbench sul nodo SQL Server, ma probabilmente utilizzerai l'indirizzo IP/il nome host del tuo server di database.

Ora possiamo verificare la connessione utilizzando il pulsante Test connessione.

Quindi, dobbiamo aggiungere i parametri di destinazione, in questo caso, MySQL Server:

Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration

E premi su Test connessione per confermare le informazioni aggiunte.

Nella fase successiva, MySQL Workbench si connetterà al nostro SQL Server per recuperare un elenco dei cataloghi e degli schemi.

Ora sceglieremo il database di esempio Northwind dall'elenco.

Possiamo scegliere come mappare gli schemi e gli oggetti sottoposti a reverse engineering. Useremo l'opzione Catalog.Schema.Table -> Catalog.Table, quindi nel nostro MySQL avremo un database chiamato Northwind e le tabelle attuali che abbiamo nel nostro database di SQL Server.

Se tutto è andato bene, avremo un elenco di oggetti da migrare.

In questo caso, abbiamo oggetti tabella, oggetti vista e oggetti di routine. Selezioneremo solo gli oggetti tabella perché per il resto dell'oggetto dovremmo controllare manualmente il codice equivalente MySQL corrispondente.

In questo passaggio, gli oggetti dalla sorgente vengono convertiti in oggetti compatibili con MySQL.

Se tutto è andato bene, possiamo continuare selezionando come vogliamo creare lo schema migrato nella destinazione. Useremo l'opzione predefinita "Crea schema in target RDBMS".

Ora, controlliamo il processo di creazione dello schema.

Nel passaggio successivo, possiamo controllare il risultato di ogni esecuzione di script e possiamo controllare il nuovo database creato sul nostro server MySQL.

Nel nostro server MySQL abbiamo:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| NORTHWND           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

A questo punto avremo la struttura del database, ma non abbiamo ancora i dati. Ora selezioneremo come vogliamo copiare i dati nel server MySQL. Utilizzeremo l'opzione "Copia online dei dati della tabella per scegliere come target RDBMS".

E possiamo monitorare il processo di copia dall'applicazione MySQL Workbench.

A questo punto, abbiamo tutte le informazioni migrate sul nostro server MySQL.

mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
|        1 | Eastern           |
|        2 | Western           |
|        3 | Northern          |
|        4 | Southern          |
+----------+-------------------+
4 rows in set (0.00 sec)

Nell'ultimo passaggio, possiamo controllare il rapporto di migrazione e completare l'attività.

La migrazione è fatta!

Test

Prima del processo di migrazione, dovresti testare l'applicazione e il database MySQL per conoscere il comportamento con il nuovo motore.

Dovrebbe anche essere utile eseguire un test di benchmark per convalidare le prestazioni prima della migrazione.

Ci sono alcuni suggerimenti da tenere in considerazione:

  • Il test dovrebbe simulare il numero di connessioni utente previste.
  • Le sessioni connesse dovrebbero svolgere le attività come si verificherebbero durante una normale giornata.
  • Dovresti caricare il tuo database con dati di test approssimativamente delle dimensioni che ti aspetti che il tuo database sia nel mondo reale.

Per questa attività di test, puoi utilizzare lo strumento mysqlslap. È un programma diagnostico progettato per emulare il carico del client per un server MySQL e per segnalare i tempi di ogni fase.

Conclusione

Come abbiamo esaminato in questo blog, ci sono diversi motivi che possono indurre un'azienda a decidere una migrazione del database, passando da un motore proprietario a uno open source. Abbiamo visto qui un caso d'uso popolare, una migrazione da SQL Server a MySQL, e abbiamo fatto un esempio passo dopo passo utilizzando uno strumento MySQL ampiamente noto, MySQL Workbench. Ci auguriamo che questo articolo ti sia utile.