Configuration d'une réplication basée sur GTID avec une instance source externe
Vous pouvez configurer la réplication basée sur les identifiants de transaction globaux (GTID) à partir d'une instance MySQL externe vers une instance de base de données RDS for MySQL. Lorsque vous configurez une instance source externe et un réplica sur Amazon RDS, surveillez les événements de basculement de l'instance de base de données Amazon RDS qui constitue votre réplica. En cas de basculement, l'instance de base de données qui est votre réplica peut alors être recréée sur un nouvel hôte avec une autre adresse réseau. Pour plus d'informations sur la surveillance des événements de basculement, consultez Utiliser la notification d'événements d'Amazon RDS.
La réplication GTID est uniquement prise en charge sur RDS for MySQL version 5.7.23 et les versions MySQL 5.7 supérieures, ainsi que sur RDS for MySQL 8.0.26 et les versions 8.0 supérieures.
Pour configurer une réplication basée sur des identifiants de transaction globaux (GTID) avec une instance source externe
-
Préparez la réplication basée sur des identifiants de transaction globaux (GTID) :
-
Assurez-vous que la réplication basée sur des identifiants de transaction globaux (GTID) est activée sur la base de données MySQL externe. Pour ce faire, assurez-vous que les paramètres suivants de la base de données externe sont définis sur les valeurs spécifiées :
gtid_mode
–ON
enforce_gtid_consistency
–ON
Pour plus d'informations, consultez la rubrique Replication with global transaction identifiers
(Réplication avec identifiants de transaction globaux) dans la documentation MySQL. -
Assurez-vous que le groupe de paramètres associé à l'instance de base de données contient la configuration de paramètres suivante :
-
gtid_mode
–ON
,ON_PERMISSIVE
, ouOFF_PERMISSIVE
-
enforce_gtid_consistency
–ON
Pour plus d'informations sur les groupes de paramètres, consultez Utilisation des groupes de paramètres.
-
-
Si vous modifiez le groupe de paramètres de l'instance de base de données, redémarrez celle-ci. Pour plus d'informations, consultez Redémarrage d'une instance de base de données.
-
-
Passez l'instance MySQL source en lecture seule.
mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
-
Copiez la base de données de l'instance externe vers l'instance de base de données Amazon RDS à l'aide de
mysqldump
. Pour les bases de données très volumineuses, il se peut que vous vouliez utiliser la procédure décrite dans Importation de données vers une base de données MariaDB ou MySQL Amazon RDS avec un temps d'arrêt réduit.Pour Linux, macOS ou Unix :
mysqldump --databases
database_name
\ --single-transaction \ --compress \ --order-by-primary \ -ulocal_user
\ -plocal_password
| mysql \ --host=hostname \ --port=3306 \ -uRDS_user_name
\ -pRDS_password
Pour Windows :
mysqldump --databases
database_name
^ --single-transaction ^ --compress ^ --order-by-primary ^ -ulocal_user
^ -plocal_password
| mysql ^ --host=hostname ^ --port=3306 ^ -uRDS_user_name
^ -pRDS_password
Note Veillez bien à ce qu'il n'y ait pas d'espace entre l'option
-p
et le mot de passe saisi.Pour spécifier le nom d'hôte, le nom d'utilisateur, le port et le mot de passe afin de vous connecter à votre instance de base de données Amazon RDS, utilisez les options
--host
,--user (-u)
,--port
et-p
dans la commandemysql
. Le nom d'hôte est le nom du système de nom de domaine (DNS) du point de terminaison de l'instance de base de données Amazon RDS, par exemple,myinstance.123456789012.us-east-1.rds.amazonaws.com
. Vous pouvez trouver la valeur du point de terminaison dans la AWS Management Console au niveau des détails de l'instance. -
Transformez l'instance MySQL source en instance accessible de nouveau en écriture.
mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
Pour plus d'informations sur la création de sauvegardes en vue de les utiliser avec la réplication, consultez la documentation MySQL
. -
Dans la AWS Management Console, ajoutez l'adresse IP du serveur qui héberge la base de données externe au groupe de sécurité du cloud privé virtuel (VPC) pour l'instance de base de données Amazon RDS. Pour de plus amples informations sur la modification d'un groupe de sécurité de VPC, veuillez consulter Security Groups for Your VPC (Groupes de sécurité pour votre VPC) dans le Guide de l'utilisateur Amazon VPC.
L'adresse IP peut changer lorsque les conditions suivantes sont réunies :
-
Vous utilisez une adresse IP publique pour la communication entre l'instance source externe et l'instance de base de données.
-
L'instance source externe a été arrêtée et redémarrée.
Si ces conditions sont réunies, vérifiez l'adresse IP avant de l'ajouter.
Vous devrez peut-être aussi configurer votre réseau local pour autoriser les connexions à partir de l'adresse IP de votre instance de base de données Amazon RDS. Cela permet la communication entre votre réseau local et votre instance MySQL externe. Pour obtenir l'adresse IP de l'instance de base de données Amazon RDS, utilisez la commande
host
.host
db_instance_endpoint
Le nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS.
-
-
En utilisant le client de votre choix, connectez-vous à l'instance externe et créez un utilisateur à utiliser pour la réplication. Utilisez ce compte exclusivement pour la réplication et limitez-le à votre domaine pour améliorer la sécurité. Voici un exemple de.
CREATE USER '
repl_user
'@'mydomain.com
' IDENTIFIED BY 'password
'; -
Pour l'instance externe, attribuez les privilèges
REPLICATION CLIENT
etREPLICATION SLAVE
à votre utilisateur de réplication. Par exemple, pour accorder les privilègesREPLICATION CLIENT
etREPLICATION SLAVE
sur toutes les bases de données à l'utilisateur «repl_user
» de votre domaine, émettez la commande suivante.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user
'@'mydomain.com
' IDENTIFIED BY 'password
'; -
Transformez l'instance de base de données Amazon RDS en réplica. Pour cela, connectez-vous d'abord à l'instance de base de données Amazon RDS en tant qu'utilisateur principal. Identifiez ensuite la base de données MySQL externe comme instance principale de réplication à l'aide de la commande mysql.rds_set_external_master_with_auto_position. Voici un exemple.
CALL mysql.rds_set_external_master_with_auto_position ('
mymasterserver.mydomain.com
', 3306, 'repl_user
', 'password
', 0, 0);Note Sur RDS for MySQL, vous pouvez décider d'utiliser la réplication retardée en exécutant à la place la procédure stockée mysql.rds_set_external_master_with_delay. Sur RDS for MySQL, une des raisons d'utiliser la réplication différée est d'activer la reprise après sinistre avec la procédure stockée mysql.rds_start_replication_until_gtid.
-
Sur l'instance de base de données Amazon RDS, émettez la commande mysql.rds_start_replication pour démarrer la réplication.
CALL mysql.rds_start_replication;