Cloner une firebase database MySQL sur la même instance MySql

Je voudrais écrire un script qui copie ma firebase database actuelle sitedb1 sur sitedb2 sur la même instance de la firebase database mysql. Je sais que je peux vider le sitedb1 dans un script sql:

 mysqldump -u root -p sitedb1 >~/db_name.sql 

puis importez-le dans sitedb2 . Y a-t-il un moyen plus facile, sans transférer la première firebase database dans un fichier SQL?

Comme le dit le manuel dans Copier des bases de données, vous pouvez diriger le vidage directement dans le client mysql:

 mysqldump db_name | mysql new_db_name 

Si vous utilisez MyISAM, vous pouvez copier les fichiers, mais je ne le recommanderais pas. C’est un peu louche.

Intégré à partir de diverses autres bonnes réponses

Les commandes mysqldump et mysql acceptent toutes les deux les options pour définir les détails de la connexion (et bien plus encore), comme:

 mysqldump -u  --password=  | mysql -u  -p  

De plus, si la nouvelle firebase database n’existe pas encore, vous devez la créer au préalable (par exemple, avec echo "create database new_db_name" | mysql -u -p ).

Utiliser les utilitaires MySQL

Les utilitaires MySQL contiennent l’outil sympa mysqldbcopy qui, par défaut, copie une firebase database contenant tous les objects associés («tables, vues, déclencheurs, événements, procédures, fonctions et allocations au niveau de la firebase database») un autre serveur de firebase database. De nombreuses options sont disponibles pour personnaliser ce qui est réellement copié.

Donc, pour répondre à la question du PO:

 mysqldbcopy \ --source=root:your_password@localhost \ --destination=root:your_password@localhost \ sitedb1:sitedb2 
 $ mysqladmin create DB_name -u DB_user --password=DB_pass && \ mysqldump -u DB_user --password=DB_pass DB_name | mysql -u DB_user --password=DB_pass -h DB_host DB_name 

Vous devez exécuter la commande à partir de l’invite de commande du terminal.

 mysqldump -u  -p   | mysql -u    

eg: mysqldump -u root test_db1 | mysql -u root test_db2 mysqldump -u root test_db1 | mysql -u root test_db2

Ceci copie test_db1 à test_db2 et accorde l’access à ‘root’ @ ‘localhost’

Vous pourriez utiliser (en pseudocode):

 FOREACH tbl IN db_a: CREATE TABLE db_b.tbl LIKE db_a.tbl; INSERT INTO db_b.tbl SELECT * FROM db_a.tbl; 

La raison pour laquelle je n’utilise pas la syntaxe CREATE TABLE … SELECT … est de préserver les index. Bien sûr, cela ne copie que les tables. Les vues et les procédures ne sont pas copiées, bien que cela puisse être fait de la même manière.

Voir CREATE TABLE .

Commencez par créer la firebase database en double:

 CREATE DATABASE duplicateddb; 

Assurez-vous que les permissions, etc. sont bien en place et:

 mysqldump -u admin -p originaldb | mysql -u backup -p password duplicateddb; 

Le meilleur moyen est de saisir ces commandes dans votre terminal et de définir des permissions pour l’utilisateur root. Travaille pour moi..!

 :~$> mysqldump -u root -p db1 > dump.sql :~$> mysqladmin -u root -p create db2 :~$> mysql -u root -p db2 < dump.sql 

Vous pouvez faire quelque chose comme ceci:

 mysqldump -u[username] -p[password] database_name_for_clone | mysql -u[username] -p[password] new_database_name 

Cette déclaration a été ajoutée dans MySQL 5.1.7 mais s’est avérée dangereuse et a été supprimée dans MySQL 5.1.23. Il a été conçu pour permettre la mise à niveau des bases de données antérieures à la version 5.1 afin d’utiliser le codage implémenté en 5.1 pour mapper les noms de bases de données aux noms de répertoires de bases de données. Cependant, l’utilisation de cette instruction pourrait entraîner la perte du contenu de la firebase database, raison pour laquelle elle a été supprimée. N’utilisez pas RENAME DATABASE dans les versions antérieures dans lesquelles il est présent.

Pour effectuer la mise à niveau des noms de firebase database avec le nouveau codage, utilisez ALTER DATABASE nom_base UPGRADE DATA DIRECTORY NAME à la place: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html

Il est préférable d’utiliser la commande mysqldbcopy pour copier la firebase database d’un serveur à un autre ou du même serveur.

 mysqldbcopy --source=root:root@localhost --destination=root:root@localhost database-name:database-name-clone 

[MySQL]

Je ne pense pas qu’il existe une méthode pour ce faire. Lorsque PHPMyAdmin le fait, il vide le DB, puis le réinsère sous le nouveau nom.

En plus de la réponse de Greg.
le moyen le plus simple et le plus rapide si le new_db_name n’existe pas encore.

 echo "create database new_db_name" | mysql -u  -p  mysqldump -u  -p  db_name | mysql -u  -p  new_db_name 

Un moyen simple de le faire si vous avez installé phpmyadmin :

Accédez à votre firebase database, sélectionnez l’onglet “opération”, et vous pouvez voir le bloc “copier la firebase database”. Utilisez-le et vous pouvez copier la firebase database.

Utilisez ‘mysqldbcopy’ sur le terminal. Ce cas est bien mentionné ici . Exemple: lancez l’invite cmd. Accédez au dossier bin de mySql Server. Lancer la requête ci-dessous:

 C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqldbcopy --source=root:root@localhost --destination=root:root@localhost master:master_clone 

J’essaie ici de copier ma firebase database ‘master’ sur ‘master_clone’ sur localhost.