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

Migrando um banco de dados Oracle para MySQL na AWS, parte 1


O AWS Database Migration Service (DMS) é um serviço para migrar bancos de dados para a AWS. O banco de dados de destino deve ser um dos bancos de dados com suporte na AWS, como os bancos de dados hospedados do Relational Database Service, DynamoDB e RedShift. O banco de dados de origem pode ser um banco de dados na AWS ou um banco de dados local ou um banco de dados em alguma outra plataforma de nuvem, como Oracle Cloud Platform. O banco de dados de origem tem tempo de inatividade zero durante a migração.

Por que migrar bancos de dados?


Um banco de dados pode precisar ser migrado por vários motivos, como o seguinte:
  • Migração heterogênea para um mecanismo de banco de dados diferente. Por exemplo, um banco de dados Oracle para um banco de dados MySQL. A migração heterogênea pode ser necessária para aproveitar recursos de outro banco de dados, como um tipo de banco de dados sem suporte no banco de dados de origem. Um banco de dados comercial pode ser migrado para um banco de dados de código aberto. Um banco de dados relacional pode se beneficiar migrando para um banco de dados NoSQL.
  • Migração homogênea para o mesmo tipo de mecanismo de banco de dados, mas em uma plataforma diferente. A migração homogênea pode ser usada para fazer backup de um banco de dados. Um banco de dados local pode se beneficiar migrando para uma plataforma de nuvem.
  • Replicação de dados contínua para diferentes bancos de dados de destino para fins de teste e desenvolvimento e distribuição regional de bancos de dados.
  • Vários bancos de dados de origem pode ser migrado para um único banco de dados para consolidação.

Em dois artigos, discutiremos a migração de um banco de dados Oracle para um banco de dados MySQL com o Database Migration Service. Este artigo tem as seguintes seções:
  • Definindo o ambiente
  • Criando um usuário do IAM
  • Criando uma chave de criptografia
  • Criando instâncias de banco de dados Oracle e MySQL no RDS
  • Preparando bancos de dados Oracle e MySQL para DMS
  • Conclusão

Definindo o ambiente


O único pré-requisito é uma conta AWS, que pode ser criada neste link.

Criando um usuário do IAM


Um usuário precisa obter permissões e funções do IAM para acessar o DMS. Permissões adicionais do IAM são necessárias para acessar outros serviços do DMS; algumas ações são necessárias de outros serviços da AWS, como KMS, IAM, EC2 ou CloudWatch. Nesta seção, criaremos um usuário do IAM e anexaremos uma política para o conjunto de permissões necessário. Selecione o serviço AWS IAM e clique em Adicionar usuário , como mostrado na Figura 1.


Figura 1: Adicionar usuário

Em Adicionar usuário , especifique um Nome de usuário (dvohra) e selecione Tipo de acesso opções, como mostrado na Figura 2.


Figura 2: Configurando novo usuário

Selecione a senha personalizada opção para Senha do console, especifique uma senha personalizada e clique em Avançar, conforme mostrado na Figura 3.


Figura 3: Especificando a senha

Em Permissões , selecione Anexar políticas existentes diretamente opção e clique em Criar política para criar uma política para anexar, conforme mostrado na Figura 4.


Figura 4: Adicionar usuário>Criar política

Em Criar política , selecione Criar sua própria política opção, como mostrado na Figura 5.


Figura 5: Crie sua própria política

Em Revisar Política , especifique um nome de política (DMS) e copie a política a seguir para o Documento de política .
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": "dms:*",
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "kms:ListAliases",
            "kms:DescribeKey"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "iam:GetRole",
            "iam:PassRole",
            "iam:CreateRole",
            "iam:AttachRolePolicy"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:DescribeVpcs",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups",
            "ec2:ModifyNetworkInterfaceAttribute",
            "ec2:CreateNetworkInterface",
            "ec2:DeleteNetworkInterface"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "cloudwatch:Get*",
            "cloudwatch:List*"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:FilterLogEvents",
            "logs:GetLogEvents"
         ],
         "Resource": "*"
      }
   ]
}

Clique em Validar política e, se a mensagem A política é válida é gerado (veja a Figura 6), clique em Criar política , também mostrado na Figura 6.


Figura 6: Criar política

Em Criar usuário assistente, selecione o DMS recém-criado policy e clique em Next, conforme mostrado na Figura 7.


Figura 7: Selecionando a política para anexar ao usuário

Em Revisão, clique em Criar usuário , como mostrado na Figura 8.


Figura 8: Revisar>Criar usuário

Um novo usuário é criado, conforme mostrado na Figura 9.


Figura 9: Novo usuário criado

Um novo usuário é adicionado ao Console do IAM>Usuários , como mostrado na Figura 10.


Figura 10: Usuários do IAM

Tendo criado um novo usuário, precisaríamos fazer login como o novo usuário para criar a migração do DMS. O link de login do console para efetuar login, pois o novo usuário é obtido nas credenciais de segurança para o novo usuário (consulte a Figura 11).


Figura 11: Link de login do console

Depois de criar um usuário do IAM para DMS, saia como usuário root, conforme mostrado na Figura 12.


Figura 12: Sair como usuário root

Abra a URL de login em um navegador, especifique o nome de usuário e a senha e clique em Entrar, conforme mostrado na Figura 13.


Figura 13: Fazendo login como o novo usuário do IAM

Criando uma chave de criptografia


Certifique-se de estar conectado como o usuário do IAM criado na seção anterior. Precisamos criar uma chave de criptografia que seria usada como chave mestra ao criar uma migração DMS. A criptografia deve ser criada enquanto estiver conectado como o novo usuário do IAM e não como o usuário root. Selecione Chaves de criptografia no console do IAM e clique em Criar chave , como mostrado na Figura 14.


Figura 14: Criar chave

Em Criar alias e descrição , especifique um Alias (dms ) e clique em Next Step, conforme mostrado na Figura 15.


Figura 15: Especificando alias

Em Add Tags, clique em Next Step porque as tags não são obrigatórias. Em Key Administrators, selecione o usuário do IAM adicionado como administrador (consulte a Figura 16). Selecione Exclusão de chave como Permitir que administradores de chave excluam esta chave e clique em Próxima etapa.


Figura 16: Administradores de chaves

Em Definir permissões de uso de chave, selecione os usuários e funções do IAM que podem usar a chave de criptografia; selecione o novo usuário do IAM e o dms-vpc-role , conforme mostrado na Figura 17. Clique em Next Step.


Figura 17: Definindo permissões de uso de chave

Em Preview Key Policy, clique em Finish, conforme mostrado na Figura 18.


Figura 18: Política de chave de visualização

Uma nova chave de criptografia é criada, conforme mostrado na Figura 19.


Figura 19: Chave de criptografia criada

Criando instâncias de banco de dados Oracle e MySQL no RDS


Como usaremos instâncias de banco de dados Oracle e MySQL RDS como origem e destino, respectivamente, para a migração do DMS, crie duas instâncias RDS, uma para o banco de dados Oracle SE e outra para o MySQL. Ao criar as instâncias do RDS em Definir configurações avançadas, selecione Rede e segurança para criar uma nova VPC, crie um novo grupo de sub-rede de banco de dados e crie um novo grupo de segurança, conforme mostrado na Figura 20 para banco de dados Oracle. Se a conta da AWS tiver um limite no número máximo de VPCs, exclua algumas VPCs não utilizadas antes de criar as instâncias do RDS.


Figura 20: Configurando Configurações Avançadas

As instâncias RDS para Oracle e MySQL são mostradas na Figura 21.


Figura 21: Instâncias de banco de dados RDS

Os grupos de segurança criados automaticamente não possuem as regras de entrada/saída necessárias, que precisam ser modificadas. Clique no link para grupos de segurança no console do RDS, conforme mostrado para o banco de dados MySQL na Figura 22.


Figura 22: Grupos de segurança

Clique em Editar para o grupo de segurança Inbound, conforme mostrado na Figura 23.


Figura 23: Grupo de segurança>Editar

Em Edit inbound rules, selecione Type as All traffic, Protocol as All, Port Range como 0-65535, Source as Anywhere e clique em Save, conforme mostrado na Figura 24.


Figura 24: Editar regras de entrada

As regras de entrada modificadas são mostradas na Figura 25.


Figura 25: Regras de entrada modificadas

As regras de saída permitem todo o tráfego por padrão (consulte a Figura 26).


Figura 26: Regras de saída

O security group padrão criado para Oracle DB no RDS também não permite todo o tráfego, conforme mostrado na Figura 27.


Figura 27: Grupo de segurança para banco de dados Oracle no RDS

Modifique a entrada do grupo de segurança para Oracle DB no RDS com o botão Editar, semelhante à modificação das regras de entrada do grupo de segurança do banco de dados MySQL, para permitir todo o tráfego, conforme mostrado na Figura 28.


Figura 28: Grupo de segurança para banco de dados Oracle no RDS

Anote o nome de usuário mestre e a senha mestra configurados para cada uma das instâncias de banco de dados ao criar as instâncias, conforme mostrado para o banco de dados MySQL na Figura 29. Além disso, ao criar o banco de dados MySQL no RDS, nenhuma das definições de configuração (Nome do banco de dados , DB Instance Identifier, Master Username, Master Password) devem ser palavras reservadas do MySQL, como “MYSQL”.


Figura 29: Nome de usuário mestre e senha mestre

Preparando bancos de dados Oracle e MySQL para DMS


Para usar Oracle DB e MySQL DB no RDS como origem e destino do DMS, respectivamente, precisamos definir algumas configurações nas instâncias de banco de dados. Conecte-se às instâncias de banco de dados Oracle e MySQL em um shell de linha de comando para definir as configurações. Para se conectar às instâncias de banco de dados do RDS em um shell de linha de comando, precisamos obter o Endpoint para as instâncias do RDS. O Endpoint para o banco de dados Oracle no RDS é mostrado no RDS Console na Figura 30.


Figura 30: Endpoint para banco de dados Oracle no RDS

Conecte-se à instância de banco de dados Oracle com o seguinte sqlplus comando, no qual o HOST, SID,PORT pode ser diferente para diferentes usuários; o valor HOST é obtido removendo o sufixo da porta do Endpoint.
sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
   (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521))
   (CONNECT_DATA=(SID=ORCL)))

A interface de linha de comando do SQL*Plus é conectada ao banco de dados Oracle no RDS (consulte a Figura 31).


Figura 31: CLI do SQL*Plus conectado ao banco de dados Oracle

Habilite o log complementar de nível de banco de dados para DMS.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

O procedimento PL/SQL é concluído, conforme mostrado na Figura 32.


Figura 32: Habilitando o Log Suplementar no Nível do Banco de Dados

Além disso, ative CHAVE PRIMÁRIA log no nível do banco de dados.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging
   ('ADD','PRIMARY KEY');

A CHAVE PRIMÁRIA logging é habilitado, conforme mostrado na Figura 33.


Figura 33: Ativando o registro de CHAVE PRIMÁRIA

Configure o arquivamento dos logs de redo para a instância de banco de dados Oracle no RDS.
exec rdsadmin.rdsadmin_util.set_configuration
   ('archivelog retention hours',24);

O arquivamento é configurado, conforme mostrado na Figura 34.


Figura 34: Configurando o arquivamento

Ao migrar um banco de dados, as tabelas e os dados da tabela também são migrados. Crie uma tabela de banco de dados wlslog no banco de dados Oracle.
CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category
   VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),
   code VARCHAR2(255),msg VARCHAR2(255));
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:16-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STANDBY');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STARTING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to ADMIN');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RESUMING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000361','Started WebLogic AdminServer');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RUNNING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:22-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000360','Server started in RUNNING mode');

Para adicionar log complementar para uma tabela sem uma CHAVE PRIMÁRIA log, ou se CHAVE PRIMÁRIA o log no nível do banco de dados não estiver definido, altere a tabela para adicionar o log complementar.
alter table wlslog add supplemental log data (ALL) columns;

O log complementar também pode ser habilitado no CREATE TABLE demonstração.
CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,
   category VARCHAR2(255),type VARCHAR2(255),
   servername VARCHAR2(255), code VARCHAR2(255),msg VARCHAR2(255),
   supplemental log data(ALL) columns);

A saída dos dois comandos anteriores é mostrada na Figura 35.


Figura 35: Adicionando Log Suplementar a uma Tabela já criada ou a uma nova Tabela

Em seguida, prepare a instância de banco de dados MySQL no RDS para migração do DMS. Para se conectar ao banco de dados MySQL, obtenha o Endpoint (consulte a Figura 36.


Figura 36: Endpoint para banco de dados MySQL no RDS

O host é obtido removendo o sufixo da porta do Endpoint. Usando a CLI do MySQL, conecte-se ao MySQL a partir de uma linha de comando.
mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306
   -u dvohra -p

A CLI do MySQL é conectada a uma instância de banco de dados MySQL no RDS, conforme mostrado na Figura 37.


Figura 37: Conectando-se ao MySQL a partir da CLI do MySQL

Em seguida, crie e conceda privilégios de leitura e gravação para o banco de dados MySQL ao usuário DMS (dvohra).
CREATE USER '<user acct>'@'%' IDENTIFIED BY
   <user password>';??? Remove as user dvohra already exists
GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE,
   SELECT ON myschema.* TO '<user acct>'@'%';
GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';

Substituindo a conta de usuário como dvohra, a saída de alguns dos comandos é mostrada na Figura 38.


Figura 38: Conceder acesso ao banco de dados MySQL ao usuário DMS

Conclusão


Neste artigo, apresentamos a migração de um banco de dados Oracle no RDS para um banco de dados MySQL no RDS usando o serviço AWS Database Migration. Neste artigo, discutimos a configuração dos bancos de dados de origem e destino. Em um artigo subsequente, criaremos e executaremos uma migração.