Transférer une BD d'un serveur à l'autre

WRInaute passionné
Salut,

une question super simple pour les férus de dédiés :

je m'apprête à faire un transfert de serveurs : j'ai 2 dédiées chez ovh (un nouveau et un pourri). J'aimerais copier les BD de l'ancien vers le nouveau.

Y'a t-il une commande simple sous linux, ou bien dois je faire un backup sur l'ancien et l'uploader ensuite sur le nouveau ?

merci

yves
 
WRInaute passionné
rsync :wink:

Tout d'abord, se connecter en root console sur la machine destination (celle ou tu veut copier la bdd).

il faut créer une clé SSH :

Code:
ssh-keygen -t dsa -b 1024

Répondre aux questions puis copier la clé sur le serveur ou se trouve la BDD :

Code:
ssh-copy-id -i ~/.ssh/id_dsa.pub "-p PORT SERVEUR"

PORT est le numéro de port ssh (généralement 22) et SERVEUR le nom du serveur ou son IP

Ensuite, pour récupérer la bdd

Code:
rsync -avz --progress --delete -e "ssh -p 22" root@SERVEUR:/chemin/bdd/source/ /chemin/bdd/destination --exclude=.*

ATTENTION DE BIEN RESPECTER LA SYNTAXE
remarque : les droits des fichiers et répertoires sont conservés.

voilou :mrgreen:
 
WRInaute discret
Alors je suis loin d'être un pro mais un scp ne suffit pas ?

Sur le nouveau serveur :
Code:
scp -r login@ip_du_vieux_serveur:/var/lib/mysql /var/lib/mysql
 
WRInaute passionné
Toma a dit:
Alors je suis loin d'être un pro mais un scp ne suffit pas ?

Sur le nouveau serveur :
Code:
scp -r login@ip_du_vieux_serveur:/var/lib/mysql /var/lib/mysql

Oui bien sûr, mais rsync est un peu plus rapide et est incrémental ce qui permet de faire de la synchronisation sans tout recopier, ce qui peut être utile sur des BDD de serveurs en production :wink:
 
WRInaute discret
fandecine a dit:
Oui bien sûr, mais rsync est incrémental ce qui permet de faire de la synchronisation ans tout recopier, ce qui peut être utile sur des BDD de serveurs en production :wink:

Ok, on est d'accord. J'avais l'impression ici que c'était pour faire une copie une seule fois, c'est pour ça que j'avais utilisé scp.
Par contre pourquoi ne pas copier les .* ? Ça peut causer des problèmes ?
 
WRInaute passionné
WRInaute occasionnel
En lisant la question, j'ai aussi l'impression que c'est à faire une seule fois. Faire du rsync est un peu "ambitieux" pour ça. De plus comment gère tu via rsync la création des utilisateurs et des droits associés?

C'est peut être plus propre de faire un export puis un import vers la nouvelle base données?

Perso, je préfère faire:
- un mysqldump sur l'ancien serveur (mysqldump -u root -p bdd > bdd.sql),
- un scp pour copier l'export de la base sur le nouveau serveur (avec la commande de toma)
- la création des utilisateurs et base sur le nouveau serveur (en ligne de commande sous mysql: create database puis un grant pour donner les droits)
- un import sur le nouveau serveur (mysql -u root -p bdd <bdd.sql).

Bien organisé et avec un minimum de doc ça prend vraiment peu de temps et en plus ça peut être réutilisé à loisir pour faire des sauvegardes, des scripts etc...
 
WRInaute passionné
les gars vous me faites flipper la j'ai 10 réponses et je stresse :)

c'est une utilisation unique
c'est pour 3 BD moyenne

et j'aimerais bien ne pas avoir de perte de données, et aussi si ça peut créer les users de BD en direct ca serait cool

(et 100 balles et un mars, tu le veux ? :))
 
WRInaute passionné
Perso j'ai un second serveur SQL sur l'autre serveur et je fais un dump directement dans le SQL (SQL configuré comme une merde jamais de SELECT dessus juste cet insert).
Après si le serveur crash j'ai ce serveur de secours et la BDD est directement exploitable.

Sinon, comme tyv, dump, scp sur l'autre serveur et zou (et encore j'fais souvent du ftp put basic).
Et si c'est juste un transfert, en une ligne ça donne ça :
Code:
mysqldump -h 91.121.91.1 -u blog -padmin blog --opt | mysql -u blog -pserveur blog
-https://admin-serv.net/blog/2009/11/21/84/mysqldump-rapide-et-efficace/
 
WRInaute occasionnel
en 10 minutes, voilà ce que je ferais (en étant connecté en root et positionné dans /root):

Sur l'ancien serveur:

Code:
mysqldump -u root -p base_de_donnee > /root/base_de_donnee.sql

Sur le nouveau,
on se connect à mysql en ligne de commande:
Code:
mysql -u root -p

puis on crée la base et les droits associés à ton utilisateur
Code:
CREATE DATABASE base_de_donnee;
USE base_de_donnee;
GRANT all ON base_de_donnee.* TO 'ton_utilisateur'@'localhost' IDENTIFIED BY 'ton_mot_de_passe';
FLUSH PRIVILEGES;
exit;

puis on copie la base sur le nouveau serveur dans /root
Code:
scp -r login@ip_du_vieux_serveur:/root/base_de_donnee.sql /root/

et enfin on importe la base de données

Code:
mysql -u root -p base_de_donnee < base_de_donnee.sql

edit: sympa ta ligne julia41
 
WRInaute occasionnel
le clic inclu le temps d'installation du logiciel, de configuration et d'utilisation :mrgreen: ?
 
WRInaute passionné
Julia41 a dit:
Et si c'est juste un transfert, en une ligne ça donne ça :
Code:
mysqldump -h 91.121.91.1 -u blog -padmin blog --opt | mysql -u blog -pserveur blog
-https://admin-serv.net/blog/2009/11/21/84/mysqldump-rapide-et-efficace/
ca à l'air du feu ça !!!

tu l'as testé ?
 
WRInaute discret
Si je dis pas de bêtises, les méthodes scp ou rsync transfèrent également les utilisateurs dans le cas d'une base MySQL puisqu'on copie également les bases système.
 
WRInaute passionné
tyv a dit:
En lisant la question, j'ai aussi l'impression que c'est à faire une seule fois. Faire du rsync est un peu "ambitieux" pour ça. De plus comment gère tu via rsync la création des utilisateurs et des droits associés?

A ton avis, ils sonts stockés où les utilisateurs :mrgreen:

Dans la BDD bien sur :wink:

rsync, c'est simple, pratique et cela peut être utilisé pour plein de choses, maintenant, vous faites comme vous le sentez...
 
WRInaute occasionnel
Merci mais ca je sais. Simplement si tu veux copier une seule base ou que tu as deja positionné des droits tu fais comment...
Par rapport a la question, c est démesuré , il ne demande pas une solution maitre esclave mais juste copier 3 bdd.

Demande a n importe quel adminsys dans ton entourage, ca m etonnerait qu il te reponde rsync. (Desole pour les fautes si y en a mais via un telephone c est un peu rude).
 
WRInaute passionné
rudddy a dit:
Julia41 a dit:
Et si c'est juste un transfert, en une ligne ça donne ça :
Code:
mysqldump -h 91.121.91.1 -u blog -padmin blog --opt | mysql -u blog -pserveur blog
-https://admin-serv.net/blog/2009/11/21/84/mysqldump-rapide-et-efficace/
ca à l'air du feu ça !!!

tu l'as testé ?
J'utilise ça pour tous les serveurs que je migre (s'ils ont pas leur port SQL de fermé) et ça marche nikel de chez nikel.
Ma technique est "on est sur le nouveau serveur SQL", tu peux le faire dans l'autre sens en disant "on est sur le vieux serveur" et dans ce cas là, la partie après le pipe | on rajoute le host (-h)
 
WRInaute occasionnel
avec la commande précédente, il faudra juste penser à trois ptis trucs en plus du firewall :
- que le serveur accepte les connexions distantes (commenter le temps de l'opération la ligne skip-networking ou le bind=127.0.01 selon la version de mysql)
- qu 'il y ait un "utilisateur distant" de déclaré sur le serveur mysql et ayant les droits sur la base (si il n'y a que des utilisateurs locaux de déclarés, mysql n'autorisera pas les connexions sur le serveur distant)
- que la base ait été crée sur le nouveau serveur avant. Sinon, à la deuxième partie de la commande le serveur va te répondre qu'elle n'existe pas

après ça doit le faire :wink:

rudddy a dit:
il est où :D
 
WRInaute passionné
bon bah un petit retour

j'ai fait le mysqldump à distance sur le nouveau serveur et c'est pas passé.

Erreur :
Code:
ERROR 1045 (28000): Access denied for user 'blog_wp'@'localhost' (using password: YES)
mysqldump: Got error: 1045: Access denied for user 'blog_wp'@'ns35xxxx.ovh.net' (using password: YES) when trying to connect

merci de vos lanternes bien :idea:
 
WRInaute occasionnel
c'est ce que je viens de marquer juste au dessus:
l'utilisateur n'existe pas sur ton serveur sql ou bien mysql refuse les connexions distantes.

As tu essayé l'ensemble des commandes indiquées dans la page précédente. En suivant pas à pas avec du copier coller ça fonctionne.
Avec un peu plus de détail voilà une petite fiche pratique pour réaliser la migration d'une base de données mysql
 
WRInaute passionné
tyv a dit:
c'est ce que je viens de marquer juste au dessus:
l'utilisateur n'existe pas sur ton serveur sql ou bien mysql refuse les connexions distantes.

As tu essayé l'ensemble des commandes indiquées dans la page précédente. En suivant pas à pas avec du copier coller ça fonctionne.
Avec un peu plus de détail voilà une petite fiche pratique pour réaliser la migration d'une base de données mysql

merci pour ton lien c'est nickel ca marche très bien

merci à tous
 
Discussions similaires
Haut