Re: Comment transferer des DB d'un serveur a un autre
Bonjour,
J'arrive un peu tard mais j'ajoute quand même mon grain de sel ;-)
Le 23/11/18 à 15:11, Hugues MORIN <morinh@gmail.com> a écrit :
> Suffit-il de copier le repertoire contenant la DB (/var/lib/mysql/nomdb
> dans mon cas) et redemarrer mysql pour que le transfert soit effectif?
Tu veux copier une seule base ou toutes ?
Pour une seule base ça marche pas à cause des journaux binaires, faut
passer par un dump.
Pour toutes, tu peux copier /var/lib/mysql/, mais :
- il faut que ce soit la même version de mariaDb des deux cotés
- il ne faut pas que le mariadb source tourne pendant cette copie
- si tu as de la réplication attention aux fichiers *.info et
mysqld-relay* dans ce dossier (mais si c'était le cas tu le sais
probablement)
- si tu as des logs binaires il faut les copier aussi, et vérifier que
c'est raccord avec la conf du mariadb de destination
- ça va copier aussi les droits, suivant ta conf tu devras éventuellement
modifier des fichiers de /etc/mysql (je pense au password du user
debian-syst-maint)
Évidemment, le sql destination doit être coupé pendant le transfert
Si tu ne veux pas couper le mariadb source pendant la copie, et que son
filesystem est sous lvm, le plus simple est de
- enchaîner rapidement
- commande sql `FLUSH TABLES WITH READ LOCK`
- snapshot du lv
- commande sql `UNLOCK TABLES`
- rsync snasphot => destination de /var/lib/mysql ET de ton dossier de logs
binaires (en ayant vérifié que la conf précise les même dossiers des
deux cotés)
- virer le snapshot source
Si tu n'as pas de lvm, en laissant tourner la source, tu peux tenter à une
heure de faible utilisation :
- rsync
- commande de lock
- rsync bis
- commande de unlock
Le 1er rsync copie le plus gros pour essayer de réduire la durée du 2e, si
le 2e est trop long tu risque d'avoir un serveur qui réponde plus car
toutes ses connexions sont en attente du unlock.
Pour réduire la durée du rsync tu peux aussi faire un rsync vers un dossier
local (si ça va plus vite d'écrire sur le disque local que d'envoyer sur le
réseau, c'est pas toujours le cas, surtout si c'est le même disque que
celui que tu lis).
Et avant de démarrer le serveur de destination, vérifier les droits sur les
fichiers (mais si c'est les mêmes users des deux cotés ça doit pas poser de
pb).
--
Daniel
Le respect de la démocratie veut que j'ai le dernier mot.
Georges Marchais (1973)
Reply to: