Een AWS RDS Replica voor MySql maken

Amazon RDS is een eenvoudig op te zetten, door AWS beheerde databankdienst. Amazon RDS ondersteunt twee soorten replicatiemogelijkheden: 1) Multi-AZ Inzettingen 2) Leesreplica’s.

Bij Multi-AZ inzet slaat RDS een stand-by database replica op in een andere beschikbaarheidszone. Hier worden database updates gelijktijdig toegepast op de hoofdknoop en de replicaknoop. Als er een failover optreedt, verschuift RDS automatisch de operaties naar de stand-by replicaknooppunt zonder onderbrekingen in de databankoperaties te erven.

In het geval van een Read replica is er ook een standby replica, maar deze replica kan niet direct benaderd worden vóór een failover. Dit gedrag kan gebruikt worden voor het elastisch schalen van een DB instantie. Voor read-heavy database workloads kan men meerdere replica’s van een bron database instantie maken binnen dezelfde AWS regio of in een andere AWS regio.

Vanaf 11 jan. 2018 komen Amazon RDS leesreplica’s voor MySQL en zijn vork MariaDB databases nu met een voorziening voor inzet in meerdere beschikbaarheidszones.

De updates van de primaire of master database worden asynchroon naar de leesreplica’s overgebracht. Behalve voor schaalbaarheid kunnen leesreplica’s ook gebruikt worden voor disaster recovery. Bijvoorbeeld, als de primaire DB instantie uitvalt, kan de replica als een standalone instantie worden opgevraagd en namens de primaire database werken.

Wat zullen we behandelen?

In deze gids bekijken we hoe je een leesreplica van een MySql RDS database instantie kunt maken.

Belangrijke opmerkingen over leesreplica

Overweeg, voor we verder gaan, enkele van de belangrijkste opmerkingen betreffende Lees Replica’s:

  1. Het is een goede gewoonte om een leesreplica op dezelfde manier te configureren als een master DB instantie.
  2. De enige ondersteunde databasemotoren voor leesreplica’s zijn: MariaDB, Microsoft SQL Server, MySQL, Oracle, en PostgreSQL.
  3. Het standaard opslagtype van een gelezen replica is hetzelfde als dat van de bron DB instantie. Het opslagtype kan ook veranderd worden tijdens het aanmaken van de read replica.
  4. Merk op dat je bij het veranderen van de opslaggrootte die aan een read replica is toegekend, deze niet met minder dan 10 procent kunt vergroten.
  5. Circulaire replicatie wordt niet ondersteund door Amazon RDS.
  6. Replica’s van verschillende DB engines hebben verschillende verschillen.
  7. Een korte I/O opschorting treedt op bij het maken van een leesreplica.
  8. Voor het maken van een leesreplica moeten automatische back-ups op de bron DB instantie op ingeschakeld worden gezet. Dit kan door de waarde voor de bewaarperiode van de back-ups groter dan ‘0’ te zetten.

Read Replicas maken vanuit AWS Management Console

Voor we verder gaan met de read replica, maak je je DB instantie startklaar. Ga nu naar de RDS beheerconsole, hier zien we dat onze DB-instantie ‘database-1’ die op MySQL DB gebaseerd is, draait:

Primaire DB instantie

Opmerking: Om een read replica te maken kunnen we AWS console, AWS CLI en RDS API gebruiken.

Onze primaire database configuratie is als volgt:

DB instance identifier: ‘database-1’
Database engine: MySql
Database version: 8.0.28
Master username: ‘Your-username’
Master password: ‘Your-password’
DB instance class: db.t2.micro (Free-tier)
Storage size: 20 GiB 
Public Access: ‘No’
Automated backups: ‘Enabled’

Met de bovenstaande DB configuratie gaan we nu verder met de read replica:

Stap 1. Kies in de RDS beheerconsole de doel-DB-instantie. Klik nu op het ‘Action’ uitklapmenu dat hierboven staat en kies de optie ‘Create read replica’:

Lees Replica maken voor database-1

Stap 2. Op de volgende pagina zijn sommige instellingen al voorgeselecteerd op basis van de beste praktijk aanpak. Hier houden we ons aan de beste praktijk, maar we zijn vrij ze te veranderen.

Stap 3. Kies onder ‘Replica source’ de bron DB instantie voor de leesreplica. Voer een naam in voor de Read Replica DB instantie (‘DBreplica’ in ons geval). Kies ook een regio voor het lanceren van de leesreplica. We hebben voor de leesreplica dezelfde regio gekozen als die van de DB instantie.

Instellingen voor de replicadb

We houden ons aan de voorgekozen instellingen voor DB instance class en opslagdetails.

DB instantie configuratie

De optie storage auto-scaling is al ingeschakeld onder het onderdeel Storage.

Stap 4. Onder Multi-AZ inzet kun je fallback ondersteuning of stand-by voor de replica maken door ‘ja’ te kiezen. Voorlopig slaan we deze optie over:

Multi-AZ inzetconfiguratie optie

Stap 5. Onze gelezen replica is niet publiek toegankelijk, want we hebben de optie ‘Niet publiek toegankelijk’ gekozen. Ook de databank authenticatie is gebaseerd op ‘Password authentication’.

Toegankelijkheids- en authenticatieconfiguratie

Stap 6. Omdat we de versleutelingsoptie voor de bron-DB instantie niet hebben ingeschakeld, hebben we die hier ook overgeslagen. Op dezelfde manier blijven de bewaking, logging optie en verwijderbeveiliging onaangeroerd.

Stap 7. Binnen de Extra configuratie optie van de database kan de poortwaarde veranderd worden in een andere dan de standaard waarde. Om de tags naar snapshots te kopiëren, vink je het vakje ‘Copy tags to snapshots’ aan. De IAM DB authenticatie kan ingeschakeld worden om de database via een IAM gebruiker te beheren. Nog iets facultatiefs dat je kunt doen is het inschakelen van kleine database updates.

Resterende Instellingen

Stap 8. Klik nu op de knop ‘Create read replica’ om het replicacreatieproces te starten.

Lees Replica die gemaakt wordt

Als je liever de AWS CLI manier gebruikt, kun je de read replica maken door het ‘create-db-instance-read-replica’ commando te gebruiken met de vereiste cli opties:

$ aws rds create-db-instance-read-replica --db-instance-identifier DBreplica --source-db-instance-identifier database-1 --max-allocated-storage 1000

Afsluiting

In deze gids hebben we gezien hoe je een leesreplica voor een MySql databank kunt maken. Lees-replica’s verschaffen je een asynchroon gekopieerde alleen-lezen versie van de primaire database, en bieden je daarmee zowel schaalbaarheid als een stand-by hersteldatabase.