Utilisez cette méthode si votre instance MySQL auto-gérée peut être mise hors ligne pendant la migration. Vous effectuez une sauvegarde physique complète avec Percona XtraBackup, vous la transférez vers Object Storage Service (OSS), puis vous l'importez via la console ApsaraDB RDS pour créer une nouvelle instance RDS.
Si votre base de données ne peut pas être mise hors ligne, utilisez Data Transmission Service (DTS) pour migrer les données avec un temps d'arrêt minimal.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance MySQL auto-gérée qui répond aux exigences de migration. Consultez la liste complète dans la section Limites.
Un bucket OSS situé dans la même région que votre instance RDS de destination. Si nécessaire, Créez des buckets.
Go et Unzip installés sur l'hôte exécutant l'instance MySQL auto-gérée.
Limites
Veuillez examiner les contraintes suivantes avant de poursuivre :
|
Catégorie |
Contrainte |
|
|
MySQL version |
La source doit exécuter MySQL 5.7.32 ou une version antérieure, ou MySQL 8.0.18 ou une version antérieure. La source et la destination doivent utiliser la même version de MySQL. |
|
|
Outil de sauvegarde |
MySQL 5.7 nécessite Percona XtraBackup 2.4. MySQL 8.0 nécessite Percona XtraBackup 8.0. |
|
|
Étendue de la sauvegarde |
Sauvegarde complète uniquement. Les fichiers de sauvegarde différentielle et les journaux ne sont pas pris en charge. Les données incrémentielles générées après la fin de la sauvegarde ne sont pas incluses. |
|
|
Options XtraBackup |
Les options |
|
|
Format du fichier de sauvegarde |
Le fichier doit être au format |
|
|
Chiffrement OSS |
Définissez Encryption Method sur None lors de la création du bucket OSS. Les buckets chiffrés ne sont pas pris en charge. |
|
|
Région OSS |
Le bucket OSS doit se trouver dans la même région que l'instance RDS. |
|
|
Taille du fichier OSS |
Maximum de 16 TB lors du téléchargement par parties via CLI. |
|
|
Répertoire de données |
Le répertoire |
grep datadir` pour vérifier. |
|
Configuration InnoDB |
|
|
|
Destination |
Les données ne peuvent être restaurées que sur une nouvelle instance RDS, et non sur une instance existante. La destination doit être une instance à la demande (pay-as-you-go) exécutant MySQL 5.7 ou MySQL 8.0 sur RDS Basic Edition avec des SSD standard. |
|
|
Stockage |
L'instance RDS de destination doit disposer d'un espace de stockage supérieur à celui des données sources. |
|
|
Éléments non migrés |
Les comptes utilisateur, les fonctions personnalisées, les procédures stockées et les informations de fuseau horaire ne sont pas migrés. Notez ces éléments avant la migration et ajoutez-les manuellement ensuite. |
|
|
Réplication GTID |
Si vous prévoyez de répliquer des données incrémentielles après la migration, activez la réplication basée sur GTID et définissez |
|
|
AliyunRDSImportRole |
Après avoir autorisé ApsaraDB RDS à accéder à OSS, un rôle RAM nommé |
|
|
Conservation de la sauvegarde |
Ne supprimez pas le fichier de sauvegarde d'OSS avant la fin de la migration. |
Identifier les objets non migrés
Exécutez la requête suivante sur votre instance source pour lister les procédures stockées et les fonctions que vous devrez recréer après la migration :
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE
FROM information_schema.routines
WHERE ROUTINE_SCHEMA NOT IN ('sys', 'information_schema', 'performance_schema', 'mysql');
Notez également les comptes utilisateur et les paramètres de fuseau horaire avant de poursuivre.
Fonctionnement
Installez Percona XtraBackup sur l'hôte exécutant l'instance MySQL auto-gérée.
Installez MySQL Backup Helper, qui fournit
backup_helper(vérification de compatibilité) etoss_stream(téléchargement vers OSS).Exécutez une vérification de compatibilité, effectuez une sauvegarde complète et transférez-la directement vers OSS. Importez ensuite le fichier de sauvegarde via la console ApsaraDB RDS pour créer une nouvelle instance RDS.
L'environnement utilisé dans ce guide est une instance Elastic Compute Service (ECS) exécutant CentOS Linux V8.3.2011. Pour les étapes spécifiques à Ubuntu, consultez l'Annexe 1 : Installer Percona XtraBackup sur Ubuntu et l'Annexe 2 : Installer Go et Unzip sur Ubuntu.
Étape 1 : Installer Percona XtraBackup
Étape 2 : Installer MySQL Backup Helper
MySQL Backup Helper fournit deux outils : backup_helper vérifie si votre instance prend en charge la migration, et oss_stream transfère la sauvegarde directement vers OSS.
Installer les dépendances (CentOS)
sudo yum install -y go
sudo yum install -y unzip
Pour Ubuntu, consultez l'Annexe 2.
Compiler MySQL Backup Helper
-
Téléchargez le code source :
wget https://github.com/aliyun/mysql-backup-helper/archive/refs/heads/master.zip -
Décompressez le package :
unzip master.zip -
Compilez
backup_helper:cd mysql-backup-helper-master go build -a -o backup_helper main.go -
Compilez
oss_stream:cd oss_stream go build -a -o oss_stream oss_stream.go
Étape 3 : Sauvegarder et migrer
3,1 Vérifier la compatibilité de la migration
Exécutez backup_helper pour vérifier que l'instance source prend en charge la migration :
cd ~/mysql-backup-helper-master && ./backup_helper \
-host <host-ip> \
-port <port> \
-user <username> \
--password <password>
Remplacez les espaces réservés par vos valeurs réelles :
|
Espace réservé |
Description |
Exemple |
|
|
Adresse IP de l'hôte exécutant l'instance MySQL |
|
|
|
Port MySQL |
|
|
|
Nom d'utilisateur du compte root |
|
|
|
Mot de passe du compte root |
|
Si la vérification réussit, passez à l'étape suivante.
3,2 Sauvegarde et envoi vers OSS
Percona XtraBackup enregistre la ligne de commande complète (y compris les mots de passe) dans le fichier xtrabackup_info au sein de la sauvegarde. Une fois l'envoi terminé, assurez-vous que ce fichier n'expose pas d'identifiants sensibles.
Exécutez la sauvegarde et diffusez-la directement vers votre compartiment OSS. Sélectionnez la commande correspondant à votre version MySQL.
MySQL 5.7
MySQL 5.7 — utilise innobackupex :
innobackupex --backup \
--host=<host-ip> \
--port=<port> \
--user=<username> \
--password=<password> \
--stream=xbstream \
--compress <temp-dir> | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId <AccessKey-ID> \
-accessKeySecret <AccessKey-secret> \
-bucketName <bucket-name> \
-endpoint <OSS-endpoint> \
-objectName <backup-file-name>
Exemple :
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ****** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb
MySQL 8.0
MySQL 8.0 — utilise xtrabackup :
xtrabackup --backup \
--host=<host-ip> \
--port=<port> \
--user=<username> \
--password=<password> \
--stream=xbstream \
--compress <temp-dir> | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId <AccessKey-ID> \
-accessKeySecret <AccessKey-secret> \
-bucketName <bucket-name> \
-endpoint <OSS-endpoint> \
-objectName <backup-file-name>
Exemple :
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ******** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb
Remplacez les espaces réservés par vos valeurs réelles :
|
Espace réservé |
description |
Exemple |
|
|
Adresse IP de l'hôte exécutant l'instance MySQL |
|
|
|
Port MySQL |
|
|
|
Nom d'utilisateur du compte root |
|
|
|
Mot de passe du compte root |
|
|
|
Répertoire temporaire pour la sauvegarde |
|
|
|
Votre AccessKey ID Alibaba Cloud |
|
|
|
Votre secret AccessKey Alibaba Cloud |
|
|
|
Nom de votre compartiment OSS |
|
|
|
Endpoint de votre compartiment OSS |
|
|
|
Nom à attribuer à l'objet de sauvegarde dans OSS |
|
Pour les bases de données volumineuses, exécutez la commande avec nohup afin d'éviter toute interruption en cas de déconnexion de la session. MySQL 5.7 : MySQL 8.0 :
nohup sh -c 'innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI**************** -accessKeySecret ****** -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
nohup sh -c 'xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** -accessKeySecret ****** \
-bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
Une fois la sauvegarde terminée, le terminal affiche completed OK !.
Connectez-vous à la console OSS pour confirmer que le fichier a bien été envoyé. Si l'envoi a échoué, relancez la commande de sauvegarde.
Si OSS est temporairement indisponible, enregistrez d'abord la sauvegarde dans un fichier local, puis envoyez-la ultérieurement. Consultez la section Annexe 3 : Sauvegarde locale et envoi vers OSS.
3.3 Importation de la sauvegarde dans la console ApsaraDB RDS
Connectez-vous à la console ApsaraDB RDS. Dans la barre de navigation supérieure, sélectionnez la région de votre instance RDS de destination. Dans le volet de navigation de gauche, cliquez sur Backups.
Sous l'onglet User Backups, cliquez sur Import Backup.
-
Dans l'assistant Import Guide, lisez les instructions et cliquez sur Next jusqu'à atteindre l'étape 3. Import Data.
Les étapes 1. Back Up Source Database et 2. Upload Backup Files to OSS de l'assistant correspondent aux étapes 3,1 et 3,2 de ce guide.
-
À l'étape 3. Import Data, configurez les paramètres suivants et cliquez sur OK.
Si ApsaraDB RDS n'est pas autorisé à accéder à OSS, cliquez sur Authorize en bas de cette étape. Sur la page qui s'affiche, cliquez sur Confirm Authorization Policy .
Paramètre
description
MySQL version
Affiche automatiquement 5.7/8.0. Les versions MySQL 5.7 et MySQL 8.0 sont prises en charge.
Region
Région du compartiment OSS contenant le fichier de sauvegarde. Elle doit correspondre à la région de l'instance RDS de destination.
OSS Bucket
Compartiment OSS contenant le fichier de sauvegarde. Pour plus de détails, consultez la section Upload objects.
OSS file name
Objet de sauvegarde dans le compartiment OSS. La recherche floue et exacte est prise en charge. Le fichier doit être au format
_QP.XBou compressé au formatTAR.GZ.Note
Description facultative permettant d'identifier le fichier de sauvegarde.
Zone
Zone du compartiment OSS. La sélection d'une zone permet à ApsaraDB RDS de créer un snapshot en quelques secondes, réduisant ainsi le temps d'importation. La nouvelle instance RDS est créée dans cette zone.
Storage Capacity
Espace de stockage requis pour le fichier de sauvegarde. Valeurs valides : 20–6000 Go. Par défaut, la valeur est égale à 3 fois la taille du fichier de sauvegarde (minimum 20 Go).
-
Sous l'onglet User Backups, attendez que le statut Status de la tâche de vérification passe de Verifying à Completed.
ImportantLa durée de vérification varie. Les instances présentant une activité d'écriture élevée ou des transactions volumineuses lors de la sauvegarde peuvent nécessiter plus de temps pour la vérification.
Localisez le fichier de sauvegarde et cliquez sur Restore dans la colonne Actions.
-
Configurez les paramètres suivants et cliquez sur Next: Instance Configuration.
Paramètre
description
Zone of Primary Node
Zone de l'instance RDS principale. Ce paramètre s'affiche uniquement si vous n'avez pas sélectionné de zone lors de l'importation du fichier de sauvegarde.
Storage Type
ESSD PL1 : SSD Enterprise de niveau de performance 1. Standard SSD : Périphérique de stockage en bloc élastique standard. Pour plus de détails, consultez la section Storage types.
Instance Type
General-purpose (Entry-level) : Mémoire et E/S allouées exclusivement, avec CPU et stockage partagés. Consultez la liste complète dans la section Primary ApsaraDB RDS instance types.
Storage Capacity
Espace de stockage provisionné pour les fichiers de données, les fichiers système, les fichiers journaux et les fichiers de transaction. Ajustable par incréments de 5 Go.
-
Configurez les paramètres suivants et cliquez sur Next: Confirm Order.
Paramètre
description
Network Type
Sélectionnez VPC. Un cloud privé virtuel (VPC) offre une sécurité accrue et de meilleures performances. Vous devez également configurer les paramètres VPC et vSwitch of Primary Node. L'instance RDS et toute instance ECS que vous souhaitez connecter doivent se trouver dans le même VPC.
Parameter Template
Modèle de paramètres système ou personnalisé. Consultez la section Use a parameter template.
Time Zone
Fuseau horaire de l'instance RDS.
Table Name Case Sensitivity
Si les noms de table de l'instance source sont sensibles à la casse, sélectionnez Case-sensitive pour maintenir la cohérence.
-
Confirmez la configuration de l'instance dans la section Parameters, définissez le Purchase Plan, acceptez les conditions d'utilisation et cliquez sur Pay Now.
La création de l'instance par ApsaraDB RDS prend entre 1 et 5 minutes.
Étapes suivantes
Configurer la période de rétention des sauvegardes
Par défaut, le fichier de sauvegarde importé est conservé pendant 3 jours. Ajustez cette durée en fonction de vos besoins.
Connectez-vous à la console ApsaraDB RDS. Sélectionnez une région, puis cliquez sur Backups dans le volet de navigation de gauche.
Localisez le fichier de sauvegarde. Dans la colonne Expiration Time, cliquez sur Set Retention Period.
Sélectionnez une durée de rétention dans la liste déroulante ou choisissez l'option Custom Retention Period et saisissez une valeur.
Cliquez sur OK.
Si la date d'expiration dépasse 2099, la valeur affichée est Permanent .
Ajouter des tags au fichier de sauvegarde
Connectez-vous à la console ApsaraDB RDS. Sélectionnez une région, puis cliquez sur Backups.
Localisez le fichier de sauvegarde. Dans la colonne Tags, cliquez sur +Add.
-
Dans la boîte de dialogue, cliquez sur Create a label, renseignez les champs Key et Value, puis cliquez sur OK à côté des champs pour créer le tag. Enfin, cliquez sur OK en bas à droite.
Pour utiliser un tag existant, sélectionnez-le dans la liste déroulante Select the label .
Pour mettre à jour un tag, survolez-le et cliquez sur edit. Répétez l'étape 3 dans l'infobulle qui s'affiche.
Vérifier les données de journal pour la récupération incrémentielle
Si des modifications de données ont eu lieu sur l'instance source pendant la sauvegarde, le fichier de sauvegarde contient les informations de journal nécessaires à la récupération incrémentielle.
Connectez-vous à la console ApsaraDB RDS. Sélectionnez une région, puis cliquez sur Backups.
Localisez le fichier de sauvegarde et cliquez sur View Details dans la colonne Actions.
-
Dans le message qui s'affiche, examinez les données de journal :
Master_Log_File : premier fichier de journal contenant les données incrémentielles.
Master_Log_Position : première entrée de journal dans ce fichier contenant des données incrémentielles.
La période de rétention par défaut des enregistrements de validation des sauvegardes est de 7 jours. Après la migration, répliquez les données incrémentielles de l'instance source vers l'instance RDS de destination dès que possible.
Supprimer le fichier de sauvegarde
Si vous n'avez plus besoin du fichier de sauvegarde, supprimez-le pour réduire les coûts de stockage.
Connectez-vous à la console ApsaraDB RDS. Sélectionnez une région, puis cliquez sur Backups.
Localisez le fichier de sauvegarde et cliquez sur Delete dans la colonne Actions.
Dans la boîte de dialogue de confirmation, cliquez sur OK.
Mettre à niveau votre instance RDS
Après la migration, vous pouvez effectuer les opérations suivantes sur la nouvelle instance RDS :
Autres opérations dans l'onglet User Backups
Filtrer les colonnes : cliquez sur l'icône
en haut à droite pour afficher ou masquer des colonnes. Déplacez les colonnes entre la liste masquée (à gauche) et la liste affichée (à droite) à l'aide des icônes
et
. Cliquez sur OK.Exporter la liste des instances : cliquez sur l'icône
pour exporter les informations de sauvegarde sous forme de fichier CSV.Actualiser : cliquez sur l'icône
pour actualiser l'onglet User Backups.
Annexe 1 : Installer Percona XtraBackup sur Ubuntu
Annexe 2 : Installer Go et Unzip sur Ubuntu
Annexe 3 : Sauvegarder localement et télécharger vers OSS
Utilisez cette méthode si OSS est temporairement indisponible lors de l'exécution de la sauvegarde.
Étape 1 : Sauvegarder dans un fichier local
Sélectionnez la commande adaptée à votre version de MySQL.
MySQL 5.7 :
innobackupex --backup \
--host=<host-ip> --port=<port> \
--user=<username> --password=<password> \
--stream=xbstream --compress <temp-dir> \
> /<backup-dir>/<backup-file-name>_qp.xb
Exemple :
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb
MySQL 8.0 :
xtrabackup --backup \
--host=<host-ip> --port=<port> \
--user=<username> --password=<password> \
--stream=xbstream --compress <temp-dir> \
> /<backup-dir>/<backup-file-name>_qp.xb
Exemple :
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb
Étape 2 : Télécharger le fichier local vers OSS
Lorsque OSS est disponible, effectuez le téléchargement à l'aide de oss_stream :
cat /<backup-dir>/<backup-file-name>_qp.xb | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ******** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb
Exemple :
cat /root/backup_qp.xb | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId ******** \
-accessKeySecret LTAI**************** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb