AWS Database Migration Service (DMS) è un servizio per migrare i database in AWS. Il database di destinazione deve essere uno dei database supportati su AWS, come i database ospitati da Relational Database Service, DynamoDB e RedShift. Il database di origine potrebbe essere un database su AWS o un database locale o un database su un'altra piattaforma Cloud, come Oracle Cloud Platform. Il database di origine non ha tempi di inattività durante la migrazione.
Perché migrare i database?
Potrebbe essere necessario migrare un database per diversi motivi, come i seguenti:
- Migrazione eterogenea a un motore di database diverso. Ad esempio, da un database Oracle a un database MySQL. Potrebbe essere necessaria una migrazione eterogenea per usufruire delle funzionalità di un altro database, ad esempio un tipo di database non supportato nel database di origine. Un database commerciale potrebbe essere migrato in un database open source. Un database relazionale potrebbe trarre vantaggio dalla migrazione a un database NoSQL.
- Migrazione omogenea allo stesso tipo di motore di database, ma su una piattaforma diversa. La migrazione omogenea potrebbe essere utilizzata per eseguire il backup di un database. Un database locale potrebbe trarre vantaggio dalla migrazione a una piattaforma Cloud.
- Replica continua dei dati a diversi database di destinazione a scopo di test e sviluppo e distribuzione regionale dei database.
- Database a più sorgenti può essere migrato in un unico database per il consolidamento.
In due articoli, discuteremo della migrazione di un database Oracle a un database MySQL con Database Migration Service. Questo articolo ha le seguenti sezioni:
- Impostazione dell'ambiente
- Creazione di un utente IAM
- Creazione di una chiave di crittografia
- Creazione di istanze database Oracle e MySQL su RDS
- Preparazione di DB Oracle e MySQL per DMS
- Conclusione
Impostazione dell'ambiente
L'unico prerequisito è un account AWS, che può essere creato a questo link.
Creazione di un utente IAM
Un utente deve ottenere autorizzazioni e ruoli IAM per accedere a DMS. Sono necessarie autorizzazioni IAM aggiuntive per accedere ad altri servizi da DMS; alcune operazioni sono richieste da altri servizi AWS come KMS, IAM, EC2 o CloudWatch. In questa sezione, creeremo un utente IAM e allegheremo una policy per il set di autorizzazioni richiesto. Seleziona il servizio AWS IAM e fai clic su Aggiungi utente , come mostrato nella Figura 1.
Figura 1: Aggiungi utente
In Aggiungi utente , specifica un Nome utente (dvohra) e seleziona entrambi Tipo di accesso opzioni, come mostrato nella Figura 2.
Figura 2: Configurazione nuovo utente
Seleziona la Password personalizzata per Console Password, specificare una password personalizzata e fare clic su Avanti, come mostrato nella Figura 3.
Figura 3: Specificare la password
In Autorizzazioni , seleziona Allega direttamente le norme esistenti opzione e fai clic su Crea norma per creare una policy da allegare, come mostrato nella Figura 4.
Figura 4: Aggiungi utente>Crea criterio
In Crea norma , seleziona Crea la tua polizza opzione, come mostrato nella Figura 5.
Figura 5: Crea la tua polizza
In Norme di revisione , specifica un nome norma (DMS) e copia la seguente norma nel Documento normativo .
{ "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": "*" } ] }
Fai clic su Convalida norma e, se viene visualizzato il messaggio La politica è valida viene generato (vedere la Figura 6), fare clic su Crea criterio , mostrato anche nella Figura 6.
Figura 6: Crea polizza
In Crea utente procedura guidata, seleziona il DMS appena creato policy e fare clic su Avanti, come mostrato nella Figura 7.
Figura 7: Selezione della politica da allegare all'utente
In Revisione, fai clic su Crea utente , come mostrato nella Figura 8.
Figura 8: Rivedi>Crea utente
Viene creato un nuovo utente, come mostrato nella Figura 9.
Figura 9: Nuovo utente creato
Un nuovo utente viene aggiunto a IAM Console>Utenti , come mostrato nella Figura 10.
Figura 10: Utenti IAM
Dopo aver creato un nuovo utente, dovremmo accedere come nuovo utente per creare la migrazione DMS. Il link di accesso alla console per accedere poiché il nuovo utente viene ottenuto dalle credenziali di sicurezza per il nuovo utente (vedere la Figura 11).
Figura 11: Link di accesso alla console
Dopo aver creato un utente IAM per DMS, disconnettersi come utente root, come mostrato nella Figura 12.
Figura 12: Esci come utente root
Apri l'URL di accesso in un browser, specifica il nome utente e la password e fai clic su Accedi, come mostrato nella Figura 13.
Figura 13: Accesso come nuovo utente IAM
Creazione di una chiave di crittografia
Assicurati di aver effettuato l'accesso come utente IAM creato nella sezione precedente. È necessario creare una chiave di crittografia che venga utilizzata come chiave master durante la creazione di una migrazione DMS. La crittografia deve essere creata dopo aver effettuato l'accesso come nuovo utente IAM e non come utente root. Seleziona Chiavi di crittografia nella console IAM e fai clic su Crea chiave , come mostrato nella Figura 14.
Figura 14: Crea chiave
In Crea alias e descrizione , specifica un Alias (dms ) e fare clic su Passaggio successivo, come mostrato nella Figura 15.
Figura 15: Specificare l'alias
In Aggiungi tag, fai clic su Passaggio successivo perché i tag non sono richiesti. In Key Administrators, seleziona l'utente IAM aggiunto come amministratore (vedi Figura 16). Seleziona Eliminazione chiave come Consenti agli amministratori chiave di eliminare questa chiave e fai clic su Passaggio successivo.
Figura 16: Amministratori chiave
In Definisci autorizzazioni di utilizzo della chiave, seleziona gli utenti e i ruoli IAM che sono in grado di utilizzare la chiave di crittografia; seleziona il nuovo utente IAM e il dms-vpc-role , come mostrato nella Figura 17. Fare clic su Passaggio successivo.
Figura 17: Definizione delle autorizzazioni di utilizzo chiave
In Anteprima criterio chiave, fare clic su Fine, come mostrato nella Figura 18.
Figura 18: Anteprima della politica chiave
Viene creata una nuova chiave di crittografia, come mostrato nella Figura 19.
Figura 19: Chiave di crittografia creata
Creazione di istanze database Oracle e MySQL su RDS
Poiché utilizzeremo le istanze database RDS Oracle e MySQL come origine e destinazione, rispettivamente, per la migrazione DMS, creare due istanze RDS, una per il database Oracle SE e l'altra per MySQL. Quando si creano le istanze RDS in Configura impostazioni avanzate, selezionare Rete e sicurezza per creare un nuovo VPC, creare un nuovo gruppo di sottoreti database e creare un nuovo gruppo di sicurezza, come mostrato nella Figura 20 per Oracle DB. Se l'account AWS ha un limite al numero massimo di VPC, elimina alcuni VPC inutilizzati prima di creare le istanze RDS.
Figura 20: Configurazione delle impostazioni avanzate
Le istanze RDS per Oracle e MySQL sono mostrate nella Figura 21.
Figura 21: Istanze database RDS
I gruppi di sicurezza creati automaticamente non dispongono delle regole in entrata/in uscita richieste, che devono essere modificate. Fare clic sul collegamento per i gruppi di sicurezza nella console RDS, come mostrato per il database MySQL nella figura 22.
Figura 22: Gruppi di sicurezza
Fare clic su Modifica per il gruppo di sicurezza In entrata, come mostrato nella Figura 23.
Figura 23: Gruppo di sicurezza>Modifica
In Modifica regole in entrata, seleziona Tipo come Tutto il traffico, Protocollo come Tutto, Intervallo porte come 0-65535, Sorgente come Ovunque e fai clic su Salva, come mostrato nella Figura 24.
Figura 24: Modifica le regole in entrata
Le regole in entrata modificate sono mostrate nella Figura 25.
Figura 25: Regole in entrata modificate
Le regole in uscita consentono tutto il traffico per impostazione predefinita (vedi Figura 26).
Figura 26: Regole in uscita
Anche il gruppo di sicurezza predefinito creato per Oracle DB su RDS non consente tutto il traffico, come mostrato nella Figura 27.
Figura 27: Gruppo di sicurezza per Oracle DB su RDS
Modificare il gruppo di sicurezza Inbound per Oracle DB su RDS con il pulsante Modifica, in modo simile alla modifica delle regole in entrata del gruppo di sicurezza del database MySQL, per consentire tutto il traffico, come mostrato nella Figura 28.
Figura 28: Gruppo di sicurezza per Oracle DB su RDS
Prendere nota del nome utente principale e della password principale configurati per ciascuna delle istanze database durante la creazione delle istanze, come mostrato per il database MySQL nella Figura 29. Inoltre, durante la creazione del database MySQL su RDS, nessuna delle impostazioni di configurazione (Nome database , DB Instance Identifier, Master Username, Master Password) devono essere parole riservate a MySQL, come "MYSQL".
Figura 29: Nome utente principale e Password principale
Preparazione di DB Oracle e MySQL per DMS
Per utilizzare Oracle DB e MySQL DB su RDS rispettivamente come origine e destinazione DMS, è necessario configurare alcune impostazioni sulle istanze database. Connettiti alle istanze database Oracle e MySQL in una shell della riga di comando per configurare le impostazioni. Per connetterci alle istanze database RDS in una shell della riga di comando, è necessario ottenere l'endpoint per le istanze RDS. L'endpoint per Oracle DB su RDS è mostrato nella console RDS nella Figura 30.
Figura 30: Endpoint per Oracle DB su RDS
Connettiti all'istanza database Oracle con il seguente sqlplus comando, in cui HOST, SID,PORT potrebbero essere diversi per utenti diversi; il valore HOST si ottiene rimuovendo il suffisso della porta dall'Endpoint.
sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521)) (CONNECT_DATA=(SID=ORCL)))
L'interfaccia della riga di comando SQL*Plus viene connessa al DB Oracle su RDS (vedere la Figura 31).
Figura 31: SQL*Plus CLI connessa a Oracle DB
Abilita la registrazione supplementare a livello di database per DMS.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
La procedura PL/SQL viene completata, come mostrato nella Figura 32.
Figura 32: Abilitazione della registrazione supplementare a livello di database
Inoltre, abilita la CHIAVE PRIMARIA registrazione a livello di database.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging ('ADD','PRIMARY KEY');
La CHIAVE PRIMARIA la registrazione viene abilitata, come mostrato nella Figura 33.
Figura 33: Abilitazione registrazione CHIAVE PRIMARIA
Configura l'archiviazione dei log di ripristino per l'istanza database Oracle su RDS.
exec rdsadmin.rdsadmin_util.set_configuration ('archivelog retention hours',24);
L'archiviazione viene configurata, come mostrato nella Figura 34.
Figura 34: Configurazione dell'archiviazione
Quando si esegue la migrazione di un database, vengono migrate anche le tabelle e i dati delle tabelle. Crea una tabella di database wlslog nel database 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');
Per aggiungere la registrazione supplementare per una tabella senza una CHIAVE PRIMARIA registrazione, o se CHIAVE PRIMARIA la registrazione a livello di database non è impostata, modificare la tabella per aggiungere la registrazione supplementare.
alter table wlslog add supplemental log data (ALL) columns;
La registrazione supplementare può anche essere abilitata in CREATE TABLE dichiarazione.
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);
L'output dei due comandi precedenti è mostrato nella Figura 35.
Figura 35: Aggiunta di registrazione supplementare a una tabella già creata oa una nuova tabella
Quindi, prepara l'istanza database MySQL su RDS per la migrazione DMS. Per connetterti a MySQL DB, ottieni l'Endpoint (vedi Figura 36.
Figura 36: Endpoint per MySQL DB su RDS
L'host si ottiene rimuovendo il suffisso della porta dall'endpoint. Utilizzando la CLI di MySQL, connettiti a MySQL da una riga di comando.
mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306 -u dvohra -p
MySQL CLI viene connesso a un'istanza database MySQL su RDS, come mostrato nella Figura 37.
Figura 37: Connessione a MySQL dalla CLI MySQL
Quindi, crea e concedi i privilegi di lettura e scrittura per il database MySQL all'utente 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>'@'%';
Sostituendo l'account utente come dvohra, l'output di alcuni comandi è mostrato nella Figura 38.
Figura 38: Concessione dell'accesso al database MySQL all'utente DMS
Conclusione
In questo articolo, abbiamo introdotto la migrazione di un database Oracle su RDS a un database MySQL su RDS utilizzando il servizio AWS Database Migration. In questo articolo, abbiamo discusso della configurazione dei database di origine e di destinazione. In un articolo successivo creeremo ed eseguiremo una migrazione.