Zephyrnet-logo

Ontgrendel inzichten in Amazon RDS voor MySQL-gegevens met zero-ETL-integratie met Amazon Redshift | Amazon-webservices

Datum:

Amazon Relational Database Service (Amazon RDS) voor MySQL zero-ETL-integratie met Amazon roodverschuiving was aangekondigd in preview op AWS re:Invent 2023 voor Amazon RDS voor MySQL versie 8.0.28 of hoger. In dit bericht bieden we stapsgewijze richtlijnen over hoe u met deze functie aan de slag kunt gaan met vrijwel realtime operationele analyses. Dit bericht is een voortzetting van de zero-ETL-serie waarmee begon Handleiding om aan de slag te gaan voor bijna realtime operationele analyses met behulp van Amazon Aurora zero-ETL-integratie met Amazon Redshift.

Uitdagingen

Klanten uit verschillende sectoren willen tegenwoordig data gebruiken om hun concurrentievoordeel te behalen en de omzet en klantbetrokkenheid te vergroten door vrijwel realtime analytische gebruiksscenario's te implementeren, zoals personalisatiestrategieën, fraudedetectie, voorraadmonitoring en nog veel meer. Er zijn twee brede benaderingen voor het analyseren van operationele gegevens voor deze gebruiksscenario's:

  • Analyseer de gegevens in de operationele database (zoals leesreplica's, federatieve query's en analyseversnellers)
  • Verplaats de gegevens naar een gegevensarchief dat is geoptimaliseerd voor het uitvoeren van gebruiksspecifieke query's, zoals een datawarehouse

De zero-ETL-integratie is gericht op het vereenvoudigen van de laatste benadering.

Het extractie-, transformatie- en laadproces (ETL) is een gebruikelijk patroon voor het verplaatsen van gegevens van een operationele database naar een analytisch datawarehouse. ELT is waar de geëxtraheerde gegevens eerst in het doel worden geladen en vervolgens worden getransformeerd. ETL- en ELT-pijpleidingen kunnen duur zijn om te bouwen en complex om te beheren. Met meerdere contactpunten kunnen periodieke fouten in ETL- en ELT-pijplijnen tot grote vertragingen leiden, waardoor datawarehouse-applicaties met verouderde of ontbrekende gegevens achterblijven, wat verder leidt tot gemiste zakelijke kansen.

Als alternatief kunnen oplossingen die gegevens ter plaatse analyseren prima werken voor het versnellen van zoekopdrachten op één database, maar dergelijke oplossingen zijn niet in staat gegevens uit meerdere operationele databases samen te voegen voor klanten die uniforme analyses moeten uitvoeren.

Nul-ETL

In tegenstelling tot de traditionele systemen waarbij gegevens in één database worden opgeslagen en de gebruiker een afweging moet maken tussen uniforme analyse en prestaties, kunnen data-ingenieurs nu gegevens uit meerdere RDS voor MySQL-databases repliceren naar één enkel Redshift-datawarehouse om holistische inzichten te verkrijgen over de hele wereld. veel applicaties of partities. Updates in transactionele databases worden automatisch en continu doorgegeven aan Amazon Redshift, zodat data-ingenieurs vrijwel in realtime over de meest recente informatie beschikken. Er hoeft geen infrastructuur te worden beheerd en de integratie kan automatisch op- en afschalen op basis van het datavolume.

Bij AWS hebben we gestage vooruitgang geboekt bij het brengen van onze nul-ETL visie tot leven. De volgende bronnen worden momenteel ondersteund voor nul-ETL-integraties:

Wanneer u een nul-ETL-integratie voor Amazon Redshift maakt, blijft u betalen voor de onderliggende brondatabase en het doelgebruik van de Redshift-database. Verwijzen naar Zero-ETL-integratiekosten (preview) voor meer details.

Met zero-ETL-integratie met Amazon Redshift repliceert de integratie gegevens uit de brondatabase naar het doeldatawarehouse. De gegevens zijn binnen enkele seconden beschikbaar in Amazon Redshift, waardoor u de analysefuncties van Amazon Redshift en mogelijkheden zoals het delen van gegevens, autonome werklastoptimalisatie, schaalvergroting van gelijktijdigheid, machinaal leren en nog veel meer kunt gebruiken. U kunt doorgaan met uw transactieverwerking op Amazon RDS of Amazon Aurora terwijl je tegelijkertijd Amazon Redshift gebruikt voor analytische workloads zoals rapportage en dashboards.

Het volgende diagram illustreert deze architectuur.

AWS-architectuurdiagram met een voorbeeld van zero-ETL-architectuur

Overzicht oplossingen

Laat ons nadenken TICKIT, een fictieve website waar gebruikers online kaartjes kopen en verkopen voor sportevenementen, shows en concerten. De transactiegegevens van deze website worden geladen in een Amazon RDS voor MySQL 8.0.28 (of hogere versie) database. De bedrijfsanalisten van het bedrijf willen statistieken genereren om de ticketbewegingen in de loop van de tijd, de succespercentages voor verkopers en de best verkochte evenementen, locaties en seizoenen te identificeren. Ze willen deze statistieken bijna in realtime verkrijgen met behulp van een nul-ETL-integratie.

De integratie is opgezet tussen Amazon RDS voor MySQL (bron) en Amazon Redshift (bestemming). De transactiegegevens van de bron worden vrijwel in realtime vernieuwd op de bestemming, die analytische vragen verwerkt.

U kunt de serverloze optie of een gecodeerd RA3-cluster voor Amazon Redshift gebruiken. Voor dit bericht gebruiken we een ingerichte RDS-database en een door Redshift ingericht datawarehouse.

Het volgende diagram illustreert de architectuur op hoog niveau.

Zero-ETL-architectuur op hoog niveau voor TICKIT-datagebruik

Hieronder volgen de stappen die nodig zijn om zero-ETL-integratie in te stellen. Deze stappen kunnen automatisch worden uitgevoerd door de zero-ETL-wizard, maar u moet opnieuw opstarten als de wizard de instelling voor Amazon RDS of Amazon Redshift wijzigt. U kunt deze stappen handmatig uitvoeren, als dit nog niet is geconfigureerd, en de herstart op uw gemak uitvoeren. Voor de volledige handleidingen om aan de slag te gaan, raadpleegt u Werken met Amazon RDS zero-ETL-integraties met Amazon Redshift (preview) en Werken met zero-ETL-integraties.

  1. Configureer de RDS voor MySQL-bron met een aangepaste DB-parametergroep.
  2. Configureer het Redshift-cluster om hoofdlettergevoelige ID's in te schakelen.
  3. Configureer de vereiste machtigingen.
  4. Maak de nul-ETL-integratie.
  5. Maak een database van de integratie in Amazon Redshift.

Configureer de RDS voor MySQL-bron met een aangepaste DB-parametergroep

Voer de volgende stappen uit om een ​​RDS voor MySQL-database te maken:

  1. Maak op de Amazon RDS-console een DB-parametergroep met de naam zero-etl-custom-pg.

Zero-ETL-integratie werkt met behulp van binaire logs (binlogs) gegenereerd door de MySQL-database. Om binlogs op Amazon RDS voor MySQL in te schakelen, moet een specifieke set parameters zijn ingeschakeld.

  1. Stel de volgende binlog-clusterparameterinstellingen in:
    • binlog_format = ROW
    • binlog_row_image = FULL
    • binlog_checksum = NONE

Zorg er bovendien voor dat de binlog_row_value_options parameter is niet ingesteld PARTIAL_JSON. Standaard is deze parameter niet ingesteld.

  1. Kies databases in het navigatievenster en kies vervolgens Maak een database.
  2. Voor Engine versie, kiezen MySQL 8.0.28 (of hoger).

Geselecteerde MySQL Community-editie Engineversie 8.0.36

  1. Voor Sjablonenselecteer Productie.
  2. Voor Beschikbaarheid en duurzaamheid, selecteer een van beide Multi-AZ DB-instantie or Eén DB-exemplaar (Multi-AZ DB-clusters worden op het moment van schrijven niet ondersteund).
  3. Voor DB-instantie-ID, ga naar binnen zero-etl-source-rms.

Geselecteerde productiesjabloon, Multi-AZ DB-instantie en DB-instantie-ID zero-etl-source-rms

  1. Onder Instantie configuratieselecteer Geheugen geoptimaliseerde klassen en kies het exemplaar db.r6g.large, wat voldoende zou moeten zijn voor TICKIT-gebruiksscenario.

Geselecteerd db.r6g.large voor DB-instanceklasse onder Instance-configuratie

  1. Onder Aanvullende configuratievoor DB-clusterparametergroep, kies de parametergroep die u eerder hebt gemaakt (zero-etl-custom-pg).

Geselecteerde DB-parametergroep zero-etl-custom-pg onder Aanvullende configuratie

  1. Kies Maak een database.

Binnen een paar minuten zou het een RDS voor MySQL-database moeten opstarten als bron voor zero-ETL-integratie.

De RDS-instantiestatus wordt weergegeven als Beschikbaar

Configureer de Redshift-bestemming

Nadat u uw bron-DB-cluster hebt gemaakt, moet u een doeldatawarehouse maken en configureren in Amazon Redshift. Het datawarehouse moet aan de volgende eisen voldoen:

  • Een RA3-knooppunttype gebruiken (ra3.16xlarge, ra3.4xlargeof ra3.xlplus) Of Amazon Redshift Serverloos
  • Versleuteld (bij gebruik van een ingericht cluster)

Maak voor ons gebruiksscenario een Redshift-cluster door de volgende stappen te voltooien:

  1. Kies op de Amazon Redshift-console Configuraties en kies dan Beheer van de werklast.
  2. Kies in het parametergroepgedeelte creëren.
  3. Maak een nieuwe parametergroep met de naam zero-etl-rms.
  4. Kies Bewerk parameters en verander de waarde van enable_case_sensitive_identifier naar True.
  5. Kies Bespaar.

U kunt ook gebruik maken van de AWS-opdrachtregelinterface (AWS CLI)-opdracht update-werkgroep voor Redshift serverloos:

aws redshift-serverless update-workgroup --workgroup-name <your-workgroup-name> --config-parameters parameterKey=enable_case_sensitive_identifier,parameterValue=true

Clusterparametergroep instellen

  1. Kies Dashboard voor ingerichte clusters.

Bovenaan uw consolevenster ziet u een Probeer nieuwe Amazon Redshift-functies in preview banner.

  1. Kies Maak een voorbeeldcluster.

Maak een voorbeeldcluster

  1. Voor Voorbeeld van het nummer, koos preview_2023.
  2. Voor Knooppunttype, kies een van de ondersteunde knooppunttypen (voor dit bericht gebruiken we ra3.xlplus).

Geselecteerd ra3.xlplus-knooppunttype voor preview-cluster

  1. Onder Aanvullende configuraties, uitbreiden Databaseconfiguraties.
  2. Voor Parametergroepen, kiezen zero-etl-rms.
  3. Voor Encryptieselecteer Gebruik de AWS Key Management Service.

Databaseconfiguratie met parametergroepen en codering

  1. Kies Cluster maken.

Het cluster zou moeten worden Beschikbaar in een paar minuten.

Clusterstatus wordt weergegeven als Beschikbaar

  1. Navigeer naar de naamruimte zero-etl-target-rs-ns En kies de Middelenbeleid Tab.
  2. Kies Gemachtigde opdrachtgevers toevoegen.
  3. Voer de Amazon Resource Name (ARN) in van de AWS-gebruiker of -rol, of de AWS-account-ID (IAM-principals) die integraties mogen maken.

Een account-ID wordt opgeslagen als een ARN met rootgebruiker.

Voeg geautoriseerde opdrachtgevers toe op het tabblad Clustersbronbeleid

  1. In het Geautoriseerde integratiebronnen sectie, kies Voeg een geautoriseerde integratiebron toe om de ARN toe te voegen van de RDS voor MySQL DB-instantie die de gegevensbron is voor de nul-ETL-integratie.

Je kunt deze waarde vinden door naar de Amazon RDS-console te gaan en naar de Configuratie tabblad van de zero-etl-source-rms DB-instantie.

Voeg een geautoriseerde integratiebron toe aan het tabblad Configuratie van het zero-etl-source-rms DB-exemplaar

Uw resourcebeleid zou op de volgende schermafbeelding moeten lijken.

Installatie van resourcebeleid voltooid

Configureer vereiste machtigingen

Om een ​​zero-ETL-integratie te creëren, moet uw gebruiker of rol een gekoppeld op identiteit gebaseerd beleid met de juiste AWS Identiteits- en toegangsbeheer (IAM)-machtigingen. Een AWS-accounteigenaar kan dat wel configureer de vereiste machtigingen voor gebruikers of rollen die zero-ETL-integraties kunnen creëren. Met het voorbeeldbeleid kan de gekoppelde principal de volgende acties uitvoeren:

  • Maak nul-ETL-integraties voor de bron-RDS voor MySQL DB-instantie.
  • Bekijk en verwijder alle zero-ETL-integraties.
  • Creëer inkomende integraties in het doeldatawarehouse. Deze toestemming is niet vereist als hetzelfde account eigenaar is van het Redshift-datawarehouse en dit account een geautoriseerde opdrachtgever is voor dat datawarehouse. Houd er ook rekening mee dat Amazon Redshift een ander ARN-formaat heeft voor ingerichte en serverloze clusters:
    • Voorzien - arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid
    • Serverless - arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

Voer de volgende stappen uit om de machtigingen te configureren:

  1. Kies op de IAM-console Policies in het navigatievenster.
  2. Kies Maak beleid.
  3. Maak een nieuw beleid met de naam rds-integrations met behulp van de volgende JSON (replace region en account-id met uw werkelijke waarden):
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "rds:CreateIntegration"
        ],
        "Resource": [
            "arn:aws:rds:{region}:{account-id}:db:source-instancename",
            "arn:aws:rds:{region}:{account-id}:integration:*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "rds:DescribeIntegration"
        ],
        "Resource": ["*"]
    },
    {
        "Effect": "Allow",
        "Action": [
            "rds:DeleteIntegration"
        ],
        "Resource": [
            "arn:aws:rds:{region}:{account-id}:integration:*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "redshift:CreateInboundIntegration"
        ],
        "Resource": [
            "arn:aws:redshift:{region}:{account-id}:cluster:namespace-uuid"
        ]
    }]
}
  1. Koppel het beleid dat u hebt gemaakt aan uw IAM-gebruikers- of rolmachtigingen.

Maak de nul-ETL-integratie

Voer de volgende stappen uit om de zero-ETL-integratie te maken:

  1. Kies op de Amazon RDS-console Zero-ETL-integraties in het navigatievenster.
  2. Kies Creëer zero-ETL-integratie.

Creëer zero-ETL-integratie op de Amazon RDS-console

  1. Voor Integratie-ID, voer bijvoorbeeld een naam in zero-etl-demo.

Voer de Integratie-ID in

  1. Voor Brondatabase, kiezen Blader door RDS-databases en kies het broncluster zero-etl-source-rms.
  2. Kies Volgende.

Blader door RDS-databases voor een nul-ETL-bron

  1. Onder doelwitvoor Amazon Redshift-datawarehouse, kiezen Blader door Redshift-datawarehouses en kies het Redshift-datawarehouse (zero-etl-target-rs).
  2. Kies Volgende.

Blader door Redshift-datawarehouses voor zero-ETL-integratie

  1. Voeg tags en encryptie toe, indien van toepassing.
  2. Kies Volgende.
  3. Controleer de integratienaam, bron, doel en andere instellingen.
  4. Kies Creëer zero-ETL-integratie.

Creëer zero-ETL-integratie stap 4

U kunt de integratie kiezen om de details te bekijken en de voortgang ervan te volgen. Het duurde ongeveer 30 minuten voordat de status veranderde Wij creëren naar Actief.

Details over Zero-ETL-integratie

De tijd varieert afhankelijk van de grootte van uw gegevensset in de bron.

Maak een database van de integratie in Amazon Redshift

Om uw database te creëren vanuit de zero-ETL-integratie, voert u de volgende stappen uit:

  1. Kies op de Amazon Redshift-console Clusters in het navigatievenster.
  2. Open de zero-etl-target-rs TROS.
  3. Kies Gegevens opvragen om de query-editor v2 te openen.

Gegevens opvragen via de Query Editor v2

  1. Maak verbinding met het Redshift-datawarehouse door te kiezen Bespaar.

Maak verbinding met het Redshift-datawarehouse

  1. Verkrijg het integration_id van het svv_integration systeem tafel:

select integration_id from svv_integration; -- copy this result, use in the next sql

Query voor integratie-ID

  1. Gebruik de integration_id van de vorige stap om een ​​nieuwe database te maken vanuit de integratie:

CREATE DATABASE zetl_source FROM INTEGRATION '<result from above>';

Database maken vanuit integratie

De integratie is nu voltooid en een volledige momentopname van de bron wordt weergegeven zoals deze zich op de bestemming bevindt. Lopende wijzigingen worden vrijwel in realtime gesynchroniseerd.

Analyseer de bijna realtime transactiegegevens

Nu kunnen we analyses uitvoeren op de operationele gegevens van TICKIT.

Vul de bron-TICKIT-gegevens in

Voer de volgende stappen uit om de brongegevens in te vullen:

  1. Kopieer de CSV-invoergegevensbestanden naar een lokale map. Het volgende is een voorbeeldopdracht:

aws s3 cp 's3://redshift-blogs/zero-etl-integration/data/tickit' . --recursive

  1. Maak verbinding met uw RDS voor MySQL-cluster en maak een database of schema voor het TICKIT-gegevensmodel, controleer of de tabellen in dat schema een primaire sleutel hebben en start het laadproces:

mysql -h <rds_db_instance_endpoint> -u admin -p password --local-infile=1

Maak verbinding met uw RDS voor MySQL-cluster en maak een database of schema voor het TICKIT-datamodel

  1. Gebruik het volgende CREATE TABLE-opdrachten.
  2. Laad de gegevens uit lokale bestanden met de opdracht LOAD DATA.

Het volgende is een voorbeeld. Houd er rekening mee dat het invoer-CSV-bestand in verschillende bestanden is opgesplitst. Deze opdracht moet voor elk bestand worden uitgevoerd als u alle gegevens wilt laden. Voor demodoeleinden zou een gedeeltelijke gegevensbelasting ook moeten werken.

Maak een gebruikerstabel voor demo

Analyseer de bron TICKIT-gegevens in de bestemming

Open op de Amazon Redshift-console de query-editor v2 met behulp van de database die u hebt gemaakt als onderdeel van de integratie-instellingen. Gebruik de volgende code om de zaad- of CDC-activiteit te valideren:

SELECT * FROM SYS_INTEGRATION_ACTIVITY ORDER BY last_commit_timestamp DESC;

Query om de zaad- of CDC-activiteit te valideren

U kunt nu uw bedrijfslogica voor transformaties rechtstreeks toepassen op de gegevens die naar het datawarehouse zijn gerepliceerd. U kunt ook prestatie-optimalisatietechnieken gebruiken, zoals het maken van een gematerialiseerde Redshift-weergave die de gerepliceerde tabellen en andere lokale tabellen samenvoegt om de queryprestaties voor uw analytische query's te verbeteren.

Monitoren

U kunt de volgende systeemweergaven en tabellen in Amazon Redshift opvragen om informatie te krijgen over uw zero-ETL-integraties met Amazon Redshift:

Om de integratiegerelateerde statistieken te bekijken die zijn gepubliceerd naar Amazon Cloud Watch, open de Amazon Redshift-console. Kiezen Zero-ETL-integraties in het navigatievenster en kies de integratie om activiteitsstatistieken weer te geven.

Zero-ETL-integratieactiviteitsstatistieken

Beschikbare statistieken op de Amazon Redshift-console zijn integratiestatistieken en tabelstatistieken, waarbij tabelstatistieken details geven van elke tabel die is gerepliceerd van Amazon RDS voor MySQL naar Amazon Redshift.

Integratiestatistieken en tabelstatistieken

Integratiestatistieken omvatten het aantal succesvolle en mislukte tabelreplicaties en vertragingsdetails.

Integratiestatistieken die het aantal succesvolle en mislukte tabelreplicaties en vertragingsdetails tonen. Integratiestatistieken die het aantal succesvolle en mislukte tabelreplicaties en vertragingsdetails tonen. Integratiestatistieken die het aantal succesvolle en mislukte tabelreplicaties en vertragingsdetails tonen.

Handmatige hersynchronisaties

De nul-ETL-integratie zal automatisch een hersynchronisatie initiëren als de synchronisatiestatus van een tabel wordt weergegeven als mislukt of als hersynchronisatie vereist is. Maar in het geval dat de automatische hersynchronisatie mislukt, kunt u een hersynchronisatie starten op tabelniveau:

ALTER DATABASE zetl_source INTEGRATION REFRESH TABLES tbl1, tbl2;

Een tabel kan om meerdere redenen de status Mislukt krijgen:

  • De primaire sleutel is uit de tabel verwijderd. In dergelijke gevallen moet u de primaire sleutel opnieuw toevoegen en de eerder genoemde ALTER-opdracht uitvoeren.
  • Er wordt tijdens de replicatie een ongeldige waarde aangetroffen of er wordt een nieuwe kolom aan de tabel toegevoegd met een niet-ondersteund gegevenstype. In dergelijke gevallen moet u de kolom met het niet-ondersteunde gegevenstype verwijderen en de eerder genoemde ALTER-opdracht uitvoeren.
  • Een interne fout kan in zeldzame gevallen een tafelfout veroorzaken. Het ALTER-commando zou dit moeten oplossen.

Opruimen

Wanneer u een nul-ETL-integratie verwijdert, worden uw transactiegegevens niet verwijderd uit de bron-RDS of de doel-RDS-databases, maar stuurt Amazon RDS geen nieuwe wijzigingen naar Amazon Redshift.

Voer de volgende stappen uit om een ​​nul-ETL-integratie te verwijderen:

  1. Kies op de Amazon RDS-console Zero-ETL-integraties in het navigatievenster.
  2. Selecteer de zero-ETL-integratie die u wilt verwijderen en kies Verwijder.
  3. Kies om de verwijdering te bevestigen Verwijder.

verwijder een nul-ETL-integratie

Conclusie

In dit bericht hebben we je laten zien hoe je een zero-ETL-integratie van Amazon RDS voor MySQL naar Amazon Redshift kunt opzetten. Dit minimaliseert de noodzaak om complexe datapijplijnen te onderhouden en maakt vrijwel realtime analyses van transactionele en operationele gegevens mogelijk.

Voor meer informatie over Amazon RDS zero-ETL-integratie met Amazon Redshift raadpleegt u Werken met Amazon RDS zero-ETL-integraties met Amazon Redshift (preview).


 Over de auteurs

Milde oke is een senior specialist in Redshift-oplossingen en heeft drie jaar bij Amazon Web Services gewerkt. Hij is een AWS-gecertificeerde SA Associate, Security Specialty en Analytics Specialty-certificeringhouder, gevestigd in Queens, New York.

Aditya Samant is een veteraan in de relationele database-industrie met meer dan twintig jaar ervaring in het werken met commerciële en open-sourcedatabases. Momenteel werkt hij bij Amazon Web Services als Principal Database Specialist Solutions Architect. In zijn rol besteedt hij tijd aan het werken met klanten aan het ontwerpen van schaalbare, veilige en robuuste cloud-native architecturen. Aditya werkt nauw samen met de serviceteams en werkt mee aan het ontwerpen en leveren van de nieuwe functies voor de beheerde databases van Amazon.

spot_img

Laatste intelligentie

spot_img