sql >> Databáze >  >> RDS >> Mysql

Migrace databáze Oracle do MySQL na AWS, část 1

AWS Database Migration Service (DMS) je služba pro migraci databází na AWS. Cílová databáze musí být jedna z podporovaných databází na AWS, jako jsou databáze hostované službou Relational Database Service, DynamoDB a RedShift. Zdrojovou databází může být databáze na AWS nebo lokální databáze nebo databáze na nějaké jiné cloudové platformě, jako je Oracle Cloud Platform. Zdrojová databáze nemá během migrace žádné výpadky.

Proč migrovat databáze?

Databáze může být potřeba migrovat z několika důvodů, například z následujících:

  • Heterogenní migrace do jiného databázového stroje. Například databáze Oracle na databázi MySQL. Pro využití funkcí z jiné databáze, jako je typ databáze, který zdrojová databáze nepodporuje, může být vyžadována heterogenní migrace. Komerční databázi lze migrovat do databáze s otevřeným zdrojovým kódem. Relační databáze by mohla mít prospěch z migrace do databáze NoSQL.
  • Homogenní migrace na stejný typ databázového stroje, ale na jiné platformě. Homogenní migraci lze použít k vytvoření zálohy databáze. Místní databáze by mohla mít prospěch z migrace na cloudovou platformu.
  • Nepřetržitá replikace dat do různých cílových databází za účelem testování a vývoje a regionální distribuce databází.
  • Více zdrojových databází mohou být migrovány do jedné databáze za účelem konsolidace.

Ve dvou článcích budeme diskutovat o migraci databáze Oracle na databázi MySQL pomocí služby Database Migration Service. Tento článek má následující sekce:

  • Nastavení prostředí
  • Vytvoření uživatele IAM
  • Vytvoření šifrovacího klíče
  • Vytvoření instancí Oracle a MySQL DB na RDS
  • Příprava databází Oracle a MySQL pro DMS
  • Závěr

Nastavení prostředí

Jedinou podmínkou je účet AWS, který lze vytvořit na tomto odkazu.

Vytvoření uživatele IAM

Pro přístup k DMS musí uživatel získat oprávnění a role IAM. Pro přístup k dalším službám z DMS jsou vyžadována další oprávnění IAM; některé akce jsou vyžadovány od jiných služeb AWS, jako jsou KMS, IAM, EC2 nebo CloudWatch. V této části vytvoříme uživatele IAM a připojíme zásady pro požadovanou sadu oprávnění. Vyberte službu AWS IAM a klikněte na Přidat uživatele , jak je znázorněno na obrázku 1.


Obrázek 1: Přidat uživatele

V části Přidat uživatele , zadejte Uživatelské jméno (dvohra) a zároveň vyberte Typ přístupu možnosti, jak je znázorněno na obrázku 2.


Obrázek 2: Konfigurace nového uživatele

Vyberte Vlastní heslo pro Console Password (Heslo konzoly), zadejte vlastní heslo a klikněte na Next, jak je znázorněno na obrázku 3.


Obrázek 3: Zadání hesla

V části Oprávnění , vyberte možnost Připojit existující zásady přímo a klikněte na Vytvořit zásady pro vytvoření zásady k připojení, jak je znázorněno na obrázku 4.


Obrázek 4: Přidat uživatele>Vytvořit zásady

V části Vytvořit zásady , vyberte možnost Vytvořit vlastní zásady možnost, jak je znázorněno na obrázku 5.


Obrázek 5: Vytvořte si vlastní zásady

V části Zásady kontroly , zadejte název zásady (DMS) a zkopírujte následující zásady do dokumentu zásad .

{
   "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": "*"
      }
   ]
}

Klikněte na Ověřit zásady a pokud se zobrazí zpráva Zásady jsou platné (viz obrázek 6), klikněte na Vytvořit zásady , také znázorněno na obrázku 6.


Obrázek 6: Vytvořit zásady

V části Vytvořit uživatele průvodce, vyberte nově vytvořený DMS a klepněte na tlačítko Další, jak je znázorněno na obrázku 7.


Obrázek 7: Výběr zásady pro připojení k uživateli

V části Kontrola klikněte na Vytvořit uživatele , jak je znázorněno na obrázku 8.


Obrázek 8: Recenze>Vytvořit uživatele

Vytvoří se nový uživatel, jak je znázorněno na obrázku 9.


Obrázek 9: Byl vytvořen nový uživatel

Do Konzole IAM>Uživatelé bude přidán nový uživatel , jak je znázorněno na obrázku 10.


Obrázek 10: Uživatelé IAM

Po vytvoření nového uživatele bychom se museli přihlásit jako nový uživatel, abychom mohli vytvořit migraci DMS. Odkaz pro přihlášení do konzoly přihlásit se jako nový uživatel získaný z pověření zabezpečení pro nového uživatele (viz obrázek 11).


Obrázek 11: Odkaz pro přihlášení do konzole

Po vytvoření uživatele IAM pro DMS se odhlaste jako uživatel root, jak je znázorněno na obrázku 12.


Obrázek 12: Odhlaste se jako uživatel root

Otevřete přihlašovací URL v prohlížeči, zadejte uživatelské jméno a heslo a klikněte na Přihlásit se, jak je znázorněno na obrázku 13.


Obrázek 13: Přihlášení jako nový uživatel IAM

Vytvoření šifrovacího klíče

Ujistěte se, že jste přihlášeni jako uživatel IAM vytvořený v předchozí části. Musíme vytvořit šifrovací klíč, který by byl použit jako hlavní klíč při vytváření migrace DMS. Šifrování musí být vytvořeno při přihlášení jako nový uživatel IAM a nikoli jako uživatel root. Vyberte Šifrovací klíče v konzole IAM a klikněte na Vytvořit klíč , jak je znázorněno na obrázku 14.


Obrázek 14: Vytvořit klíč

V části Vytvořit alias a popis , zadejte Alias (dms ) a klepněte na Další krok, jak ukazuje Obrázek 15.


Obrázek 15: Určení aliasu

V části Přidat značky klikněte na Další krok, protože značky nejsou povinné. V části Klíčoví správci vyberte uživatele IAM přidaného jako správce (viz obrázek 16). Vyberte Odstranění klíče jako Povolit správcům klíčů odstranit tento klíč a klikněte na Další krok.


Obrázek 16: Klíčoví správci

V části Define Key Usage Permissions vyberte uživatele a role IAM, kteří mohou používat šifrovací klíč; vyberte nového uživatele IAM a roli dms-vpc , jak je znázorněno na obrázku 17. Klikněte na Další krok.


Obrázek 17: Definování oprávnění k použití klíčů

V zásadě náhledu klíče klikněte na Dokončit, jak je znázorněno na obrázku 18.


Obrázek 18: Náhled zásad klíče

Vytvoří se nový šifrovací klíč, jak je znázorněno na obrázku 19.


Obrázek 19: Šifrovací klíč vytvořen

Vytvoření instancí Oracle a MySQL DB na RDS

Protože budeme používat instance Oracle a MySQL RDS DB jako zdroj a cíl pro migraci DMS, vytvořte dvě instance RDS, jednu pro databázi Oracle SE a druhou pro MySQL. Při vytváření instancí RDS v Configure Advanced Settings vyberte Network &Security pro vytvoření nového VPC, vytvoření nové skupiny podsítí DB a vytvoření nové skupiny zabezpečení, jak je znázorněno na obrázku 20 pro Oracle DB. Pokud má účet AWS limit na maximální počet VPC, před vytvořením instancí RDS odstraňte některé nepoužívané VPC.


Obrázek 20: Konfigurace pokročilých nastavení

Instance RDS pro Oracle a MySQL jsou zobrazeny na obrázku 21.


Obrázek 21: Instance RDS DB

Automaticky vytvořené skupiny zabezpečení nemají požadovaná příchozí/odchozí pravidla, která je třeba upravit. Klikněte na odkaz pro skupiny zabezpečení v konzole RDS, jak je znázorněno pro databázi MySQL na obrázku 22.


Obrázek 22: Skupiny zabezpečení

Klikněte na Upravit u bezpečnostní skupiny Příchozí, jak je znázorněno na obrázku 23.


Obrázek 23: Security Group> Upravit

V části Upravit příchozí pravidla vyberte Typ jako veškerý provoz, Protokol jako vše, Rozsah portů jako 0-65535, Zdroj jako kdekoli a klikněte na Uložit, jak je znázorněno na obrázku 24.


Obrázek 24: Upravit příchozí pravidla

Upravená příchozí pravidla jsou zobrazena na obrázku 25.


Obrázek 25: Upravená příchozí pravidla

Pravidla pro odchozí komunikaci ve výchozím nastavení povolují veškerý provoz (viz Obrázek 26).


Obrázek 26: Odchozí pravidla

Výchozí skupina zabezpečení vytvořená pro Oracle DB na RDS také neumožňuje veškerý provoz, jak je znázorněno na obrázku 27.


Obrázek 27: Security Group for Oracle DB on RDS

Upravte bezpečnostní skupinu Inbound pro Oracle DB na RDS pomocí tlačítka Upravit, podobně jako při úpravě pravidel Inbound skupiny zabezpečení databáze MySQL, aby byl povolen veškerý provoz, jak je znázorněno na obrázku 28.


Obrázek 28: Security Group for Oracle DB on RDS

Poznamenejte si hlavní uživatelské jméno a hlavní heslo nakonfigurované pro každou z instancí DB při vytváření instancí, jak je znázorněno pro databázi MySQL na obrázku 29. Také při vytváření databáze MySQL na RDS se žádné z nastavení konfigurace (Název databáze , identifikátor instance DB, hlavní uživatelské jméno, hlavní heslo) by měla být vyhrazená slova MySQL, například „MYSQL“.


Obrázek 29: Hlavní uživatelské jméno a hlavní heslo

Příprava databází Oracle a MySQL pro DMS

Chcete-li používat Oracle DB a MySQL DB na RDS jako zdroj a cíl DMS, musíme nakonfigurovat některá nastavení na instancích DB. Připojte se k instancím Oracle a MySQL DB v prostředí příkazového řádku a nakonfigurujte nastavení. Abychom se mohli připojit k instancím RDS DB v prostředí příkazového řádku, musíme získat koncový bod pro instance RDS. Koncový bod pro Oracle DB na RDS je zobrazen v konzole RDS na obrázku 30.


Obrázek 30: Koncový bod pro Oracle DB na RDS

Připojte se k instanci Oracle DB pomocí následujícího sqlplus příkaz, ve kterém se HOST, SID, PORT mohou pro různé uživatele lišit; hodnota HOST se získá odstraněním přípony portu z koncového bodu.

sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
   (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521))
   (CONNECT_DATA=(SID=ORCL)))

Rozhraní příkazového řádku SQL*Plus se připojí k Oracle DB na RDS (viz obrázek 31).


Obrázek 31: SQL*Plus CLI připojené k Oracle DB

Povolte doplňkové protokolování na úrovni databáze pro DMS.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

Dokončí se procedura PL/SQL, jak ukazuje Obrázek 32.


Obrázek 32: Povolení doplňkového protokolování na úrovni databáze

Povolte také PRIMARY KEY protokolování na úrovni databáze.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging
   ('ADD','PRIMARY KEY');

PRIMÁRNÍ KLÍČ protokolování bude povoleno, jak je znázorněno na obrázku 33.


Obrázek 33: Povolení protokolování PRIMÁRNÍHO KLÍČE

Nakonfigurujte archivaci opakovaných protokolů pro instanci Oracle DB na RDS.

exec rdsadmin.rdsadmin_util.set_configuration
   ('archivelog retention hours',24);

Archivace se nakonfiguruje, jak ukazuje Obrázek 34.


Obrázek 34: Konfigurace archivace

Při migraci databáze se migrují i ​​tabulky a data tabulek. Vytvořte databázovou tabulku wlslog v databázi 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');

Chcete-li přidat doplňkové protokolování pro tabulku bez PRIMÁRNÍHO KLÍČE protokolování, nebo pokud PRIMÁRNÍ KLÍČ protokolování na úrovni databáze není nastaveno, změňte tabulku a přidejte doplňkové protokolování.

alter table wlslog add supplemental log data (ALL) columns;

Doplňkové protokolování může být také povoleno v CREATE TABLE prohlášení.

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);

Výstup z předchozích dvou příkazů je znázorněn na obrázku 35.


Obrázek 35: Přidání doplňkového protokolování do již vytvořené tabulky nebo do nové tabulky

Dále připravte instanci MySQL DB na RDS pro migraci DMS. Chcete-li se připojit k databázi MySQL, získejte Endpoint (viz Obrázek 36.


Obrázek 36: Koncový bod pro MySQL DB na RDS

Hostitel se získá odstraněním přípony portu z koncového bodu. Pomocí rozhraní MySQL CLI se připojte k MySQL z příkazového řádku.

mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306
   -u dvohra -p

MySQL CLI se připojí k instanci databáze MySQL na RDS, jak je znázorněno na obrázku 37.


Obrázek 37: Připojení k MySQL z MySQL CLI

Dále vytvořte a udělte oprávnění pro čtení a zápis pro databázi MySQL uživateli 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>'@'%';

Po nahrazení uživatelského účtu jako dvohra je výstup některých příkazů zobrazen na obrázku 38.


Obrázek 38: Udělení přístupu k databázi MySQL uživateli DMS

Závěr

V tomto článku jsme představili migraci databáze Oracle na RDS do databáze MySQL na RDS pomocí služby AWS Database Migration. V tomto článku jsme diskutovali o nastavení zdrojové a cílové databáze. V následujícím článku vytvoříme a spustíme migraci.


  1. Ekvivalent GROUP_CONCAT v Django

  2. MySQL UNION doložka

  3. Skript kontroly stavu replikace MySQL

  4. Měsíce mezi dvěma daty