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

Re: Comment transferer des DB d'un serveur a un autre



Salut,

> @Ph. Gras: je l'utilse beaucoup, c'est tres pratique phpmyadmin. Par contre a la derniere tentative d'un mysqldump, j'ai eu quelques mauvaises surprises. 

J'utilise aussi phpmyadmin, c'est effectivement très pratique lorsque tu souhaites intervenir sur une ligne en particulier.

Tu peux également exporter / importer des tables ou des bases, mais uniquement dans la mesure de la mémoire qui a
été allouée à mysql. Donc ça n'ira pas au-delà que quelques Mo, et de toute façon ton disque dur ne suivrait pas…

Normalement, tu dois pouvoir récupérer l'encodage de chaque base ou table avec phpmyadmin, et ensuite :
mysqldump -u root -p --default-character-set=utf8 database_name -r database_file.sql

> surement des problemes de formats comme tu le dis. Dans mon cas c'est un peu ingerable car je ne connais pas reellement le contenu des DB car un utilisateur peut tres bien utiliser un caractere que j'utilise comme delimiteur dans un champs de la DB. De ce fait le mysqldump devient un peu complique , voir très complique

Il n'y a pas de délimiteur avec MySQL, tu dois confondre avec CSV ; en revanche il en existe lorsque tu fais un Dump…

Sinon et sans garantie, regarde un peu ce que tu as dans /var/lib/mysql cela te surprendra sans doute :-)
Ceci dit, ça m'est déjà arrivé d'essayer de faire coïncider les fichiers, et je n'y suis pas arrivé.

Dans ton cas particulier et pour éviter d'effectuer et le dump que tu redoutes et l'opération casse-gueule évoquée juste
avant, voici comment je procéderais :

1). D'abord, une sauvegarde automatique incrémentale de toutes mes bases avec backup-manager :
# apt-cache search backup-manager
backup-manager - Outil de sauvegarde en ligne de commande
backup-manager-doc - documentation pour Backup Manager

https://packages.debian.org/fr/stretch/backup-manager

Tu programmes ça la nuit ou à la pause déjeuner ;-)

2). Un transfert des fichiers SQL générés de serveur à serveur via SFTP.

3). Re-création de chaque utilisateur et table proprement avec MySQL :
mysql -u root -p
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'pwd';
mysql> GRANT USAGE ON * . * TO 'postfix'@'localhost' IDENTIFIED BY 'pwd';
mysql> CREATE DATABASE `postfix` ;
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

4). Importation de chaque base proprement avec MySQL :
mysql -u root -p database_name_X < database_file_X.sql

Si tu en as beaucoup, tu peux mettre ça dans une boucle en bash…

Bon courage,

Ph. Gras

Reply to: