J'ai un serveur de base de données MySQL de production Ubuntu 10.04 où la taille totale de la base de données est de 260 Go tandis que la taille de la partition racine est elle-même de 300 Go où la base de données est stockée, ce qui signifie essentiellement environ 96% de / est plein et il n'y a plus d'espace pour stocker le vidage / la sauvegarde etc. Aucun autre disque n'est connecté au serveur pour l'instant.
Ma tâche consiste à migrer cette base de données vers un autre serveur assis dans un centre de données différent. La question est de savoir comment le faire efficacement avec un minimum de temps d'arrêt?
Je pense à:
- Demande de connecter un lecteur supplémentaire au serveur et d'effectuer un vidage sur ce lecteur. [EDIT: Ce n'est pas possible maintenant.]
- Transférez le vidage sur un nouveau serveur, restaurez-le et rendez le nouveau serveur esclave de celui existant pour garder les données synchronisées
- Lorsque la migration est nécessaire, interrompez la réplication, mettez à jour la configuration de l'esclave pour accepter les demandes de lecture / écriture et rendez l'ancien serveur en lecture seule pour qu'il n'accepte aucune demande d'écriture et ne dise pas aux développeurs d'applications de mettre à jour leur configuration avec la nouvelle adresse IP pour db.
Quelles sont vos suggestions pour améliorer cette approche ou toute autre meilleure approche pour cette tâche?
Un vidage et une restauration d'une base de données de cette taille prendrait des heures. Je le ferais, selon les versions de mysql tant que le numéro de version augmente et qu'il n'y a pas de sauts dans le numéro de révision principal. Vous devriez pouvoir prendre les fichiers de base de données bruts dans / var / lib / mysql et les placer sur le nouveau serveur, définir les autorisations et démarrer le serveur avec le commutateur --skip-grant-tables. Ajoutez les autorisations nécessaires pour les utilisateurs reflétant la nouvelle adresse IP, puis redémarrez normalement.
Je voudrais aborder la taille de votre base de données car elle est trop grande pour être efficace.
la source
Vous pouvez suivre ces étapes pour migrer cette énorme base de données InnoDB.
Cette tâche prendra plusieurs heures. Pour minimiser l'effet du script de copie à chaud sur le serveur en direct, définissez une priorité faible sur celui-ci à l'aide de renice
$ renice -n 5 -p <SCRIPT-PID>
Vous pouvez rencontrer une lenteur au cours de ce processus, mais certainement aucun temps d'arrêt. Percona XtraBackup créera une copie à chaud qui est plus rapide et moins consommatrice de ressources par rapport à mysqldump. C'est idéal pour une énorme base de données InnoDB.
Selon les modèles d'utilisation et les statistiques, vous pouvez exécuter ce processus lorsqu'il y a un trafic minimum sur le serveur. Peut-être que faire cela le week-end est une bonne idée? Ce qui précède n'est qu'un aperçu du processus. Vous devrez peut-être parcourir la documentation de Percona XtraBackup et SSHFS.
la source
Vous pouvez simplement vider la base de données directement sur le serveur distant ...
... SQL devrait bien compresser, vous devriez donc faire cela beaucoup plus rapidement avec l'une de ces options, même si cela dépendra également de la quantité de RAM que vous avez dans la boîte ...
la source