Export d'une instance MySQL
Exportez une instance MySQL vers un bucket Object Storage à l'aide des utilitaires de vidage du shell MySQL. Vous pouvez ensuite utiliser la fonctionnalité d'import de données pour importer des données du bucket Object Storage vers un système de base de données présent dans la même région.
Utilisez l'un des utilitaires de vidage suivants :
util.dumpInstance(outputUrl[, options])
: utilitaire d'export d'instance MySQL qui exporte tous les schémas compatibles vers un bucket Object Storage ou vers des fichiers locaux. Par défaut, cet utilitaire exporte des utilisateurs, des événements, des routines et des déclencheurs. Reportez-vous à la section Utilitaires de vidage.util.dumpSchemas(schemas, outputUrl[, options])
: utilitaire d'export de schéma MySQL qui exporte les schémas sélectionnés vers un bucket Object Storage ou vers des fichiers locaux.util.dumpTables(schema, tables, outputUrl[, options])
: utilitaire d'export de table MySQL qui exporte les tables sélectionnées d'un schéma vers un bucket Object Storage ou vers des fichiers locaux.
Lors de l'export des données, effectuez des vérifications de compatibilité sur les schémas. En cas de problème, l'utilitaire de vidage abandonne l'export et génère une liste détaillée des problèmes et suggère des étapes pour les corriger. En outre, en cas d'interruption de connexion lors de l'exportation des données, vous devez réexécuter l'utilitaire de vidage. Vous ne pouvez pas suspendre et reprendre l'exportation des données.
A l'aide de MySQL Shell
Servez-vous de l'utilitaire dumpInstance
shell MySQL pour exporter une instance MySQL vers un bucket Object Storage.
- MySQL Shell 8.0.27 ou version supérieure. Les exports créés par le shell MySQL version 8.0.27 ou supérieure ne peuvent pas être importés par des versions antérieures du shell MySQL. La dernière version de MySQL Shell est recommandée.
- Accès à Object Storage et à un bucket existant.
- Fichier de configuration valide. Si vous avez installé et configuré l'interface de ligne de commande à l'emplacement par défaut, vous disposez d'un fichier de configuration valide. Si vous n'avez pas installé et configuré l'interface de ligne de commande, vous devez l'installer ou créer un fichier de configuration manuellement. Reportez-vous à Fichier de configuration du kit SDK et de l'interface de ligne de commande.
Vérifications de compatibilité
Le service HeatWave comporte plusieurs restrictions liées à la sécurité qui ne sont pas présentes dans une instance MySQL. Utilisez l'option ocimds
de l'utilitaire de vidage pour effectuer des vérifications de compatibilité sur les données vidées. En cas de problème, l'utilitaire abandonne le vidage et génère une liste détaillée des problèmes et suggère des étapes pour les corriger.
La commande suivante indique comment effectuer des vérifications de compatibilité à l'aide de l'option ocimds
en mode dryrun
. Certains problèmes détectés par l'option ocimds
peuvent nécessiter que vous modifiiez manuellement le schéma pour qu'il puisse être chargé dans le service HeatWave.
util.dumpInstance("", {mode: "dryrun", ocimds: true})
Après avoir identifié les problèmes de compatibilité et les options de compatibilité, vous pouvez spécifier les options de la commande qui exporte les données.
util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", ocimds: true,
compatibility: ["force_innodb", "strip_definers", "strip_restricted_grants",
"skip_invalid_accounts", "strip_tablespaces", "ignore_missing_pks"] } )
Vous pouvez utiliser les options de compatibilité séparées par des virgules suivantes pour modifier automatiquement les données exportées, ce qui résout certains des problèmes de compatibilité suivants :
force_innodb
: le service HeatWave prend uniquement en charge le moteur de stockage InnoDB. Cette option modifie la clauseENGINE
des instructionsCREATE TABLE
qui utilisent des moteurs de stockage incompatibles. Elle remplace ces derniers par InnoDB.strip_definers
: supprime la clause"DEFINER=account"
des vues, des routines, des événements et des déclencheurs. Le service HeatWave nécessite des privilèges spéciaux pour créer les objets avec un créateur autre que l'utilisateur qui charge le schéma. Si la clauseDEFINER
est supprimée, les objets sont créés avec le créateur par défaut. Dans la clauseSQL SECURITY
des vues et des routines,DEFINER
est remplacé parINVOKER
. Cela garantit que les droits d'accès du compte interrogeant ou appelant ces objets sont appliqués, au lieu de ceux de l'utilisateur qui les a créés. Si votre modèle de sécurité de base de données requiert que les vues et les routines disposent de plus de privilèges que leur appelant, modifiez le schéma manuellement avant de le charger. Reportez-vous à DEFINER et à Sécurité SQL.strip_restricted_grants
: certains privilèges sont limités dans le service HeatWave. Privilèges tels queRELOAD
,FILE
,SUPER
,BINLOG_ADMIN
etSET_USER_ID
. Vous ne pouvez pas octroyer ces privilèges aux utilisateurs que vous créez. Cette option supprime ces privilèges des instructionsGRANT
vidées.skip_invalid_accounts
: vous ne pouvez pas exporter un utilisateur pour lequel aucun mot de passe n'est défini. Cette option permet d'ignorer ce type d'utilisateur.strip_tablespaces
: le service HeatWave comporte des restrictions sur les tablespaces. Cette option supprime l'optionTABLESPACE
des instructionsCREATE TABLE
afin que toutes les tables soient créées dans leurs tablespaces par défaut.- Indicateurs de clé primaire :
create_invisible_pks
: les clés primaires sont requises par les systèmes de base de données haute disponibilité. Si vous prévoyez d'exporter des données pour leur utilisation dans un système de base de donnée hautement disponible, ajoutez les clés primaires si elles ne sont pas définies sur les tables. Cet indicateur de compatibilité ajoute des clés primaires invisibles à chaque table qui en a besoin. Reportez-vous à Prérequis.ignore_missing_pks
: si vous n'avez pas l'intention d'importer dans un système de base de données haute disponibilité, cet indicateur de compatibilité ignore les clés primaires manquantes dans le fichier dump.
En outre, les options DATA DIRECTORY
, INDEX DIRECTORY
et ENCRYPTION
des instructions CREATE TABLE
sont toujours mises en commentaire dans les scripts DDL si l'option ocimds
est activée.
Si vous avez l'intention d'exporter une ancienne version de MySQL, par exemple 5.7.9, et si vous utilisez une version de shell MySQL antérieure à la version 8.0.30, il est recommandé d'exécuter l'utilitaire de vérification de mise à niveau de shell MySQL pour générer un rapport répertoriant tous les problèmes potentiels posés par la migration. Reportez-vous à Utilitaire de vérification de mise à niveau.
Rubriques connexes