Exporter une base de données MySQL à l'aide de mysqldump

Vous pouvez exécuter l'utilitaire mysqldump directement sur votre base de données MySQL, en utilisant les options de votre choix. Toutefois, si vous exportez les données pour les importer dans une base de données Cloud SQL, utilisez l'utilitaire mysqldump avec les options suivantes :

  • --databases Spécifiez une liste explicite de bases de données à exporter. Cette liste ne doit pas contenir les bases de données système (sys, mysql, performance_schema et information_schema).
  • --hex-blob Si votre base de données contient des champs binaires, vous devez utiliser cette option pour vous assurer qu'ils sont importés correctement.
  • --single-transaction Démarre une transaction avant l'exécution. Plutôt que de verrouiller l'intégralité de la base de données, cela permet à mysqldump de lire la base de données dans son état actuel, ce qui permet d'obtenir un vidage de données cohérent.
  • --routines Pour inclure les procédures et fonctions stockées.
  • Lorsque vous utilisez mysqldump version 8 ou ultérieure pour exporter des bases de données MySQL de versions antérieures à la version 8 :
    --column-statistics=0

    Cette option supprime la table COLUMN_STATISTICS de l'exportation de la base de données pour éviter l'erreur Unknown table 'COLUMN_STATISTICS' in information_schema (1109). Pour en savoir plus, consultez Diagnostiquer les problèmes.

Il est également recommandé d'utiliser les options suivantes :

  • --no-autocommit
  • --default-character-set=utf8mb4
  • --master-data

À partir d'une machine disposant d'une connectivité réseau à votre serveur MySQL, exécutez la commande suivante :

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --master-data=1  \
        --single-transaction \
        --routines \
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

Si la source de la migration est une instance Relational Database Service (RDS) pour MySQL :

  • La propriété master-data n'est pas prise en charge.
  • Si votre serveur de base de données source est compatible avec GTID, utilisez la propriété --set-gtid-purged=on. Sinon, ne l'utilisez pas.
  • Si vous utilisez un dump manuel pour migrer vos données, effectuez la migration avec le GTID activé.

Voici un exemple de cette commande :

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob  \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --set-gtid-purged=on \
        --single-transaction \
        --routines \ 
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

En outre, vous devriez configurer les instances RDS de sorte qu'elles conservent les binlogs plus longtemps. Voici un exemple de cette commande :

    # Sets the retention period to one week.
    call mysql.rds_set_configuration('binlog retention hours', 168);

Remplacez [PROPERTIES_IN_BRACKETS] par les valeurs suivantes :

Propriété Valeur
[SOURCE_ADDR] Adresse IPv4 ou nom d'hôte du serveur de base de données source.
[SOURCE_PORT] Port du serveur de base de données source.
[USERNAME] Compte utilisateur MySQL.
[DBS] Liste des bases de données du serveur de base de données source à inclure dans le vidage, séparées par des espaces. Utilisez la commande MySQL SHOW DATABASES pour lister vos bases de données.
[BUCKET_NAME] Bucket dans Cloud Storage créé par l'utilisateur et utilisé pour stocker le fichier de dump (par exemple, replica-bucket).
[DUMP_FILENAME] Nom du fichier de vidage, se terminant par l'extension de fichier .gz (par exemple, source-database.sql.gz).

Étapes suivantes

Pour obtenir un guide de migration complet, étape par étape, consultez Premiers pas avec les migrations Cloud SQL pour MySQL.