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.
Publié par Jérémy Lecour
Publié par Jérémy Lecour
Publié par Jérémy Lecour 