Vous pouvez exécuter l'utilitaire mysqldump directement sur votre base de données MySQL, en utilisant les options dont vous avez besoin. Toutefois, si vous exportez des 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
etinformation_schema
).--hex-blob
Si votre base de données contient des champs binaires, vous devez utiliser cette option pour garantir que ces champs seront importés correctement.--single-transaction
Démarre une transaction avant l'exécution. Plutôt que de verrouiller l'ensemble de la base de données, cela permet à mysqldump de lire la base de données dans son état actuel, ce qui permet un vidage de données cohérent.--routines
Pour inclure des procédures et des fonctions stockées.Lorsque vous utilisez la version 8 ou ultérieure de
mysqldump
pour exporter des versions de bases de données MySQL antérieures à la version 8:--column-statistics=0
Cet indicateur 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 la section Diagnostiquer les problèmes.
Nous vous recommandons également d'utiliser les options suivantes:
--no-autocommit
--default-character-set=utf8mb4
--master-data
À partir d'une machine ayant 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 un service de base de données relationnelle (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, n'utilisez pas cette propriété. - Si vous utilisez un vidage manuel pour migrer vos données, effectuez la migration avec 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 sur le 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 Cloud Storage créé par l'utilisateur et utilisé pour stocker le fichier de dump (par exemple, replica-bucket ). |
[DUMP_FILENAME] | Nom du fichier de dump, se terminant par une extension de fichier .gz (par exemple, source-database.sql.gz ). |