Archives de la catégorie Administration Linux
Migrer les bases de données d’un serveur Mysql
Posté par Tonton Shigure dans Administration Linux le 1 février 2016
Que ce soit pour changer de version majeure de Mysql, changer de système ou de serveur physique, il y a différentes raisons de vouloir migrer un serveur Mysql.
La procédure ci-dessous propose de migrer toutes les bases, utilisateurs et droits d’accès d’un serveur Mysql vers un autre.
Nous nous concentrerons ici sur cette tache (et non sur l’installation/tunning de Mysql).
Version Mémo
En root, sous Debian ou Ubuntu
Sur l’ancien serveur
USER="--defaults-extra-file=/etc/mysql/debian.cnf" for BASE in $(mysql ${USER} -Bse 'show databases') ; do echo "sauvegarde de ${BASE}" mysqldump ${USER} -f ${BASE} --routines --triggers > ${BASE}.sql done rm information_schema.sql mysql.sql mysqldump ${USER} --no-create-info --complete-insert --replace mysql user > mysql_user.sql mysqldump ${USER} --no-create-info --complete-insert --replace mysql db > mysql_db.sql
Sur le nouveau serveur
USER="--defaults-extra-file=/etc/mysql/debian.cnf" for FIC in *.sql ; do BASE=`echo ${FIC} | sed -e "s/\.sql//g"` echo "import de ${BASE}" mysql ${USER} -Bse "CREATE DATABASE \`${BASE}\`" mysql ${USER} -f ${BASE} < ${FIC} done mysql -f ${USER} mysql < mysql_user.sql mysql -f ${USER} mysql < mysql_db.sql
Version Longue, avec explication de texte
En root, sous Debian ou Ubuntu, dans un répertoire vide de préférence.
Etape 1, Sur l’ancien serveur
USER="--defaults-extra-file=/etc/mysql/debian.cnf"
Nous utiliserons le compte « debian-sys-maint » créé à l’installation par Debian / Ubuntu pour éviter de passer un login/pass en paramètre.
for BASE in $(mysql ${USER} -Bse 'show databases') ; do echo "sauvegarde de ${BASE}" mysqldump ${USER} -f ${BASE} --routines --triggers > ${BASE}.sql done
On itère sur toutes les bases pour les dumper.
Des erreurs pourrons éventuellement être affichés pendant le dump des bases « information_schema » et « mysql », ce n’est pas grave, nous n’en avons pas besoins sous cette forme.
Nous allons d’ailleurs supprimer les dumps de ces bases:
rm information_schema.sql mysql.sql
Nous allons maintenant dumper les comptes mysql & droits :
mysqldump ${USER} --no-create-info --complete-insert --replace mysql user > mysql_user.sql mysqldump ${USER} --no-create-info --complete-insert --replace mysql db > mysql_db.sql
Pour ce dump, on crée un fichier non intrusif, qui ne supprime pas les tables existantes au préalable et qui utilise une syntaxe sql « complète », permettant d’éviter le piège de la table user, dont l’ordre & les colonnes diffèrent souvent d’une version à l’autre.
Etape 2, Transfert des fichiers & installation Mysql sur le nouveau serveur
Tout les dumps ont été générés dans le répertoire courant sur l’ancien serveur.
Utilisez votre mode de transfert favori (scp, ftp, nfs ou autre) pour les déplacer vers le nouveau.
Lancez l’installation de Mysql sur le nouveau serveur, et procédez à la config et/ou tunning selon votre besoin.
Etape 3, Sur le nouveau serveur
Allez dans le répertoire où vous avez rapatrié les fichiers.
USER="--defaults-extra-file=/etc/mysql/debian.cnf"
Même technique que précédent pour se connecter.
for FIC in *.sql ; do BASE=`echo ${FIC} | sed -e "s/\.sql//g"` echo "import de ${BASE}" mysql ${USER} -Bse "CREATE DATABASE \`${BASE}\`" mysql ${USER} -f ${BASE} < ${FIC} done
On itère sur tout les fichier pour créer les bases et les importer.
mysql -f ${USER} mysql < mysql_user.sql mysql -f ${USER} mysql < mysql_db.sql
On importe des comptes utilisateurs, ainsi que les droits.
!Attention! Suite à cette import, le mot de passe du compte root du nouveau serveur est maintenant celui de l’ancien serveur.
Chroot Linux « complet » depuis LiveCD / LiveUSB
Posté par Tonton Shigure dans Administration Linux, Mémo / Cheat sheet le 29 janvier 2016
Préparatifs
Ouvrir un terminal en root sur le liveCD.
Astuce LiveCD Ubuntu
sudo bash
Déterminez la partition root de votre système
blkid
/dev/sda1: UUID="0A2B3C4D5E6F7A8B" TYPE="ntfs" (...) /dev/sda4: UUID="a0b1c2d3-e4f5-a6b7-c8d9-e0f1a2b3c4d5" TYPE="ext4"
Monter l’environnement chroot
mkdir linux
mount /dev/sdXY linux/
mount --bind /dev linux/dev/
mount --bind /dev/pts linux/dev/pts
mount --bind /run linux/run/
mount -t proc /proc linux/proc/
mount -t sysfs /sys linux/sys/
chroot linux /bin/bash
Utiliser l’environnement chroot
Exemple / cas classique : restaurer GRUB
update-grub
grub-install /dev/sdX
Quitter l’environnement chroot
exit
umount linux/dev/pts
umount linux/dev
umount linux/run
umount linux/proc
umount linux/sys
umount linux