jeudi, décembre 3 2009

Récupérer ses bases de données Mysql à partir des fichiers frm MYI et MYD

L'utilitaire myisamchk est adapté à la maintenance des tables et leur recouvrement. Toutefois, même si la réparation d'une table avec myisamchk est sécuritaire, il est toujours préférable de faire une sauvegarde avant la réparation, ou toute autre opération de maintenance qui pourrait faire de nombreuses modifications dans la table.

  • Contexte

Ici nous installerons une base à partir de fichiers .MYD .MYI sauvegardés (présents dans /MA_SAUVEGARDE). Ces fichiers se trouvent initialement dans le répertoire des data de mysql (datas regroupées par répertoire où chaque répertoire correspond à une base), il suffit donc d'avoir ces répertoires pour les réinstaller, réparer etc.)

  • Config utilisée

Répertoire local dans lequel on souhaite restaurer : /var/lib/mysql/
Les sauvegardes des anciennes database à partir du répertoire mysql contiennent toutes des fichiers .frm .MYD MYI

  • Dans /var/lib/mysql/

On recrée le répertoire de la base à installer et affecte les droits mysql + lecture/écriture

mkdir MA_BASE
chgrp mysql MA_BASE/ -R
chown mysql MA_BASE/ -R
chmod 777 MA_BASE/ -R

On copie les données

cp /MA_SAUVEGARDE/var/lib/mysql/MA_BASE/* /var/lib/mysql/MA_BASE/

Arrêt du serveur mysql => IMPERATIF

service mysqld stop

(ici fedora, commande d'arrêt du serveur mysql)

  • Commande mysql

On va dans le répertoire de la base à réinstaller / restaurer dans laquelle les fichiers ont été copiés

cd MA_BASE
myisamchk -r MA_BASE *

Redémarrer le serveur mysql lorsque toutes les restaurations ont été faites : les logs console affichés lors de la commande vous permettront de voir les process

service mysqld start

Les tables sont utilisables.

Voir sur le site http://dev.mysql.com/doc/refman/5.0/fr/table-maintenance.html pour toutes les explications concernant l'utilisation de myisamchk

Installation php 5.3 et php 2.11 sur fedora 12 et apache2 (httpd)

  • Environnement

Environnement fedora 12 / apache2 (httpd) => procédure d'installation sur le blog de jean-phi

L'installation de php sur la fedora 12 via yum installera la version 5.3 de php.

  • Contexte

Afin de pouvoir développer de nouveaux sites avec la version php5.3 mais de ne pas avoir à reprogrammer ceux développés avec la 5.2.x nous avons du faire cohabiter php5.3 et php5.2.11.

  • Install php 5.3
yum install php

le fichier php.ini se trouve dans /etc/ mettre error_reporting à on

  • Install php5.2.11

pré-requis librairie libxml pour php :


yum install libxml2-devel.x86_64
yum install  mysql-devel.x86_64

mkdir /usr/local/bin/php5.2

télécharger sources =>

tar -xzvf php-5.2.11.tar.gz

cp /usr/local/bin/php5.2.11/php.ini-recommanded /etc/php5.2/php.ini

./configure --prefix=/usr/local/bin/php5.2 --with-mysql=/usr/bin/ --with-libdir=lib64 --enable-pdo=shared --with-pdo-mysql=shared,/usr/bin/mysql --with-sqlite=shared --with-pdo-sqlite=shared --with-config-file-path=/etc/php5.2 --with-mysql-sock=/var/lib/mysql/mysql.sock --with-config-file-scan-dir=/etc/php.d

make && make install
  • Config

vérifier la présence de actions_module dans le fichier de config de apache

cat /etc/httpd/conf/httpd.conf | grep act

doit retourner => LoadModule actions_module modules/mod_actions.so

sinon insérer la ligne dans la section modules du fichier de conf (il faut bien sûr que le fichier modules/mod_actions.so existe...)

Pour les sites devant utiliser la version php5.2.11 :

<VirtualHost *:80>
   ServerName www.toto.loc
   DocumentRoot "/var/www/html/www.toto.loc/"
   <Directory "/var/www/html/www.toto.loc/">
       DirectoryIndex index.php index.html index.htm
       AllowOverride All
       Options All -Indexes
       Order allow,deny
       Allow from all
       Action php-script  /php5.2/php-cgi
       AddHandler php-script .php
   </directory>

    ScriptAlias /php5.2/ /usr/local/bin/php5.2/bin/
   <Directory /usr/local/bin/php5.2/bin>
       AllowOverride None
       Options -Indexes +ExecCGI +FollowSymLinks
       SetHandler cgi-script
       Order allow,deny
       Allow from all
    </Directory>
</VirtualHost>
  • Commande php :
mv /usr/local/bin/php /usr/local/bin/php_5.2

ln -s /usr/local/bin/php php
php -v => 5.3
ln -s /usr/local/bin/php5.2/bin/php php5.2
php5.2 -v => 5.211

Le fait que la commande en ligne php soit celle de la version php5.3 vous évitera de rencontrer des problèmes lors des commandes doctrine de symfony (notamment des problèmes avec drivers mysql).

  • php.ini

Il faut copier le fichier php.ini dans le réperoire exécutant le php-cgi, ici : /usr/local/bin/php5.2/bin/ pour qu'il soit pris en compte.

Vous pourrez ajouter dans le virtual host du site utilisant la version php5.2.11

SetEnv PHP_INI_SCAN_DIR /etc/php.d

=> prise en charge des fichiers de config.ini.

Pensez à modifier les php.ini pour qu'ils correspondent à vos besoins ( exemple extension_dir).

service httpd restart

Un simple phpinfo(); devrait vous confirmer que votre configuration fonctionne.