Migration vers Databases for MySQL
Il existe deux options pour migrer les données des bases de données MySQL existantes vers IBM Cloud® Databases for MySQL. Nous recommandons deux options : mysqldump
et mydumper
. Le meilleur outil pour vous dépend de certaines
conditions, notamment la connexion réseau, la taille de votre ensemble de données et les besoins de schéma intermédiaire.
Avant de commencer
Avant de commencer la migration des données, vous devez installer MySQL en local afin de disposer des outils mysql
et mysqldump
.
Plan de travail MySQL fournit également un outil graphique permettant de travailler avec des serveurs et des bases de données MySQL. Bien qu'il ne soit pas strictement obligatoire, Cloud Databases CLI facilite également la connexion et la restauration à un nouveau déploiement Databases for MySQL.
mysqldump
Cet utilitaire client MySQL natif s'installe par défaut et peut effectuer des sauvegardes logiques, la reproduction de la structure de table et des données, sans copier les fichiers de données réels. Mysqldump dumps une ou plusieurs bases de données MySQL pour la sauvegarde ou le transfert vers un autre serveur MySQL. Pour plus d'informations, voir la documentation mysqldump.
mysqldump
est approprié pour une utilisation dans les conditions suivantes:
- L'ensemble de données est inférieur à 10 Go.
- Le temps de migration n'est pas critique et le coût de la relance de la migration est faible.
- Il n'est pas nécessaire de procéder à des transformations de schéma ou de données intermédiaires.
Nous ne recommandons pas mysqldump si l'une des conditions suivantes est remplie:
- Votre jeu de données est supérieur à 10 Go.
- La connexion réseau entre les bases de données source et cible est instable ou lente.
Procédez comme suit à l'aide de l'outil mysqldump
:
Exécutez mysqldump
sur votre base de données source pour créer un fichier SQL, qui peut être utilisé pour recréer la base de données. Au minimum, la migration de mysql
à l'aide de l'interface de ligne de commande requiert
les arguments suivants :
- Nom d'hôte (indicateur
-h
) - numéro de port (indicateur
-P
) - Nom d'utilisateur (indicateur
-u
) - -- ssl-mode = IDENTITE VERIFY_IDENTITY (les clients requièrent une connexion chiffrée et effectuent une vérification par rapport au certificat de l'autorité de certification du serveur et au nom d'hôte du serveur dans son certificat)
- --ssl-ca (nom de chemin du fichier de l'autorité de certification (CA), qui se trouve dans l'onglet CLI des noeuds finaux de la page Présentation de l'interface utilisateur.)
- Nom de la base de données
- fichier de résultats (indicateur
-r
)
Votre commande d'interface de ligne de commande se présente comme suit:
mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql
Pour générer un fichier journal du travail mysqldump qui effectue le suivi des erreurs lors de son exécution, utilisez une commande similaire à la suivante:
mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql
La même opération peut être effectuée lors de l'importation, par exemple
mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log
Pour plus d'informations sur l'utilisation de MySQL Replication avec des identificateurs GTID (Global Transaction Identifiers), voir Utilisation de GTID pour la reprise en ligne et la mise à l'échelle dans le MySQL Manuel de référence.
La commande mysql
comporte de nombreuses options ; voir la documentation officielle et référence de commande pour une vue plus complète de ses capacités.
Restauration de la sortie de mysqldump
La sortie obtenue de mysqldump
peut ensuite être téléchargée dans un nouveau déploiement Databases for MySQL. Comme la sortie est SQL, elle peut simplement être envoyée à la base de données via la commande mysql
.
Nous vous recommandons d'effectuer les importations en tant qu'administrateur.
Pour plus d'informations sur la connexion en tant qu'administrateur à l'aide d' mysql
, voir la documentation Connexion à mysql
. Pour
vous connecter à la commande mysql
, vous avez besoin de la chaîne de connexion de l'utilisateur admin et du certificat TLS, qui peuvent être trouvés dans l'interface utilisateur. Le certificat doit être décodé à partir de base64
et stocké en tant que fichier local arbitraire. Pour importer le fichier dump.sql
précédemment créé dans un déploiement de base de données nommé example-mysql
, la commande mysql
peut être appelée avec
-f dump.sql
en tant que paramètre. Le paramètre indique à mysql
de lire et d'exécuter les instructions SQL dans le fichier.
Comme indiqué dans la documentation Connexion avec mysql
, le plug-in CLI Cloud Databases simplifie la connexion. L'importation mysql
précédente peut être exécutée à l'aide d'une commande telle que:
mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql
Si aucun utilisateur n'est spécifié, la commande utilise automatiquement l'utilisateur admin et invite de manière interactive le mot de passe. Le certificat TLS est automatiquement extrait et utilisé.
Pendant que le processus de restauration est en cours d'exécution, un certain nombre de messages sont émis concernant les modifications apportées au déploiement de la base de données.
mydumper
Mydumper, et son outil de sauvegarde logique myloader, utilisent des fonctions multithreading pour effectuer la migration de données de manière similaire à mysqldump ; cependant, mydumper fournit de nombreuses améliorations, telles que des sauvegardes parallèles, des lectures cohérentes et plus facile à gérer la sortie. Le parallélisme permet une meilleure performance lors du processus d'importation et d'exportation, tandis que la sortie peut être plus facile à gérer car des tables individuelles sont déversées dans des fichiers distincts.
Mydumper est approprié à l'utilisation dans les conditions suivantes :
- L'ensemble de données est supérieur à 10 Go.
- La connexion réseau entre les bases de données source et cible est rapide et stable.
- Vous devez effectuer des transformations de schéma ou de données intermédiaires.
Nous ne recommandons pas d'utiliser mydumper si l'une des conditions suivantes est remplie :
- Votre jeu de données est inférieur à 10 Go.
- La connexion réseau entre les bases de données source et cible est instable ou très lente.
Avant de commencer la migration de vos données avec mydumper, consultez d'abord Projet mydumper pour plus de détails et des instructions pas à pas sur l'installation et l'environnement de développement nécessaire,
Reportez-vous ensuite à la page Comment utiliser mydumper pour plus d'informations sur l'utilisation des outils mydumper et myloader pour effectuer la migration complète des données.
Optimisation des variables configurables InnoDB
Vous pouvez configurer les options MySQL InnoDB suivantes pour optimiser les performances, en fonction de la capacité de la machine et de la charge de travail de la base de données.
- innodb_buffer_pool_size_percentage
- innodb_flush_log_at_trx_commit
- innodb_log_buffer_size
- innodb_log_file_size
- innodb_lru_scan_depth
- Innodb_read_io_threads
- innodb_write_io_threads
- net_read_timeout
- net_write_timeout
innodb_buffer_pool_size_percentage
- Description : le paramètre
innodb_buffer_pool_size_percentage value
définit la quantité de mémoire dédiée du conteneur de base de données. - Paramètre par défaut : 50
- Max : 100
- Min : 10
- Requiert un redémarrage : True
Etant donné que votre base de données utilise elle-même une quantité de mémoire donnée, si le paramètre innodb_buffer_pool_size_percentage value
est configuré trop haut, vos besoins en mémoire de base de données + innodb_buffer_pool_size_percentage
peuvent devenir plus élevés que les limites de mémoire disponibles, ce qui entraîne un état de mémoire insuffisante (OOM).
La valeur du paramètre innodb_buffer_pool_size_percentage
varie en fonction de la taille de votre base de données. La valeur par défaut est 50%
, ce qui est sûr pour les bases de données de toutes tailles. Configurez
la valeur si nécessaire ; si vous rencontrez OOM, la valeur est trop élevée et vous devez la réduire.
innodb_flush_log_at_trx_commit
-
Description : contrôle l'équilibre entre la conformité stricte de l'ACID pour les opérations de validation et les performances supérieures
-
Paramètre par défaut : 2
Le paramètre par défaut 2 n'est pas entièrement compatible ACID (le paramètre par défaut 1 est requis pour la conformité avec ACID complet), mais il est plus performant et est toujours sûr.
- Max : 2
- Min : 0
- Requiert un redémarrage : False
Pour plus d'informations, voir Documentation MySQL innodb_flush_log_at_trx_commit.
innodb_log_buffer_size
- Description : Taille en octets de la mémoire tampon utilisée par InnoDB pour écrire dans les fichiers journaux sur le disque.
- Valeur par défaut: 32 Mio
- Max : 4294967295
- Min : 1048576
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation MySQL innodb_log_buffer_size.
innodb_log_file_size
- Description : Taille du fichier journal InnoDB en octets.
- Valeur par défaut: 64 Mo
- Max : 274877906900
- Min : 4194304
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation MySQL innodb_log_file_size.
innodb_lru_scan_depth
- Description : Paramètre qui influence les algorithmes et les heuristiques pour l'opération de vidage pour le pool de mémoire tampon InnoDB.
- Paramètre par défaut : 1024
- Max : pas de valeur max
- Min : 100
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation MySQL innodb_lru_scan_depth.
innodb_read_io_threads
- Description : Nombre d'unités d'exécution d'E-S pour les opérations de lecture dans InnoDB.
- Paramètre par défaut : 4
- Max : 64
- Min : 1
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation MySQL innodb_read_io_threads.
innodb_write_io_threads
- Description : Nombre d'unités d'exécution d'E-S pour les opérations de lecture dans InnoDB.
- Paramètre par défaut : 4
- Max : 64
- Min : 1
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation MySQL innodb_write_io_threads.
net_read_timeout
- Description : Nombre de secondes d'attente de plus de données à partir d'une connexion avant l'abandon de la lecture.
- Paramètre par défaut : 30
- Max:
- Min : 1
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation de MySQL net_read_timeout.
net_write_timeout
- Description : Nombre de secondes d'attente d'écriture d'un bloc dans une connexion avant l'abandon de l'écriture.
- Paramètre par défaut : 60
- Max:
- Min : 1
- Requiert un redémarrage : True
Pour plus d'informations, voir Documentation net_write_timeout
.