2010-06-04 6 views
0

J'ai une base de données dans le serveur local nommé 'empData' et je veux que toutes les données de cette base de données soient copiées dans une autre base de données, qui se trouve dans un autre serveur (serveur web). J'ai essayé ce code mysql_query("INSERT INTO empData.backup_emp SELECT * FROM empData.emp"); Mais cela n'a pas fonctionné car les bases de données ne sont pas dans le même serveur ... (comme dans notre cas on est en local et un autre est en serveur web) .. aidez s'il vous plaît ..Comment copier une base de données d'un serveur vers un autre serveur en PHP?

+0

fait le second serveur permet des connexions à MySQL de l'extérieur? La plupart du temps, il est configuré uniquement pour localhost. – opHASnoNAME

+0

j'ai essayé de se connecter, mais en donnant l'erreur ... "Attention: mysql_connect() [fonction.mysql-connect]: Accès refusé pour l'utilisateur ..." –

Répondre

2

Videz vos données à l'aide de mysqldump, puis placez ce fichier dans mysql pour importer les données ailleurs.

Sur server1:

mysqldump empData > empData.sql 

Sur serveur2:

mysql < empData.sql 

Si vous voulez obtenir la fantaisie, vous pouvez utiliser des tuyaux et ssh pour envoyer les données directement à partir server1 à server2.

+0

mais je dois garder le contrôle que, les données sont déjà présentes ou not..so que pour éviter la duplication .... ci-dessus méthode ajoutera les données dans la base de données de sauvegarde .... –

+0

L'utilisation peut passer le drapeau '--insert-ignore' à' mysqldump' pour lui dire d'écrire ' INSERT IGNORE' déclarations pour toutes les données. De cette façon, il ne remplacera pas une ligne si la clé existe déjà. http://dev.mysql.com/doc/refman/5.1/fr/mysqldump.html#option_mysqldump_insert-ignore –

+0

hey merci..je vais essayer de cette façon ... –

1

ce n'est pas une réponse PHP, mais peut-être vous permet de démarrer:

mysqldump --host=db1.example.com --user=db1user --password=db1pass --single-transaction myschema mytable | \ 
    mysql --host=db2.example.com --user=db2user --password=db2pass myschema 

Si vous ne pouvez pas accéder à deux hôtes d'une machine, vous pouvez utiliser ssh, par exemple

ssh db1.example.com 'mysqldump --user=db1user --password=db1pass --single-transaction myschema mytable' | \ 
    mysql --user=db2user --password=db2pass myschema 

ou

mysqldump --user=db1user --password=db1pass --single-transaction myschema mytable | \ 
    ssh db2.example.com 'mysql --user=db2user --password=db2pass myschema' 
0

Vous avez à vider la base de données sur le serveur d'origine, puis copiez-le dans l'autre serveur, et le restaurer.

Pour chacune de ces actions, il y a un côté «côté serveur» et un côté «PHP». Si vous le pouvez, utilisez le premier. Si vous ne pouvez pas utiliser le second, mais vous devez accorder une attention particulière à la sécurité. Côté serveur: 1. et 3.: utilisez mysqldump. 2. utilisez scp pour transférer le fichier. Côté PHP: 1. Utilisez un script pour vider les bases de données, par exemple this one. 2. Copiez le fichier en utilisant CURL ou placez-le dans un répertoire disponible, en le protégeant d'une manière ou d'une autre. 3. Récupérez le fichier à partir du second serveur et exécutez-le simplement via mysql_exec pour restaurer la base de données.

1

Il y a toujours la possibilité de droit MySQL Replication Rathe rthan compter sur votre script PHP pour garder les bases de données synchronisées

Questions connexes