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

Répondre à