MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Migrando do Oracle Database para o MariaDB - O que você deve saber


O Gartner prevê que até 2022, 50% dos bancos de dados comerciais existentes serão convertidos em bancos de dados de código aberto. Ainda mais, 70% dos novos aplicativos internos serão desenvolvidos em uma plataforma de banco de dados de código aberto (State of the Open-Source DBMS Market, 2018).

Esses são números altos considerando a maturidade, estabilidade e criticidade do software de banco de dados proprietário e popular. O mesmo pode ser observado no ranking de banco de dados superior, onde a maioria dos dez principais bancos de dados são de código aberto.
https://db-engines.com/en/ranking
O que está levando as empresas a fazer tais movimentos?

Pode haver muitas razões para migrar sistemas de banco de dados. Para alguns, o principal motivo será o custo da licença e propriedade; mas é realmente apenas sobre o custo? E o código aberto é estável o suficiente para mover sistemas de produção críticos para esse novo mundo de código aberto?

Bancos de dados de código aberto, especialmente os novos trazidos para uma organização, geralmente vêm de um desenvolvedor em uma equipe de projeto. Ele é escolhido por ser gratuito (não impacta nos gastos externos diretos do projeto) e atende aos requisitos técnicos do momento.

Mas o aspecto gratuito não vem simplesmente sem custo, pois você deve considerar muitos fatores, incluindo a migração e o custo das horas de trabalho. Quanto mais suave for a migração, menos tempo e dinheiro serão gastos no projeto.

As migrações de banco de dados podem ser desafiadoras, especialmente para migrações de bancos de dados proprietários heterogêneos, como Oracle para PostgreSQL, Oracle para Percona ou MySQL. A estrutura complexa do esquema, os tipos de dados e o código do banco de dados como PL/SQL podem ser bem diferentes daqueles dos bancos de dados de destino,
exigindo uma etapa de transformação de esquema e código antes do início da migração de dados.

No artigo recente do meu colega Paul Namuag, ele examinou como migrar o Oracle para Percona.

Desta vez vamos dar uma olhada no que você deve saber antes de migrar do Oracle para o MariaDB.

O MariaDB promete recursos corporativos e recursos de migração que podem ajudar a migrar bancos de dados Oracle para o mundo de código aberto.

Nesta postagem do blog, abordaremos o seguinte:
  • Por que migrar?
  • Diferenças do mecanismo de armazenamento
  • Considerações sobre conectividade de banco de dados
  • Simplicidade de instalação e administração
  • Diferenças de segurança
  • Replicação e alta disponibilidade
  • PL/SQL e código de banco de dados
  • Agrupamento e dimensionamento
  • Backup e recuperação
  • Compatibilidade com a nuvem
  • Considerações diversas

Por que migrar da Oracle?


A maioria das empresas executará Oracle ou SQL Server, ou uma combinação de ambos, com pequenos bolsões de bancos de dados de código aberto isolados operando independentemente. Empresas de pequeno e médio porte tendem a implantar principalmente bancos de dados de código aberto, especialmente para novos aplicativos. Mas isso está mudando e, muitas vezes, o código aberto é a principal escolha, mesmo para grandes organizações.

Uma rápida comparação desses dois sistemas de banco de dados é a seguinte:
  • Somente o Oracle Express Edition é gratuito, mas possui recursos muito limitados quando comparado ao MariaDB. Para recursos abrangentes, é necessário adquirir o Oracle Standard Edition ou o Oracle Enterprise Edition.
  • Por outro lado, a comunidade MariaDB e MySQL estava trabalhando duro para minimizar a possível lacuna de recursos. Conformidade de segurança, backups dinâmicos e muitos outros recursos empresariais já estão disponíveis no MariaDB.

Há coisas que sempre foram mais flexíveis no MariaDB/MySQL do que nas configurações massivas do Oracle. Uma delas é a facilidade de replicação e escalabilidade horizontal do cluster.

Diferenças do mecanismo de armazenamento


Primeiro, vamos começar com algumas noções básicas. Você ainda pode ouvir muitas lendas e mitos sobre as limitações do MySQL ou MariaDB, que se referem principalmente aos tempos sombrios quando o principal mecanismo de armazenamento era o MyISAM.

MyISAM era o mecanismo de armazenamento padrão do MySQL 3.23 até ser substituído pelo InnoDB no MariaDB 5.5. É um mecanismo leve e não transacional com ótimo desempenho, mas não oferece bloqueio em nível de linha ou a confiabilidade do InnoDB.

Com o InnoDB (mecanismo de armazenamento padrão), o MariaDB oferece os dois bloqueios padrão em nível de linha, que são bloqueios compartilhados(S) e bloqueios exclusivos(X). Um bloqueio compartilhado é obtido para ler uma linha e permite que outras transações leiam a linha bloqueada. Diferentes transações também podem adquirir seus próprios bloqueios compartilhados.
O bloqueio específico é obtido para gravar em uma linha e impede que transações adicionais bloqueiem a mesma linha.

O InnoDB definitivamente cobriu a maior lacuna de recursos transacionais entre esses dois sistemas.

Devido à natureza conectável do MariaDB, ele oferece ainda mais mecanismos de armazenamento para que você possa ajustá-lo melhor a uma carga de trabalho específica. Ou seja quando o espaço é importante, você pode usar o TokuDB, que oferece ótima taxa de compactação, Spider otimizado para particionamento e fragmentação de dados, ColumnStore para dimensionamento de big data.

No entanto, para aqueles que estão migrando do Oracle, minha recomendação seria usar primeiro o mecanismo de armazenamento InnoDB.

Considerações sobre conectividade


O MariaDB compartilha com a Oracle um bom suporte para acesso ao banco de dados, incluindo drivers ODBC e JDBC, bem como bibliotecas de acesso para Perl, Python e PHP. MySQL e Oracle suportam objetos grandes binários, tipos de dados de caracteres, numéricos e de data. Portanto, você não deve ter problemas para encontrar o conector certo para seus serviços de aplicativo.

O MariaDB não possui o processo de escuta dedicado para manter as conexões de banco de dados nori SCAN address para o banco de dados clusterizado como sabemos da Oracle. Você também não encontrará serviços de banco de dados flexíveis. Em vez disso, você precisará configurar manualmente entre o soquete Unix (uma maneira local e mais segura de conectar o banco de dados - aplicativo no mesmo servidor), as conexões remotas (por padrão, o MariaDB não permite logins remotos) e também o pipe e a memória disponíveis no Windows apenas sistemas. Para o cluster, o endereço SCAN precisa ser substituído pelo balanceador de carga. MariaDB recomenda usar seu outro produto MaxScale, mas você também pode encontrar outros como ProxySQL ou HAproxy que funcionarão com MariaDB, com algumas limitações. Embora o uso de balanceadores de carga externos para MariaDB possa ser difícil, você pode encontrar ótimos recursos que, a título de comparação, não estão disponíveis no banco de dados Oracle.

Um balanceador de carga também seria uma recomendação para quem procura Oracle Transparent Application Failover (TAF), Oracle Firewall DB ou alguns dos recursos avançados de segurança, como o Oracle Connection Manager. Você pode encontrar mais informações sobre como escolher o balanceador de carga correto no seguinte white paper.

Embora essas tecnologias sejam gratuitas e possam ser implantadas manualmente usando instalações baseadas em script, sistemas como o ClusterControl automatizam o processo com sua interface de apontar e clicar. O ClusterControl também permite implantar tecnologias de cache.

Simplicidade de instalação e administração


A versão mais recente do Oracle DB disponível adicionou um recurso de instalação muito aguardado:o Oracle 18c agora pode ser instalado no Oracle Linux usando um RPM. A instalação dedicada baseada em Java sempre foi um problema para aqueles que queriam escrever automação para seus livros de receitas ou trechos de código Puppet. Você poderia ir com a instalação silenciosa predefinida, mas o arquivo estava mudando de tempos em tempos e ainda assim, você tinha que lidar com o inferno da dependência. A instalação baseada em RPM foi definitivamente uma boa jogada.

Então, como funciona no MariaDB?

Para aqueles que estão migrando do mundo Oracle, é sempre uma boa surpresa ver a rapidez com que você pode implantar instâncias, criar novos bancos de dados ou até mesmo configurar fluxos de replicação complexos. O processo de instalação e configuração é provavelmente a parte mais tranquila do processo de migração. Embora escolher as configurações certas leve tempo e conhecimento.

A Oracle fornece um conjunto de distribuições binárias do MySQL. Isso inclui distribuições binárias genéricas na forma de arquivos tar compactados (arquivos com extensão .tar.gz) para várias plataformas e binários em pacotes específicos de plataforma. Na plataforma Windows, você pode encontrar um assistente de instalação padrão por meio de uma GUI.

O assistente de configuração do banco de dados Oracle (DBCA) basicamente não é necessário, pois você poderá criar um banco de dados com um comando de linha única.
CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

Você também pode ter um banco de dados com diferentes agrupamentos de banco de dados e conjuntos de caracteres na mesma instância MariaDB.

A configuração da replicação é apenas para habilitar o log binário em um mestre (semelhante ao log de arquivamento no Oracle) e executar o seguinte comando no escravo para anexá-lo ao mestre.
CHANGE MASTER TO
MASTER_HOST = host,
MASTER_PORT = port,
MASTER_USER = replication_user,
MASTER_PASSWORD = password,
MASTER_AUTO_POSITION = 1;

Segurança e Conformidade


A Oracle fornece segurança de banco de dados aprimorada.

A autenticação do usuário é realizada no Oracle especificando funções globais, além de local, nome de usuário e senha. No Oracle, a autenticação do usuário é realizada por diferentes métodos de autenticação, incluindo autenticação de banco de dados, autenticação externa e autenticação de proxy.

Por muito tempo, as funções não estavam disponíveis no MariaDB ou MySQL. O MariaDB adicionou funções com a versão 10.2 depois que apareceram no MySQL 8.0.

As funções, uma opção muito usada em configurações comuns de banco de dados Oracle, podem ser facilmente transformadas no MariaDB, para que você não precise perder tempo com ajustes de permissão de usuário único.

Criar, alterar usuário, senhas:tudo funciona de forma semelhante ao Oracle DB.

Para alcançar os padrões de conformidade de segurança corporativa, o MariaDB oferece recursos integrados como:
  • Plugin de auditoria em
  • Criptografia de dados em repouso
  • Certificados, conexão TSS
  • Plug-in do PAM

Ofertas de plug-ins de auditoria uma espécie de auditoria refinada (FGA) ou AUDI SQL disponível no Oracle. Ele não oferece o mesmo conjunto de recursos, mas geralmente é bom o suficiente para satisfazer as auditorias de conformidade de segurança.

Criptografia de dados em repouso A criptografia de dados em repouso pode ser um requisito para regulamentações de segurança como HIPAA ou PCI DSS. Essa criptografia pode ser implementada em vários níveis - você pode criptografar todo o disco no qual os arquivos estão armazenados. Você pode criptografar apenas o banco de dados MySQL por meio da funcionalidade disponível nas versões mais recentes do MySQL ou MariaDB. A criptografia também pode ser implementada no aplicativo para que ele criptografe os dados antes de armazená-los no banco de dados. Cada opção tem seus prós e contras:a criptografia de disco pode ajudar apenas quando os discos são fisicamente roubados, mas os arquivos não seriam criptografados em um servidor de banco de dados em execução.

Plug-in do PAM estende a funcionalidade de registro para contas de usuário restritas com configurações LDAP. Na verdade, acho muito mais fácil configurar do que a integração LDAP com o banco de dados Oracle.

Replicação e alta disponibilidade


O MariaDB é bem conhecido por sua simplicidade e flexibilidade de replicação. Por padrão, você pode ler ou até mesmo gravar em seus servidores standby/slave. Felizmente, as versões do MySQL 10.X trouxeram muitos aprimoramentos significativos para a Replicação, incluindo IDs de transações globais, somas de verificação de eventos, escravos multi-thread e escravos/mestres à prova de falhas para tornar a replicação ainda melhor. DBAs acostumados a leituras e gravações de replicação do MySQL esperariam uma solução semelhante ou até mais simples de seu irmão maior, Oracle. Infelizmente não por padrão.

A implementação de espera física padrão para Oracle é fechada para qualquer operação de leitura/gravação. Na verdade, o Oracle oferece variação lógica, mas tem muitas limitações e não foi projetado para HA. A solução para esse problema é um recurso pago adicional chamado Active Data Guard, que você pode usar para ler dados do modo de espera enquanto aplica redo logs.

O Active Data Guard é uma solução complementar paga ao software gratuito de recuperação de desastres Data Guard da Oracle, disponível apenas para Oracle Database Enterprise Edition (licença de custo mais alto). Ele oferece acesso somente leitura, enquanto aplica continuamente as alterações enviadas do banco de dados primário. Como um banco de dados de espera ativa, ele ajuda a descarregar consultas de leitura, relatórios e backups incrementais do banco de dados primário. A arquitetura do produto foi projetada para permitir que os bancos de dados standby sejam isolados de falhas que possam ocorrer no banco de dados primário.

Um recurso interessante do banco de dados Oracle 12c e algo que o Oracle DBA perderia é a validação de corrupção de dados. As verificações de corrupção do Oracle Data Guard são executadas para garantir que os dados estejam em alinhamento exato antes que os dados sejam copiados para um banco de dados em espera. Esse mecanismo também pode ser usado para restaurar blocos de dados no primário diretamente do banco de dados standby.

MariaDB oferece vários métodos de replicação e recursos de replicação como:
  • síncrono,
  • assíncrono,
  • semi-síncrono

O conjunto de recursos para replicação do MariaDB é rico. Com a replicação síncrona, você pode configurar o failover sem perda de transação de gravação. Para reduzir os atrasos de replicação assíncrona, você pode optar pela replicação paralelizada em ordem em escravos. Os eventos que podem ser compactados são os eventos que normalmente podem ser de tamanho significativo:eventos de consulta (para DDL e DML na replicação baseada em instrução) e eventos de linha (para DML na replicação baseada em linha). Semelhante a outras opções de compactação, a replicação compactada do MariaDB é transparente. Como mencionado anteriormente, todo o processo é muito fácil em comparação com a replicação física e lógica do Oracle Data Guard.

PL/SQL e código de banco de dados


Agora chegamos à parte difícil:PL/SQL.

Enquanto a replicação e o HA com MariaDB reinam supremos. Oracle é o rei do PL/SQL, sem dúvida.

PL/SQL é o principal obstáculo para a migração para o mundo de código aberto em muitas organizações. Mas MariaDB não desiste aqui.

O MariaDB 10.3 (também conhecido como MariaDB TX 3.0) adicionou alguns novos recursos incríveis, incluindo construções SEQUENCE, pacotes no estilo Oracle e o tipo de dados ROW – tornando as migrações muito mais fáceis.

Com o novo parâmetro SQL_MODE =ORACLE, o MariaDB agora pode analisar, dependendo do caso, um monte de Oracle PL/SQL legado sem reescrever o código.

Como podemos encontrar na página da história do cliente usando a compatibilidade central do Oracle PL/SQL no MariaDB TX 3.0, o Development Bank of Singapore (DBS) conseguiu migrar mais da metade de seus aplicativos críticos para os negócios em apenas 12 meses do Oracle Banco de dados para MariaDB.

O novo modo de compatibilidade ajuda com a seguinte sintaxe:
  • Sintaxe de loop
  • Declaração de variável
  • Construção de procedimento armazenado não ANSI
  • Sintaxe do cursor
  • Parâmetros de procedimento armazenado
  • Herança de tipo de dados (%TYPE, %ROWTYPE)
  • Exceções de estilo PL/SQL
  • Sinônimos para tipos básicos de SQL (VARCHAR2, NUMBER, …)

Mas se dermos uma olhada na versão 10.2 mais antiga, algumas das compatibilidades entre Oracle e MariaDB apareceram antes como:
  • Expressões de tabela comuns
  • Consultas SQL recursivas
  • Funções do Windows, NTILETE, RANK, DENESE_RANK.

A análise PL/SQL nativa ou, em alguns casos, a execução direta de procedimentos nativos do Oracle podem reduzir bastante o custo de desenvolvimento.

Outro recurso muito útil adicionado pelo SQL_MODE=Oracle são as sequências. A implementação de sequências no MariaDB Server 10.3 segue o padrão SQL:2003 e inclui compatibilidade de sintaxe com Oracle.

Para criar uma sequência, uma instrução create é usada:
CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Quando as sequências criadas podem ser usadas, por exemplo, com inserções como:
INSERT INTO database (database_id, database_name) VALUES(Sequence_1.NEXTVAL, 'MariaDB');

Agrupamento e dimensionamento


O MariaDB é um cluster de banco de dados multimestre assíncrono, ativo-ativo.

O MariaDB Cluster difere do que é conhecido como Oracle’s MySQL Cluster - NDB.

O cluster MariaDB é baseado no plug-in de replicação multimestre fornecido pela Codership (Galera). Desde a versão 5.5, a tecnologia Galera (API wsrep) é parte integrante do MariaDB. A arquitetura do plugin Galera se baseia em três camadas principais:certificação, replicação e estrutura de comunicação em grupo.

A camada de certificação prepara os conjuntos de gravação e faz as verificações de certificação neles, garantindo que eles possam ser aplicados.

A camada de replicação gerencia o protocolo de replicação e fornece a capacidade total de ordenação.

O Group Communication Framework implementa uma arquitetura de plug-in que permite que outros sistemas se conectem via esquema de back-end gcomm.

A principal diferença do Oracle RAC é que cada nó tem dados separados. O Oracle RAC é comumente confundido com uma solução complementar de alta disponibilidade, enquanto os discos geralmente estão na mesma matriz de disco. O MariaDB não apenas oferece armazenamento redundante, mas também suporta clustering geolocalizado sem a necessidade de fibra dedicada.

Backup e recuperação


A Oracle oferece muitos mecanismos de backup, incluindo hot backup, backup, importação, exportação e muitos outros.

Ao contrário do MySQL, o MariaDB oferece uma ferramenta externa para backups dinâmicos chamada mariabackup. É um fork do Percona XtraBackup projetado para trabalhar com tabelas criptografadas e compactadas e é o método de backup recomendado para bancos de dados MariaDB.

O MariaDB Server 10.1 introduziu a compactação MariaDB e a criptografia de dados em repouso, mas as soluções de backup existentes não suportavam o recurso de backup completo para esses recursos. Assim, o MariaDB decidiu estender o XtraBackup (versão 2.3.8) e nomeou esta solução como Mariabackup.

Percona e Mariabackup oferecem funcionalidades semelhantes, mas se você estiver interessado nas diferenças, você pode encontrá-las aqui.

O que o MariaDB não oferece é o catálogo de recuperação de seus backups de banco de dados. Felizmente, isso pode ser estendido com sistemas de terceiros como o ClusterControl.

Compatibilidade com a nuvem


As infraestruturas em nuvem estão se tornando cada vez mais populares nos dias de hoje. Embora uma VM em nuvem possa não ser tão confiável quanto um servidor de nível empresarial, os principais provedores de nuvem oferecem uma variedade de ferramentas para aumentar a disponibilidade do serviço. Você pode escolher entre arquitetura EC2 ou DBaaS como Amazon RDS.

O Amazon RDS oferece suporte ao MariaDB Server 10.3. Ele não suporta SQL_MODE=Oracle, mas você ainda pode encontrar um conjunto de recursos que facilitam a migração. A nuvem da Amazon oferece suporte a tarefas comuns de gerenciamento, como monitoramento, backups, implantações multi A-Z, etc.

Outro provedor de nuvem popular, o Google Cloud, também oferece a versão mais recente do MariaDB. Você pode implantá-lo como um contêiner ou imagem de VM certificada pela biblioteca Bintami.

O Azure também oferece sua própria implementação do MariaDB. É semelhante ao Amazon RDS, com backups, dimensionamento e compilações em alta disponibilidade. O SLA garantido é de 99,99% o que corresponde a 4 m 23 segundos por mês de inatividade.

Considerações diversas


Conforme mencionado no início deste artigo, a migração do Oracle para o MariaDB é um processo de vários estágios. Um conselho geral será não tentar migrar todos os bancos de dados de uma vez. Dividir a migração em pequenos lotes é, na maioria dos cenários, a melhor abordagem.

Se você não conhece a tecnologia, experimente. Você deve se sentir confiante com a plataforma e saber seus prós e contras. O teste aumentará a confiança e afetará suas decisões em relação à migração.

Existem ferramentas interessantes que podem ajudá-lo com o processo de migração PL/SQL mais difícil. Os mais interessantes são dbconvert, AWS Schema Conversion Tool - AWS Documentation.

Ao longo dos anos, o MariaDB ganhou suporte e maturidade empresarial para executar sistemas de transação de dados críticos e complexos. Com a versão recente, o MariaDB adicionou alguns ótimos novos recursos, como compatibilidade SQL_Mode=Oracle, tornando o processo de transição mais fácil do que nunca.

Por fim, você pode se juntar a mim no dia 12 de março para um webinar durante o qual eu explicarei tudo o que você precisa saber quando se trata de migrar do banco de dados Oracle para o MariaDB.