Vous êtes sur la page 1sur 20

MONTER UNE BASE DE DONNEE SUR

RDS

Pourquoi utiliser RDS ?


Amazon RDS (Relational Database Service) est le service de gestion des bases de
données d'Amazon. Il vous facilite la vie si vous avez besoin de faire tourner une base de
données pour vos applications.

Au départ, j'avoue que je n'en comprenais pas l'intérêt. Pourquoi faire tourner un serveur
RDS à part alors qu'on peut installer un logiciel de base de données (comme MySQL)
directement sur le serveur EC2 où on peut tout faire ?

Commençons donc par découvrir pourquoi RDS est si intéressant. 🙂

IaaS, PaaS... DBaaS

Vous vous souvenez des termes IaaS et PaaS que je vous avais présentés au début de ce
cours ?

 IaaS (Infrastructure as a Service) : on vous fournit des serveurs "bruts" et vous


pouvez en faire ce que vous voulez. Vous avez beaucoup de liberté, mais il
faut installer vous-mêmes les logiciels et penser à les mettre à jour (ce qui prend
du temps). Vous avez un accès complet au serveur en SSH.
 PaaS (Platform as a Service) : on vous fournit des services prêts à l'emploi, par
exemple un service de stockage de fichiers. L'utilisation est très facile, mais
chaque outil ne sert qu'à un rôle à la fois (par exemple : un service pour stocker
des fichiers, un autre pour gérer vos noms de domaine...). Vous n'avez pas accès
au serveur en SSH.

Amazon RDS est une forme particulière de PaaS qu'on appelle... DBaaS (Database as a
Service). Je sais, je sais, ça en fait des termes barbares. 😝

Le concept est simple mais redoutablement efficace. Plutôt que d'installer et configurer
vous-mêmes le serveur de base de données, vous commandez un serveur spécifique et
optimisé pour votre base de données.

Mais on est d'accord que je peux installer un serveur MySQL sur mon instance EC2 ?

Oui bien sûr ! Amazon ne vous l'interdit pas du tout. Mais en général, vous allez adorer
utiliser RDS car cela vous apporte de nombreux avantages.
Pourquoi utiliser RDS ?

Alors pourquoi utiliser RDS ? Les raisons sont nombreuses. En voici les principales :

 Vous n'avez pas à installer le logiciel de base de données (MySQL,


PostgreSQL, MariaDB, Oracle...). C'est déjà fait pour vous !
 Vous n'avez pas à configurer le moteur de base de données. La configuration
de base est déjà optimisée pour vous.
 Vous n'avez pas à choisir le matériel de vos serveurs. Amazon a déjà choisi des
serveurs optimisés pour la gestion des bases de données.
 Vous n'avez pas besoin de mettre à jour le logiciel de base de données. C'est
fait pour vous par Amazon. Cela vous fait une source de stress en moins : les
patchs de sécurité sont régulièrement installés pour vous.
 La sauvegarde et la restauration des bases de données peut se faire en
quelques clics. Et rien que ça, ça n'a pas de prix.
 Vous pouvez augmenter la puissance du serveur si nécessaire, en fonction de
votre trafic (comme EC2).
 Vous pouvez lancer facilement plusieurs serveurs de base de données en
réplication (la base de données est copiée en temps réel sur plusieurs serveurs).
Cela vous sera très pratique si votre site devient gros !

Voilà un petit aperçu pour vous mettre l'eau à la bouche ! 😋

Il y a quand même des rares cas où vous voudrez peut-être gérer vous-mêmes le serveur
de base de données (par exemple en l'installant sur votre instance EC2). C'est le cas si
vous voulez faire très simple et tout mettre sur un seul serveur, ou au contraire si vous
avez des besoins de configuration extrêmement spécifiques.

Vous hésitez ? Alors je vous conseille de faire l'effort d'apprendre à utiliser RDS. Je suis
certain que vous apprécierez les avantages que cela vous apporte !

Les moteurs de base de données disponibles

Quand vous utilisez RDS, vous avez le choix de votre moteur de base de données. Les
plus connus sont disponibles, vous devriez trouver votre bonheur :

 MySQL
 MariaDB (qui est un fork de MySQL)
 PostgreSQL
 Oracle
 SQL Server
 ... et Amazon Aurora
Les types de base de données gérés par RDS sont nombreux !

A vous de choisir le moteur que vous préférez et que vous avez l'habitude d'utiliser ! Il
sera installé et configuré pour vous.

Qu'est-ce qu'Amazon Aurora ?

Il s'agit d'un moteur de base de données spécifique conçu par Amazon. Il est :

 Compatible avec MySQL et PostgreSQL. Si vous avez déjà une base de


données MySQL ou PostgreSQL, vous devriez donc pouvoir utiliser Aurora
quasiment sans problème. Vous pouvez par exemple tout à fait l'administrer avec
un outil comme phpMyAdmin si vous le souhaitez.
 Propriétaire. Le code source d'Aurora n'est pas ouvert, ce qui pourra en refroidir
certains. En revanche, étant compatible avec MySQL et PostgreSQL, vous pouvez
normalement importer et exporter les données à tout moment si nécessaire.
 Plus rapide. Amazon indique qu'il est 5x plus rapide que MySQL et 3x plus
rapide que PostgreSQL. Il est surtout optimisé pour le cloud d'Amazon.

A vous de voir si cela vous intéresse. Si vous démarrez un nouveau projet, ce n'est pas
très risqué d'essayer Aurora (car il est compatible MySQL et PostgreSQL), mais si vous
avez déjà un gros projet sous les bras, faites bien votre choix en conscience !

A noter qu'Amazon propose aussi une base de données NoSQL : DynamoDB. Il s'agit
d'une base de données propriétaire spécifique à Amazon, sur le même principe qu'Aurora.
Le service DynamoDB est proposé à part. Il ne fait donc pas partie de RDS (qui est
réservé aux bases de données relationnelles).

Lancer un serveur RDS


Allez, on s'y met ! Voyons comment lancer un serveur de base de données entièrement
géré dans le cloud (eh, ça sonne bien ce que je viens de dire 😎).

Je vous propose ici de découvrir comment lancer un serveur RDS utilisant MySQL. Si
vous utilisez un autre moteur de base de données, la procédure sera la même.
L'interface de RDS

Rendez-vous sur la section Relational Database Service (RDS) sur votre console AWS.
La page d'accueil devrait ressembler à ceci la première fois :

L'accueil de l'interface de RDS

Premier constat : il y a moins de sous-menus dans RDS que dans EC2. Ouf ! 😅
Et en effet, vous allez voir que le service est heureusement moins complexe.

Voici quelques-un des menus à connaître :

 Instances : la liste de vos serveurs RDS.


 Clusters : si vous avez un gros trafic et que vous voulez copier votre base de
données en temps réel sur plusieurs serveurs, vous aurez besoin de créer un
cluster pour regrouper vos serveurs. C'est une fonctionnalité plus avancée que
nous ne verrons pas dans ce cours d'introduction.
 Instantanés : les sauvegardes de vos bases de données.

Il y a d'autres sections comme vous le voyez : groupes de sous-réseaux, de paramètres,


d'options, évènements... On peut s'en servir pour faire une configuration plus poussée de
nos serveurs et suivre leur utilisation. Je vous propose de les laisser de côté pour l'instant.

Lancer une instance RDS

Pour lancer une instance de serveur RDS, rendez-vous dans le menu "Instances". Il ne
devrait y avoir aucune instance lancée pour l'instant :

La liste des instances RDS est pour l'instant vide

Deux boutons principaux vous sont proposés :

 Lancement d'une instance DB : pour lancer un nouveau serveur.


 Restaurer à partir de S3 : pour restaurer un serveur depuis une sauvegarde
précédente. Pourquoi S3 ? Parce que certaines personnes stockent leurs
sauvegardes sur S3, le service de stockage de fichiers d'Amazon que nous verrons
par la suite.

Nous allons lancer un nouveau serveur. Cliquez donc sur "Lancement d'une instance
DB".

Choix du moteur

La première question qu'on nous pose est celle du choix du moteur de base de données :

Choisissez le moteur de base de données qui sera installé sur l'instance RDS

Comme promis, il y a du choix ! Aurora est optimisé pour RDS et compatible avec
MySQL et PostgreSQL, mais il n'est pas open source et n'est pas disponible dans l'offre
gratuite. Nous allons donc utiliser MySQL ici.

Cas d'utilisation

On nous demande ensuite ce que nous comptons faire de la base de données :


Indiquez ce que vous comptez faire de votre base de données

Amazon essaie de vous inciter à utiliser Aurora, ce petit malin. 😛

En fait, vous avez surtout le choix entre le mode "production" et le mode "Dev/Test". Le
mode production est optimisé : le serveur est répliqué et il est plus puissant. C'est
effectivement conseillé pour un gros site qui tourne.

Pour nos besoins de test, le mode "Dev/Test" ira très bien. D'ailleurs, c'est la seule option
qui soit gratuite.

Spécification de l'instance

On vous demande ensuite de faire quelques choix importants pour configurer votre
serveur :
Choisissez la version de MySQL

On vous demande tout d'abord quelle version de MySQL vous souhaitez utiliser. A moins
que vous ayez un besoin précis, laissez la valeur par défaut.

Plus bas sur la même page, vous trouverez de nombreuses autres options :

Choisissez le type de serveur et la taille de la base

Une option sur la page permet d'afficher uniquement les choix compatibles avec l'usage
gratuit. N'hésitez pas à la cocher.
Il existe comme vous le voyez plusieurs types de serveurs de base de données, un peu
comme les instances EC2. Le modèle utilisable gratuitement s'appelle db.t2.micro.

Il vous faut ensuite donner un nom à votre instance (appelez-la comme vous voulez).
Vous devrez aussi indiquer un nom d'utilisateur pour vous connecter à la base et un mot
de passe :

Configurez le nom de l'instance, l'utilisateur et son mot de passe

OK, on peut passer à l'étape suivante !

Configuration des paramètres avancés

Sur ce nouvel écran, vous avez là encore de nombreuses options. On commence par vous
demander dans quel VPC vous souhaitez lancer votre serveur. C'est une option
importante :
Configuration du VPC

Le VPC est un sous-réseau qui vous permet de "regrouper" vos serveurs entre eux, pour
qu'ils communiquent plus facilement et en toute sécurité.

Amazon a fait une illustration qui explique bien le concept, je me permets de la reprendre
ici sans vergogne :
Avec la bonne
configuration, votre serveur RDS est "protégé" du monde extérieur

Le VPC est un sous-réseau qui vous permet de créer une zone dans laquelle vos
serveurs peuvent parler librement entre eux.

Si vous désactivez bien "Accessibilité publique" dans les options, alors votre serveur
RDS n'aura même pas d'IP publique. Cela voudra dire qu'il ne sera tout simplement pas
accessible depuis Internet, et c'est une bonne chose. Vous n'imaginez pas le nombre de
gens dont le boulot consiste à chercher des serveurs SQL mal configurés ouverts à tous
sur le net. 😈
Bien sûr, pour des raisons pratiques, vous pouvez ouvrir votre serveur SQL (en indiquant
"Accessibilité publique : oui"). Il faut simplement retenir qu'il est préférable d'éviter cela
si vous en avez la possibilité.

Plus bas sur la page, vous pouvez aussi demander à créer une première base de
données à l'intérieur de votre instance. Si vous ne le faites pas maintenant, pas de
panique : vous pourrez toujours le faire par la suite.

Ne confondez pas instance RDS et base de données !

 Une instance RDS est un serveur. Celui-ci peut contenir plusieurs bases données
(autant qu'on veut en fait, tant qu'il reste de la place).
 Une base de données regroupe plusieurs tables. En général, vous avez une base
de données par application.
Une autre option vous permet de choisir la durée de sauvegarde (par défaut : 7 jours).
Celles-ci sont mises en place automatiquement et sauvegardée pendant 7 jours par défaut.

Ouf, notre instance est lancée !

Nous pouvons maintenant voir que notre instance est lancée et tourne, si nous allons dans
la section "Instances" de RDS.

L'instance RDS a démarré !

Si vous cliquez sur le nom de l'instance, vous aurez tous les détails sur celle-ci. L'un de
ceux qui vous sera le plus utile est le point de terminaison de l'instance (son adresse).
Prenez-en note, vous en aurez besoin pour indiquer où se trouve votre serveur SQL afin
de vous y connecter dans vos scripts !

TP : utiliser RDS depuis son serveur web EC2


Nous avons maintenant :

 Un serveur web EC2


 Un serveur RDS

Je vous propose d'apprendre à faire communiquer les deux ! Nous allons réutiliser le TP
Mini-chat de mon cours PHP, que nous allons faire tourner sur AWS. 😊
Si vous regardez bien, vous verrez que l'AMI LAMP de Bitnami fournit un
serveur MySQL intégré. En théorie, on pourrait donc se contenter du serveur SQL dans
EC2 mais... on a déjà eu cette conversation ensemble n'est-ce pas ? RDS présente de
nombreux avantages (ne serait-ce que les backups) qui font que je vous recommande de
l'utiliser si vous le pouvez.

Accéder au serveur RDS

Comment faire pour accéder à votre base de données sur RDS ? Tout dépend comment
vous avez configuré l'accessibilité publique lors du lancement du serveur :

 Si vous avez autorisé l'accessibilité publique : c'est le plus simple (mais aussi le
moins sécurisé). Vous pouvez administrer votre serveur depuis votre ordinateur
avec un logiciel comme MySQL Workbench.
 Si vous avez interdit l'accessibilité publique : c'est plus sécurisé, mais ça veut
donc dire que vous ne pouvez pas toucher au serveur RDS depuis votre machine.
Vous devez passer par EC2.

Notez que vous pouvez changer l'accessibilité publique du serveur à tout moment, en
cliquant sur "Actions d'instance" > "Modifier" depuis RDS.

Je vous propose dans ce chapitre de partir sur la solution la plus simple.

Se connecter au serveur RDS depuis sa machine

Pour pouvoir vous connecter depuis votre machine, vérifiez :

 Que votre serveur RDS autorise l'accessibilité publique (modifiez sa configuration


au besoin)
 Que le groupe de sécurité utilisé par votre serveur RDS autorise bien les
connexions à MySQL sur le port 3306 depuis votre IP. Les groupes de sécurité
peuvent être configurés dans l'interface EC2 d'AWS.

Si ce n'est pas fait, il y a de fortes chances que le serveur ne réponde pas lorsque vous
vous y connectez.

Depuis votre machine, ouvrez un client SQL comme MySQL Workbench.

Créez une nouvelle connexion en indiquant le point de terminaison (nom d'hôte) de votre
serveur RDS. Je vous rappelle que cette information peut être trouvée si vous cliquez sur
votre serveur RDS.
Si vous cliquez sur votre instance RDS, vous pouvez retrouver son point de terminaison
(nom d'hôte)

Indiquez aussi le nom d'utilisateur et le mot de passe que vous aviez définis pour le
serveur (il faudra faire "Store in Keychain" pour stocker le mot de passe).

Configurez la connexion à votre serveur RDS


Si vous cliquez sur "Test Connection", vous devriez avoir confirmation que cela
fonctionne. Si ce n'est pas le cas, revérifiez les points que je vous ai indiqués juste avant
(accessibilité publique et groupe de sécurité).

Cliquez ensuite sur la connexion nouvellement créée pour vous retrouver sur
l'administration du serveur MySQL.

Créer sa base de données

Vous voilà donc connectés à votre base de données !


Workbench est connecté à votre base de données

Vous pouvez faire tout ce que vous voulez à partir de là. Workbench est un outil très
complet, probablement plus complexe que PhpMyAdmin.

Vous pouvez créer autant de bases de données que vous voulez, y créer des tables, etc.
Vous avez un bouton en haut pour créer une nouvelle base (nouveau schéma) et de
nouvelles tables.

Les boutons de la barre d'outils nous


permettent de créer de nouvelles bases et tables

Vous pouvez aussi choisir d'importer un fichier SQL si vous en avez un sous la main.

Pour ma part, je vais créer une base "tests" et une table "minichat" comme indiqué dans le
TP minichat.

Création de la table minichat

Une fois la structure créée, notre script devrait pouvoir tourner ! Et si on l'uploadait sur
notre serveur web sur EC2 ?

Envoi des fichiers sur EC2

On va prendre les 2 fichiers  minichat.php  et  minichat_post.php  issus du TP Mini-


chat et les envoyer sur le serveur EC2.
Attention : vous devez penser à modifier auparavant le code de ces 2 fichiers pour
indiquer le nom d'hôte du serveur, votre login et votre mot de passe. Ne vous contentez
pas de copier-coller mon code ! Par exemple :

<?php
$bdd = new PDO('mysql:host=dbinstance.cmo5fnknxzqh.us-east-
2.rds.amazonaws.com;dbname=test;charset=utf8', 'mateo',
'VOTRE_MOT_DE_PASSE_ICI');

Envoyez les fichiers sur EC2 avec un logiciel SFTP comme FileZilla, comme vous avez
appris à le faire précédemment.
Envoyez les fichiers du minichat par SFTP

Bien, il ne reste plus qu'à tester !


Tester l'application minichat

Si on se rend maintenant à l'adresse de notre serveur, suivie de  minichat.php  , on


devrait retrouver notre chat !

Vous aimerez peut-être aussi