J'ai une base de données mysql
remplie et fonctionnant sur un ordinateur Windows, existe-t-il un outil pour transférer la base de données sur un autre ordinateur (exécutant Ubuntu)?
Sinon, je vais juste écrire une script
pour prendre toute la base de données dans SQL
et insérer sur l’autre ordinateur. J'essaie juste de gagner du temps :)
Merci à tous.
L'outil dont vous parlez existe déjà: mysqldump
Il exporte vers SQL, que vous pouvez ensuite copier sur une autre machine et recharger.
par exemple:
sur source:
mysqldump -u username -p databasename > dumpfile.sql
Ensuite, utilisez ftp/rsync/what pour déplacer le fichier sur la machine de destination, puis créez-y une base de données vide à importer et à exécuter:
mysql -u username -p databasename < dumpfile.sql
Vous devrez également configurer des autorisations sur les utilisateurs éventuellement transférés, car ils ne sont pas conservés dans la base de données.
Alternativement, vous pouvez copier les fichiers depuis le répertoire de données mysql - mais mysqldump est le moyen le plus simple et le plus fiable.
Il est à noter que les noms de table peuvent devenir sensibles à la casse sur un système alors qu'ils ne figuraient pas sur l'original. Cela dépend de la configuration aux deux extrémités - en particulier de la sensibilité à la casse (ou autre) du système de fichiers.
Plutôt que d'exporter les bases de données une par une, vous pouvez toutes les exporter avec une seule commande. Ensuite, importez-les.
mysqldump -u username -p --all-databases > c:\alldbs.sql
PS- Le plus gros avantage est que vous ne perdez pas les privilèges de l'utilisateur.
Les fichiers sur le disque sont 100% compatibles entre toutes les éditions de MySQL. Il suffit de faire attention au cas des noms de fichiers, car c'est important sous Unix, alors que ce n'est parfois le cas que sous Windows.
Et n'oubliez pas d'arrêter MySQL avant de prendre une copie. Les fichiers MyISAM sont acceptables pour une copie en cours d’exécution, mais les fichiers InnoDB ne sont pas vraiment sûrs de le faire et la valeur par défaut MySQL de Windows est InnoDB.
Soyez prudent avec les jeux de caractères lorsque vous utilisez mysqldump, en particulier sous windows. Je préfère définir explicitement le jeu de caractères que ma base de données utilise et utiliser le fichier --result-file = au lieu d'utiliser l'opérateur> de peur que quelque chose ne se détériore.
De la documentation MySQL: http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html
Shell> mysqldump --quick db_name | gzip > db_name.gz
Transférez le fichier contenant le contenu de la base de données sur la machine cible et exécutez les commandes suivantes:
Shell> mysqladmin create db_name
Shell> gunzip < db_name.gz | mysql db_name
Je me trouve souvent en train d'utiliser une variante de ce one-liner pour copier une base de données sur le réseau.
mysqldump --opt --compress --user=username database | mysql --user=username2 --password=p2 --Host=hostB -D database -C database
Ce que j'ai lu à l'origine ici:
http://www.igvita.com/2007/10/10/hands-on-mysql-backup-migration/
Avec mysql workbench (outil graphique), vous pouvez facilement exporter la base de données et l’importer dans la base de données à migrer.
mysqldump devrait le vider correctement et conserver le jeu de caractères de tout ce qui se trouve dans la base de données. Il est conseillé de passer à la même version de mysql si vous ne voulez pas de problèmes.
Le fichier produit par mysqldump n'est PAS un fichier texte, malgré les apparences, ne le modifiez pas avec notepad.exe, etc.
Les dumps produits par des outils graphiques tiers, en particulier phpmyadmin, sont généralement inexacts et ne seront pas nécessairement restaurés correctement.
Vous pouvez faire une sauvegarde en utilisant n'importe quel outil graphique, comme Mysql Administrator ( http://dev.mysql.com/downloads/gui-tools/ sur Windows, aptitude installera mysql-admin sur Ubuntu) ou phpmyadmin ( http://www.phpmyadmin.net/home_page/index.php sous Windows, aptitude installera phpmyadmin sur Ubuntu), puis récupérez-le sur l'autre ordinateur.