[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: