Transférer une base MySQL d’un serveur à l’autre

Voilà une petite technique pour copier une base MySQL d’un serveur à l’autre

Sur le serveur A, on commence par se placer dans /tmp

serverA: mkdir -p /tmp/DUMPDIR
serverA: cd /tmp
serverA: mysqldump -u user -ppassword -Q --tab=DUMPDIR db_name
serverA: scp -r DUMPDIR user@serverB:/tmp/
serverA: rm -rf /tmp/DUMPDIR/*

Sur le serveur B on importe bien gentiment

serverB: mysqladmin -u user -ppassword create db_name
serverB: cat DUMPDIR/*.sql | mysql -u user -ppassword db_name
serverB: mysqlimport -u user -ppassword db_name /tmp/DUMPDIR/*.txt
serverB: rm -rf /tmp/DUMPDIR

Ici on ne parle pas d’éventuelles différences de version de MySQL. Dans mon cas, j’avais un MySQL 3.23 sur le serveur A et un MySQL 5.0 sur le serveur B et tout semble s’être bien passé, mais il vaut mieux consulter la doc sur les migrations pour ne pas risquer des pertes de données liées à des changements profonds entre les versions.

http://dev.mysql.com/doc/refman/5.0/en/upgrade.html
http://dev.mysql.com/doc/refman/5.0/en/upgrading-to-arch.html

Dans MySQL 5, pour vérifier l’intégrité des tables, on lance cette commande :

serverB: mysqlcheck --check-upgrade --all-databases --auto-repair -u user -ppassword

Mise à jour du 28 avril 2008 :
Il est possible d’utiliser 2 opions intéressantes avec mysqlimport :

  • -r (ou –replace) permet de remplacer les lignes qui comportent la même clé (et donc ne provoque pas d’erreur et d’arrêt de l’import). C’est à utiliser lorsqu’on veut mettre à jour la table en conservant ce qui n’existe pas dans l’import.
  • -d (ou –delete) permet de vider la table avant la lecture du fichier d’import. C’est à utiliser lorsqu’on veut totalement remplacer le contenu des tables.
Publicités
Cet article, publié dans Informatique, PLUG, est tagué . Ajoutez ce permalien à vos favoris.

6 commentaires pour Transférer une base MySQL d’un serveur à l’autre

  1. Xavier LELEU dit :

    Merci beaucoup pour ces informations qui m’ont véritablement aidé.
    Je garde le site en marque-page… ;o)

  2. fußach dit :

    Have you ever thought about creating an ebook or guest authoring on other websites?

    I have a blog centered on the same information you discuss
    and would really like to have you share some stories/information.
    I know my audience would appreciate your work. If you’re even remotely interested, feel free to send me an email.

  3. site dit :

    Good article. I’m facing a few of these issues as well..

  4. I enjoy, lead to I found exactly what I was having a look
    for. You’ve ended my 4 day lengthy hunt! God Bless you man. Have a nice day.
    Bye

  5. wonderful issues altogether, you simply received a new reader.
    What may you suggest about your publish that you simply made some days in the past?
    Any certain?

  6. I am truly thankful to the holder of this site who
    has shared this wonderful article at here.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s