Zkoumáme migraci databáze Oracle z instance EC2 na spravovanou službu RDS. V prvním ze čtyř článků „Migrace databáze Oracle z AWS EC2 na AWS RDS, část 1“ jsme vytvořili instance databáze na EC2 a RDS. Ve druhém článku „Migrace databáze Oracle z AWS EC2 na AWS RDS, část 2“ jsme vytvořili uživatele IAM pro migraci databáze a také vytvořili databázovou tabulku pro migraci. Pouze ve druhém článku jsme vytvořili instanci replikace a koncové body replikace. Ve třetím článku „Migrace databáze Oracle z AWS EC2 na AWS RDS, část 3“ jsme vytvořili úlohu migrace pro migraci stávajících změn. V tomto pokračování článku provedeme migraci probíhajících změn dat. Tento článek má následující sekce:
- Vytvoření a spuštění úlohy replikace pro migraci probíhajících změn
- Přidání doplňkového protokolování
- Přidání tabulky do instance databáze Oracle na EC2
- Přidání dat tabulky
- Prozkoumání tabulky replikované databáze
- Vypuštění a opětovné načtení dat
- Zastavení a spuštění úlohy
- Odstranění databází
- Závěr
Vytvoření a spuštění úlohy replikace pro migraci probíhajících změn
V následujících podkapitolách vytvoříme úkol pro replikaci probíhajících změn. Abychom demonstrovali probíhající replikaci, nejprve spustíme úlohu a následně vytvoříme tabulku a přidáme data. Zrušte tabulku DVOHRA.WLSLOG , jak je znázorněno na obrázku 1; vytvoříme stejnou tabulku, abychom demonstrovali probíhající replikaci.
Obrázek 1: Stahovací tabulka DVOHRA.WLSLOG
Přidání doplňkového protokolování
Služba migrace databáze vyžaduje, aby bylo povoleno doplňkové protokolování, které umožní zachycování dat změn (CDC), které se používá pro replikaci probíhajících změn. Doplňkové protokolování je proces ukládání informací o tom, které řádky dat v tabulce se změnily. Doplňkové protokolování přidává doplňková nebo nadbytečná data sloupců v souborech protokolu opakování, kdykoli je provedena aktualizace tabulky. Sloupce, které se změnily, jsou zaznamenány jako doplňková data v souborech redo log spolu s identifikačním klíčem, kterým může být primární klíč nebo jedinečný index. Pokud tabulka nemá primární klíč nebo jedinečný index, jsou všechny skalární sloupce zaznamenány v souborech protokolu redo, aby jednoznačně identifikovaly řádek dat, což by mohlo způsobit, že soubory protokolu redo budou velké. Oracle Database podporuje následující druhy doplňkového protokolování:
- Minimální doplňkové protokolování: V redo log souborech je zaznamenáno pouze minimální množství dat, které LogMiner vyžaduje pro změny DML.
- Identifikace na úrovni databáze Protokolování klíčů: Jsou podporovány různé druhy protokolování identifikačních klíčů na úrovni databáze — VŠECHNY, PRIMÁRNÍ KLÍČ, UNIKÁTNÍ a CIZÍ KLÍČ. Na úrovni ALL se všechny sloupce (kromě LOB, Longs a ADT) zaznamenávají do souborů redo log. U PRIMARY KEY jsou v souborech redo log uloženy pouze sloupce primárního klíče, když je aktualizován řádek obsahující primární klíč; není nutné, aby byl sloupec primárního klíče aktualizován. Druh FOREIGN KEY ukládá pouze cizí klíče řádku do souborů redo log, když je aktualizován některý z červených souborů protokolu. Typ UNIQUE ukládá pouze sloupce v jedinečném složeném klíči nebo indexu bitmapy, pokud se některý sloupec v jedinečném složeném klíči nebo indexu bitmapy změnil.
- Doplňkové protokolování na úrovni tabulky: Určuje na úrovni tabulky, které sloupce jsou uloženy v souborech protokolu redo. Protokolování identifikačního klíče na úrovni tabulky podporuje stejné úrovně jako protokolování identifikačního klíče na úrovni databáze; VŠECHNY, PRIMÁRNÍ KLÍČ, UNIKÁTNÍ A CIZÍ KLÍČ. Na úrovni tabulky jsou také podporovány uživatelem definované doplňkové skupiny protokolů, které umožňují uživateli definovat, které sloupce se mají dodatečně protokolovat. Uživatelem definované doplňkové skupiny protokolů mohou být podmíněné nebo nepodmíněné.
Pro pokračující replikaci musíme nastavit minimální doplňkové protokolování a doplňkové protokolování na úrovni tabulky pro VŠECHNY sloupce.
V SQL*Plus spusťte následující příkaz pro nastavení minimálního doplňkového protokolování:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Výstup je následující:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered.
Chcete-li zjistit stav minimálního doplňkového protokolování, spusťte následující příkaz. A pokud má výstup hodnotu sloupce SUPPLEME jako ANO, je povoleno minimální doplňkové protokolování.
SQL> SELECT supplemental_log_data_min FROM v$database; SUPPLEME -------- YES
Nastavení minimálního doplňkového protokolování a ověřování výstupu stavu je znázorněno na obrázku 2.
Obrázek 2: Nastavení a ověření minimálního doplňkového protokolování
Nastavíme také protokolování identifikačních klíčů na úrovni tabulky, když přidáváme data tabulek a tabulek, abychom demonstrovali probíhající replikaci po zahájení úlohy. Pokud přidáme tabulku a data tabulek před vytvořením a spuštěním úlohy – nebudeme schopni předvést probíhající replikaci.
Chcete-li vytvořit úlohu pro probíhající replikaci, klikněte na Vytvořit úlohu , jak je znázorněno na obrázku 3.
Obrázek 3: Úkoly>Vytvořit úkol
V části Vytvořit úkol průvodce, zadejte název a popis úlohy a vyberte instanci replikace, zdrojový koncový bod a cílový koncový bod, jak je znázorněno na obrázku 4. Vyberte Typ migrace jako Migrujte stávající data a replikujte probíhající změny .
Obrázek 4: Výběr typu migrace pro probíhající replikaci
Zpráva zobrazená na obrázku 5 označuje, že pro probíhající replikaci je nutné povolit doplňkové protokolování. Zpráva nemá indikovat, že doplňkové protokolování nebylo povoleno, ale pouze jako připomenutí. Doplňkové protokolování jsme již povolili. Zaškrtněte políčko Spustit úlohu při vytvoření .
Obrázek 5: Zpráva o dodatečném požadavku na protokolování pro replikaci probíhajících změn
Nastavení úlohy jsou stejné jako pro migraci pouze existujících dat (viz obrázek 6).
Obrázek 6: Nastavení úkolu
Pro mapování tabulky je vyžadováno alespoň jedno pravidlo výběru. Přidejte pravidlo výběru pro zahrnutí všech tabulek do DVOHRA tabulka, jak je znázorněno na obrázku 7.
Obrázek 7: Přidání pravidla výběru
Přidané pravidlo výběru je znázorněno na obrázku 8.
Obrázek 8: Pravidlo výběru
Klikněte na Vytvořit úkol vytvořte úlohu, jak je znázorněno na obrázku 9.
Obrázek 9: Vytvořit úkol
Přidá se nový úkol se stavem Vytváří se , jak je znázorněno na obrázku 10.
Obrázek 10: Úkol přidán se stavem Vytváření
Po použití pravidel výběru a transformace pro všechna existující data a migraci dat se stav úlohy změní na Načítání dokončeno, replikace probíhá (viz obrázek 11).
Obrázek 11: Načítání dokončeno, replikace probíhá
Tabulkové statistiky tab neuvádí žádné migrované nebo replikované tabulky, jak je znázorněno na obrázku 12.
Obrázek 12: Tabulkové statistiky
Chcete-li prozkoumat protokoly CloudWatch, klikněte na Protokoly a klikněte na odkaz, jak je znázorněno na obrázku 13.
Obrázek 13: Protokoly
Zobrazí se protokoly CloudWatch, jak je znázorněno na obrázku 14. Poslední záznam v protokolech se týká spuštění replikace. Úloha probíhající replikace se neukončí po načtení existujících dat, pokud existují, ale pokračuje v běhu.
Obrázek 14: Protokoly CloudWatch
Přidání tabulky do instance databáze Oracle na EC2
Dále vytvořte tabulku a přidejte data tabulky, abyste demonstrovali probíhající replikaci. Spusťte společně následující dva příkazy, aby se při vytvoření tabulky nastavilo doplňkové protokolování na úrovni tabulky. Upravte skript, aby se schéma lišilo.
CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY, category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255)); alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;
Doplňkové protokolování na úrovni tabulky se nastaví při vytvoření tabulky.
SQL> CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255)); alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns; Table created. SQL> Table altered.
Výstup je zobrazen v SQL*Plus na obrázku 15.
Obrázek 15: Vytvoření tabulky a nastavení doplňkového protokolování
Dosud jsme pouze vytvořili tabulku a nepřidali žádná data tabulky. DDL pro tabulku se migruje, jak ukazuje statistika tabulky na obrázku 16.
Obrázek 16: DDL pro migraci tabulky
Přidání dat tabulky
Poté spusťte následující skript SQL pro přidání dat do vytvořené tabulky. Upravte skript, aby se schéma lišilo.
SQL> INSERT INTO DVOHRA.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 DVOHRA.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 DVOHRA.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 DVOHRA.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 DVOHRA.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 DVOHRA.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'); 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created.
Následně spusťte příkaz Commit.
SQL> COMMIT; Commit complete.
Prozkoumání tabulky replikované databáze
Statistika tabulky uvádí vložky jako počet přidaných řádků dat, jak je znázorněno na obrázku 17.
Obrázek 17: Seznam statistik tabulky 6 příloh
Úloha pokračuje v běhu po replikaci probíhajících změn. Přidejte další řádek dat.
SQL> INSERT INTO DVOHRA.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'); 1 row created. SQL> COMMIT; Commit complete. SQL>
Klikněte na Obnovit data ze serveru, jak je znázorněno na obrázku 18.
Obrázek 18: Obnovit data ze serveru
Celkový počet statistik vložení do tabulky bude 7, jak ukazuje obrázek 19.
Obrázek 19: Statistika tabulky s přílohami jako 7
Vypuštění a opětovné načtení dat
Chcete-li data tabulky odstranit a znovu načíst, klikněte na možnost Vyjmout a znovu načíst data tabulky , jak je znázorněno na obrázku 20.
Obrázek 20: Přetáhněte a znovu načtěte data tabulky
Klikněte na Obnovit data ze serveru (viz obrázek 21).
Obrázek 21: Obnovit data ze serveru
Ikona a Stav sloupec pro tabulku označuje, že se tabulka znovu načítá, jak je znázorněno na obrázku 22.
Obrázek 22: Tabulka se znovu načítá
Po dokončení načítání tabulky se sloupec Stav tabulky změní na Tabulka dokončena , jak je znázorněno na obrázku 23. Po opětovném načtení dat tabulky se Úplné načtení řádků zobrazuje hodnotu 7 a Inserts je 0, protože opětovné načtení není probíhající replikace, ale úplné načtení.
Obrázek 23: Obnovení tabulky dokončeno
Protože data tabulky jsou zrušena a znovu načtena a data zdrojové tabulky se nezměnila, protokoly CloudWatch obsahují zprávu „Některé změny ze zdrojové databáze neměly žádný dopad, když byly aplikovány na cílovou databázi.“, jak je znázorněno na obrázku 24.
Obrázek 24: Některé změny ze zdrojové databáze neměly žádný dopad, když byly aplikovány na cílovou databázi
Při opětovném načtení souboru DVOHRA.wlslog tabulka byla dokončena, zobrazí se zpráva „Načítání dokončeno pro tabulku DVOHRA.wlslog. 7 řádek přijato“ se zobrazí, jak je znázorněno na obrázku 25.
Obrázek 25: Zpráva protokolu CloudWatch pro dokončení načítání
Zastavení a spuštění úlohy
Úloha typu, který zahrnuje probíhající replikaci, se sama o sobě nezastaví, pokud nedojde k chybě. Chcete-li úlohu zastavit, klikněte na Zastavit (viz obrázek 26).
Obrázek 26: Zastavení úkolu
V Zastavit úlohu klikněte na tlačítko Zastavit , jak je znázorněno na obrázku 27.
Obrázek 27: Dialogové okno potvrzení pro zastavení úlohy
Stav úlohy se změní na Zastavuje se , jak je znázorněno na obrázku 28.
Obrázek 28: Zastavení úkolu
Když se úkol zastaví, stav se změní na Zastaveno , jak je znázorněno na obrázku 29.
Obrázek 29: Úloha zastavena
Chcete-li spustit zastavenou úlohu, klikněte na Spustit/obnovit , jak je znázorněno na obrázku 30.
Obrázek 30: Spuštění nebo obnovení úlohy
V části Spustit úlohu klikněte na tlačítko Start pro spuštění úlohy ze zastaveného bodu (viz Obrázek 31). Druhou možností je restartovat úlohu.
Obrázek 31: Spuštění úlohy po zastavení
Stav úlohy se změní na Spouštění , jak je znázorněno na obrázku 32.
Obrázek 32: Spuštění úlohy
Po dokončení migrace stávajících dat úloha pokračuje ve stavu Načítání dokončeno, replikace probíhá , jak je znázorněno na obrázku 33.
Obrázek 33: Načítání dokončeno, replikace probíhá
Odstranění databází
Instance RDS DB lze odstranit pomocí Akce instance>Odstranit příkaz. Databáze Oracle na instanci EC2 může být zastavena pomocí Actions>Instance State>Stop , jak je znázorněno na obrázku 34.
Obrázek 34: Zastavení instance EC2
Závěr
Ve čtyřech článcích jsme diskutovali o migraci databáze Oracle z AWS EC2 na AWS RDS.