2010-12-10 63 views
12

J'ai deux serveurs dédiés avec un accès root. Les deux fonctionnent sous Linux. Je veux importer la base de données de Server1 à Server2. J'ai déjà créé une base de données vide sur Server2. Je veux savoir la commande Linux à travers laquelle je peux importer la base de données directement? Y a-t-il une telle fonctionnalité? Puis-je utiliser mysqldump? Je veux éviter d'abord de prendre la sauvegarde de la base de données sur server1, puis de déplacer ce fichier sur server2, puis d'importer ce fichier. Peut être importé directement en utilisant une commande?Importer une base de données MySQL d'un serveur à un autre

Merci

+0

+1 Je suis à la recherche de la même –

Répondre

13

Si vous voulez éviter de créer un fichier, le transférer et le charger, il vous suffit tuyau mysqldump soit dans un mysql en cours d'exécution sur l'autre serveur, ou un mysql ssh sur l'autre serveur.

Utilisation de mysql pour se connecter à la boîte à distance:

mysqldump --all-databases | mysql -h yourserver.com 

En utilisant ssh pour vous connecter à un autre serveur

mysqldump --all-databases | ssh [email protected] mysql 

Utilisez le mysqldump --all-bases de données pour les transférer tous, ou tout simplement spécifier les noms de bases de données. Reportez-vous au mysqldump documentation pour plus d'options.

Vous pouvez également utiliser la fonctionnalité "Réplication" de MySQL, bien que cela prenne un peu plus de temps pour l'installation, et est plutôt difficile. Probablement ne vaut pas tout le temps et peine pour une seule migration.

+0

Merci pour la réponse mais je suis un peu confus quant à ce qu'il faut faire. Pouvez-vous élaborer s'il vous plaît? Je veux dire dois-je exécuter la première commande sur Server1 et la deuxième commande sur Server2 après la connexion via SSH? – Ali

+1

Ali: vous pouvez exécuter les deux commandes sur Server1. La première commande ouvrira une connexion à mysql TO Server2 (mettre son nom après le '-h'). La deuxième commande ouvrira une connexion ssh à Server2 elle-même, et exécutera l'application client 'mysql', en utilisant la sortie de mysqldump sur Server1 comme entrée pour mysql sur Server2. Par conséquent, transférer la base de données. – Konerak

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C [email protected] “mysql -uUSER -pPASS NEW_DB_NAME” 

Dumps une base de données MySQL sur un tunnel SSH compressé et utilise comme entrée mysql

source

2

Arrêtez mysqld sur le premier serveur, copiez le répertoire de données (généralement/var/lib/mysql) du serveur 1 au serveur 2, lancez mysqld sur le second serveur, et il sera maintenant identique au premier.

Vous n'avez pas besoin d'utiliser les outils d'importation/exportation si vous pouvez arrêter le serveur pendant que vous copiez les fichiers de données. Surtout si vous pouvez compresser les fichiers avant de les copier, ce sera le moyen le plus rapide.

+0

Cette solution est la meilleure si vous avez la même version. –