REX sur le service DMS proposé par AWS dans le cadre de migrations de bases de données

AWS - Test de Database Migration Service (DMS)

Contexte

Dans le cadre de migration d’infrastructures vers AWS, nous avons besoin de migrer les bases de données en réduisant au minimum le downtime.Pour se faire, AWS nous propose son service Database Migration Service (DMS) : https://aws.amazon.com/fr/dms/

TL;DR: avec DMS on spécifie une base de données source(un MySQL hébergé en premise),une base de données cible(une instance RDS) et une copie des données de la source vers la cible est réalisée avec la possibilité de mettre en place une réplication (pas de setup spécifique à réaliser, c’est «presque» magique). Il faut préalablement rendre la base de données accessible pour AWS (n’oubliez pas le filtrage!).

Mise en place

Ci-dessous les actions à réaliser dans la console AWS pour effectuer une copie d’une base de données que l’on appellera "testdatabase".

Subnet groups

Il faut créer un groupe de subnet dans lequel seront renseignés au moins deux subnets qui pourront accéder à l’instance RDS présente dans le VPC. Ces subnets devront aussi être rattachés à une table de routage possédant une route pour sortir vers l’extérieur (0.0.0.0/0 -> IGW ou NATGW).

aws-database-1.png

Replication instances

Une instance de réplication est nécessaire afin de faire le lien entre la source et la target. On prendra soin de cocher la case «Publicly accessible» afin qu’une IP publique lui soit allouée et qu’on autorise au niveau des firewall Claranet cette IP à accéder à la base de données.

aws-database-2.png

Endpoints

Il s’agit de renseigner le serveur source et cible pour copier les données et mettre en place la réplication

  • Source : serveur de base de données on premise, soit une IP publique et le port MySQL
  • Target : instance RDS située dans le VPC du compte AWS, soit un alias et le port MySQL

aws-database-3.png

dms_04.png

Tasks

Il faut créer une task qui permettra de lancer le job d’import des données et de réplication. Par exemple, si on souhaite récupérer/répliquer une base nommée ‘testdatabase’, il nous faut renseigner dans mapping method le code ci-dessous :

aws-database-4.png

"rules": [
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "testdatabase",
"table-name": "%"
},
"rule-action": "include"
}
]

Les limites identifiées

  • Le format des logs binaires doit être obligatoirement en mode ROW (MIXED et STATEMENT KO) sur le serveur source.
  • Les drop table ne fonctionnent pas à travers la «réplication» mise en place par DMS. Fonction non prise en charge pour le moment.
  • Le reste des limitations sont disponibles ici : http://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html

Article rédigé par Benjamin Rabiller