Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como migrar do MSSQL para o MySQL


A migração de mecanismos proprietários para mecanismos de código aberto é uma tendência que está crescendo no setor.

No entanto, a migração de banco de dados não é algo para ser levado de ânimo leve.

Neste blog, vamos ver o que é necessário para migrar do Microsoft SQL Server para o MySQL Server e como fazê-lo.

Então, vamos começar revisando o que é o MS SQL e o que é o MySQL.

O Microsoft SQL Server é um RDBMS muito popular com licenciamento restritivo e custo de propriedade modesto se o banco de dados for de tamanho significativo ou for usado por um número significativo de clientes. Ele fornece uma interface muito amigável e fácil de aprender, o que resultou em uma grande base de usuários instalada. Como outros softwares RDBMS, o MS SQL Server é construído sobre SQL, uma linguagem de programação padronizada que os administradores de banco de dados (DBAs) e outros profissionais de TI usam para gerenciar bancos de dados e consultar os dados que eles contêm. O SQL Server está vinculado ao Transact-SQL (T-SQL), uma implementação do SQL da Microsoft que adiciona um conjunto de extensões de programação proprietárias à linguagem padrão.

O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto baseado em Oracle baseado em SQL.

É o segundo banco de dados mais popular do mundo de acordo com o ranking db-engines e provavelmente o back-end de banco de dados mais presente do planeta, pois executa a maioria dos serviços de Internet ao redor do globo.

O MySQL é executado em praticamente todas as plataformas, incluindo Linux, UNIX e Windows. É um componente importante de uma pilha corporativa de código aberto chamada LAMP. A versão MySQL Enterprise vem com suporte e recursos adicionais para segurança e alta disponibilidade.
https://db-engines.com/en/ranking
A combinação de economia de custos, compatibilidade de plataforma e conjunto de recursos do MySQL o torna realmente atraente, e muitas organizações estão migrando do MS SQL Server para essa plataforma de código aberto para aproveitar esses recursos.

Por que migrar?


Normalmente, o primeiro motivo para migrar é o custo. SQL Server é um banco de dados proprietário da Microsoft. Existe uma versão gratuita do SQL Server chamada Express, mas tem algumas limitações como 10 GB de limite de banco de dados, uma quantidade limitada de CPU, uma quantidade limitada de RAM e muito mais, então provavelmente você precisa pagar a licença para usá-lo em produção. Você pode conferir o preço aqui.

Com o MySQL, você pode usar a edição da comunidade gratuitamente e sem qualquer limitação.

Outro motivo pode ser o suporte ao sistema operacional. Ao contrário do MS SQL Server, o MySQL suporta uma ampla gama de sistemas operacionais, incluindo Linux, Windows, Mac OS, Solaris e muitos mais.

Com relação à instalação e configuração, o MySQL é instalado mais rápido, tem um espaço menor e ainda pode gerenciar bancos de dados razoavelmente grandes e possui menos botões de configuração que precisam de ajuste do que o SQL Server.

Na área de alta disponibilidade, o MySQL possui várias soluções comprovadas, incluindo replicação, SANs e MySQL Cluster, que são iguais ou melhores ao SQL Server, dependendo do cenário.

A grande comunidade MySQL oferece muitos benefícios, incluindo uma grande rede de desenvolvedores e DBA de todos trabalhando juntos para ajudar a garantir um produto de alta qualidade e o sucesso de cada um.

O que você deve saber


Mover dados e estruturas de índice para o MySQL normalmente não é uma tarefa desafiadora, pois o MySQL suporta todos os tipos de dados importantes, designs de tabela e estruturas de índice. De qualquer forma, existem alguns objetos que enfrentarão alguns desafios. Objetos relacionados a código, como procedimentos armazenados, podem estar usando recursos ANSI não padrão, pois o Transact-SQL possui muitos deles.

Portanto, os seguintes itens precisarão de atenção especial na migração:
  • Montagens
  • Tipos
  • DDL e gatilhos baseados em instrução (o MySQL tem gatilhos baseados em linha)
  • Chamadas de função proprietárias do SQL Server
  • Alguns casos de T-SQL dinâmico

Da mesma forma, sinônimos e funções de segurança precisarão de uma solução alternativa, pois não podem ser migrados diretamente para o MySQL.

Tipos de dados que requerem conversão


O mapa a seguir pode ser usado para converter tipos de dados do SQL Server que não são mapeados no relacionamento 1-para-1 para o MySQL:
SQL Server MySQL
IDENTIDADE AUTO_INCREMENT
NTEXTO, TEXTO NACIONAL CONJUNTO DE CARACTERES DE TEXTO UTF8
SMALLDATETIME DATETIME
DINHEIRO DECIMAL(19,4)
PEQUENO DINHEIRO DECIMAL(10,4)
IDENTIFICADOR ÚNICO BINÁRIO(16)
SYSNAME CHAR(256)

Como fazer


Existem muitas ferramentas para realizar a migração do MS SQL Server para o MySQL como Amazon DMS ou Data Integration (Kettle), mas neste caso usaremos a ferramenta MySQL Workbench Migration.

Essa ferramenta foi projetada para economizar tempo do DBA e do desenvolvedor, fornecendo facilidade de uso visual, de apontar e clicar em todas as fases de configuração e gerenciamento de um processo de migração complexo:
  • Migrações de banco de dados:permite migrações do Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite e muito mais.
  • Gerenciar projetos de migração:permite que as migrações sejam configuradas, copiadas, editadas, executadas e agendadas.
  • Seleção de origem e destino:permite que os usuários definam origens de dados específicas e analisem os dados de origem antes da migração.
  • Migração de objetos:permite que os usuários selecionem objetos para migrar, atribuam uma origem aos mapeamentos de destino quando necessário, editem scripts de migração e criem o esquema de destino.
  • Atualizações de versão:usando a migração, os usuários podem facilmente mover bancos de dados de versões mais antigas do MySQL para as mais recentes.

Então, vamos fazê-lo.

Para esta tarefa, estamos supondo que você tenha:
  • SQL Server instalado com seu banco de dados para migração:usaremos o banco de dados de exemplo Northwind sobre o MS SQL Server Express 2014 Edition.
  • MySQL Server instalado:temos o MySQL 5.7.25 Community Edition sobre CentOS.
  • Usuários em ambos os servidores de banco de dados com privilégios para realizar a tarefa:Temos o usuário “sa” no SQL Server e o usuário “migration” com todos os privilégios no MySQL.
  • MySQL Workbench instalado com acesso aos dois servidores de banco de dados:usaremos o MySQL Workbench 6.3.

Para iniciar o processo de migração, na tela principal do MySQL Workbench, vá para Database-> Migration Wizard.

Devemos verificar os pré-requisitos para confirmar se podemos continuar a tarefa. Se tudo estiver bem, podemos pressionar Iniciar Migração.

Nesta etapa, precisamos fornecer as informações sobre o banco de dados de origem, neste caso, o SQL Server.

Vamos configurar nosso parâmetro source como você pode ver na imagem anterior:
Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost 
Username: sa

Sobre o parâmetro Server, estamos executando o MySQL Workbench no nó SQL Server, mas provavelmente você usará o endereço IP/nome do host do seu servidor de banco de dados.

Agora, podemos verificar a conexão usando o botão Test Connection.

Então, precisamos adicionar os parâmetros de destino, neste caso, MySQL Server:
Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration

E pressione em Test Connection para confirmar as informações adicionadas.

Na próxima etapa, o MySQL Workbench se conectará ao nosso SQL Server para buscar uma lista dos catálogos e esquemas.

Agora, escolheremos o banco de dados de exemplo Northwind na lista.

Podemos escolher como os esquemas e objetos de engenharia reversa devem ser mapeados. Usaremos a opção Catalog.Schema.Table -> Catalog.Table, então em nosso MySQL, teremos um banco de dados chamado Northwind, e as tabelas atuais que temos em nosso banco de dados SQL Server.

Se tudo correu bem, teremos uma lista de objetos a serem migrados.

Neste caso, temos Objetos de Tabela, Objetos de Visualização e Objetos de Rotina. Selecionaremos apenas os Objetos de Tabela porque para o restante do objeto devemos verificar manualmente o código equivalente ao MySQL correspondente.

Nesta etapa, os objetos da fonte são convertidos em objetos compatíveis com MySQL.

Se tudo correu bem, podemos continuar selecionando como queremos criar o esquema migrado no destino. Usaremos a opção padrão “Criar esquema no RDBMS de destino”.

Agora, vamos verificar o processo de criação do esquema.

Na próxima etapa, podemos verificar o resultado de cada execução de script, e podemos verificar o novo banco de dados criado em nosso servidor MySQL.

Em nosso servidor MySQL, temos:
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| NORTHWND           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

Neste ponto, teremos a estrutura do banco de dados, mas ainda não temos os dados. Agora, vamos selecionar como queremos copiar os dados no MySQL Server. Usaremos a opção “Cópia online dos dados da tabela para o RDBMS de destino”.

E podemos monitorar o processo de cópia do aplicativo MySQL Workbench.

Neste ponto, temos todas as informações migradas para o nosso MySQL Server.
mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
|        1 | Eastern           |
|        2 | Western           |
|        3 | Northern          |
|        4 | Southern          |
+----------+-------------------+
4 rows in set (0.00 sec)

Na última etapa, podemos verificar o relatório de migração e finalizar a tarefa.

A migração está feita!

Teste


Antes do processo de migração, você deve testar o aplicativo e o banco de dados MySQL para conhecer o comportamento com o novo mecanismo.

Também deve ser útil realizar um teste de benchmark para validar o desempenho antes da migração.

Existem algumas dicas a ter em conta:
  • O teste deve simular o número esperado de conexões de usuário.
  • As sessões conectadas devem executar tarefas como ocorreriam durante um dia normal.
  • Você deve carregar seu banco de dados com dados de teste que tenham aproximadamente o tamanho que você espera que seu banco de dados tenha no mundo real.

Para esta tarefa de teste, você pode usar a ferramenta mysqlslap. É um programa de diagnóstico projetado para emular a carga do cliente para um servidor MySQL e relatar o tempo de cada estágio.

Conclusão


Como analisamos neste blog, existem vários motivos que podem fazer uma empresa decidir uma migração de banco de dados, passando de um mecanismo proprietário para um de código aberto. Vimos aqui um caso de uso popular, uma migração do SQL Server para o MySQL, e fizemos um exemplo passo a passo usando uma ferramenta MySQL amplamente conhecida, o MySQL Workbench. Esperamos que você ache este artigo útil.