Script de copie base Mysql entre deux serveurs (magento, Prestashop..)

Le but est de copier une base Mysql entre deux serveurs automatiquement, par exemple toute les nuits à 5h30 du matin.

  • Vérifier que les accès Mysql soient ouverts dans my.cnf
  • avoir au moins une base créer vierge sur le Serveur de destination (la première)
  • créer un petit Script.sh
  • Planifié le Scritp (Cron)

1) Ouvrir l’accès Mysql vers l’extérieur :

  • Editez le fichier : /etc/mysql/my.cnf
  • Commentez la ligne avec un # : skip-networking et Bind-address
  • Redémarrer  : Service mysql restart

J’ai fait un tutoriel ici : Explication pour Autoriser la connexion a distance MySQL

2) La première fois :

Créer une base de donnée vierge et un utilisateur sur le serveur de destination (Cible).

Si vous avez Plesk :

  • Créer la base vièrge : Dans Plesk >  Accueil> Abonnements> VoreSiteWeb> Sites Web & Domaines> Bases de données > Sélectionnez > Ajouter une nouvelle Base de données

3) Création et Exécution du Script:

Il doit être placé et exécuté dans un dossier du serveur de destination (cible)

Avec un éditeur de texte vous créer un fichier ici et sous le nom : /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

  • Il doit impérativement commencer par : #!/bin/sh

Remplacer

LoginBaseDistant : le nom de l'utilisateur de la base distante 
MotdePasseBaseDistant : Mot de passe de la base distante
NomBaseDistant : nom de la base distante 
VotreCheminCible : Votre dossier de destinations
#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

echo "Etape 1 ) Récupération de la base distante et sauvegarde en cours..."
 mysqldump -h 192.154.154.10 -u LoginBaseDistant -pMotdePasseBaseDistant NomBaseDistant >/VotreCheminCible/Sauvegarde.sql 

chmod 777 /VotreCheminCible/Sauvegarde.sql  

echo "Etape 2 ) Restauration sur ce serveur de cette sauvegarde en cours..."

mysql -u LoginBase -pMotdePasseBase NomBase </VotreCheminCible/Sauvegarde.sql 

echo "Terminée"
  • Enregistrer le fichier dans un  dossier de votre Serveur, par exemple /var/MesSauvegarde/sauvegardeMysql.sh
  • Ajouter le Droit de exécuter : chmod 777 /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh
  • Pour exécuter il vous plus qu’a taper :
    ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

4) Modifier automatiquement : Core_Config_data

Pour Magento : Ajouter des instructions Mysql pour Modifier automatique le fichier Core_Config_data :

si votre Serveur Destination n’a pas le même dossier pour Magento, et certainement par la même URL, voici ce de vous devez ajouter ceci au Script pour qu’il modifie automatiquement le  Core_Config_data :

C’est très simple, dans un petit fichier texte vous saisissez les instructions Mysql que vous avez besoin, vous ajoutez un ; a la fin de chaque ligne.

Dans un Fichier texte appeler :mes.mysql

je saisie ces deux lignes pour Modifier le Core_config_data de Magento

update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/secure/base_url";
update core_config_data set  value="http://MonSite/MonDossierMagento/" where path="web/unsecure/base_url";

Pour l’exécuter, je peux saisir :

Mymysql -h localhost -u User161 -p35hpzq.. Base161 < mes.mysql

Ou vous ajouter au  Script   (voir Tuto créer un Script)

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

echo "Lancement du Script"
mysql -h localhost -u User161 -p35hpzq.. Base161 <mes.mysql
Echo "Terminé"

5) Vous n’avez plus qu’a insérer ce petit script dans un tâche Planifiée avec Crontab ou Gmone-schedule


Créer une tâche Planifiée

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :  ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 5H00 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_Mysql.sh

Explication des instructions crontab sur wikipedia


 j’ai fait un tutoriel sur les taches Planifiées ici

_______________________________________________________


VOIR AUSSI : Voir tutoriel Créer une sauvegarde Mysql Magento en ligne de commande ici

Publicités

C2) Permuter entre deux serveurs Magento.

Si vous changez les DNS de vos noms de domaines pour basculer vers un nouveau serveur, la diffusion prend 48H pendant ce temps vous ne savez pas sur quel serveur vous serrez.

Pour le répertoire Magento, c’est pas trop grave du moment que vous utilisez le même nom de dossier et le même nom de domaine.

Par contre la Base de donnée elle risque de ne plus être à jour, car vous risquez d’avoir des commande sur le Serveur 1 et sur le serveur 2

La Solution:

1) Copier le Site et la Base de donnée

J’ai fait de nombreux tutoriels selon les cas ici : Sauvegardes Magento

3) Autoriser l’accès à la base de donnée Mysql a distance dans le my.cnf : j’ai fait un tuto sur ce sujet ici

Dès que vous êtes Prêt a Basculer :

4) Modifier le Local.xml du la Base du Serveur Numéro 1

4a) Mettez-y les paramètre pour utiliser la base du Serveur N°2

Local.xml

il est nécessaire de modifier local.xml

  1. Ce Fichier ce trouve dans votre dossier magento : magento/app/etc/local.xml
  2. Il faut éditer le fichier local.xml de magento/app/etc/local.xml avec un éditeur de texte : sous linux avec Geany, sous windows avec NotePad++
  3. Pour Mettre les informations concernant votre nouvelle Base MySQL de Magento et le nouveau serveur:
  • IpDuNouveauServeur : c’est l’ip du serveur Distant Mysql
  • LoginDeLABase : Le nom de l’utilisateur de la base MySQL/Magento Distante
  • MotDePasse : Le mot de Passe de l’utilisateur de la Base distante
  • NomDelaBase : Le Nom de Base MySQL/Magento Distante
 /Magento/app/etc/local.xml 

     default_setup
            connection
                host  ![CDATA[IpDuNouveauServeur]]  /host
           username  ![CDATA[LoginDeLaBase]]  /username
            password  ![CDATA[MotDePasse]]  /password
            dbname  ![CDATA[NomDeLaBase]]  /dbname
            active 1 /active
        /connection
     /default_setup
/resources
session_save  ![CDATA[files]]  /session_save
/global
admin
    routers
        adminhtml
            args
              frontName  ![CDATA[admin]]  /frontName

5) Important :

Vider la cache et les Sessions :  Dans le Dossier /magento/var/cache et /magento/var/session

Si non la modification du Local.xml ne sera pas pris en compte.


6) Pointer vos noms de Domaine vers IP (DNS) du nouveau Serveur

Attention ça peut prendre 24/48H de propagation…

Vu que vous avez déja la base de données Magento qui pointe vers le nouveau serveur, vous pouvez, Changer des Prix, traiter des Commandes etc…

Mais n’ajoutez rien Produits, images, etc.. pendant le temps de la Propagation.

Terminé 🙂


Si vous Utilisez un Ip FailOver j’ai fait ce tutoriel ici : Permuter entre deux serveurs avec ip failover Ovh sous plesk


Script sauvegarde du dossier Magento entre deux serveurs

Pour copier le dossier de Magento entre deux serveurs, automatiquement la Nuit .

il faut :

  • Installer curlftpfssur les serveurs (au moins sur celui Destination)
  • Créer un Script de copie entre les deux serveurs
  • Planifier l’exécution du script la nuit (matin très tôt +-5h)

Pour installer curlftpfssur  soit en ligne de commande dans un terminal (ssh avec putty.exe), tapez

sudo apt-get install curlftpfs

Soit sous gnome si vous acceder a gnome via un interface grahique voir FreeNX

> ubuntu > applications >Logithèque Ubuntu > curlftpfss

_______________________________________________________

voici que que nous allons mettre dans le Script

A saisir dans un éditeur de texte : enregistrez sous : /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh


#!/bin/sh
# La première ligne sert à spécifier quel shell à excéuter. (sh)
# pour executer un script il faut
# a) changer le droit devenir executable:  chmod 777 NomDuScrip.sh
# b) puis l'executer : ./NomDuScrip.sh
##################################################################

#  Création de deux dossiers temporaires sur votre serveur :  /
mkdir /var/ftpt
mkdir /var/ftptemp

# 2 Activer la connexion du serveur distant en FTP vers ce dossier /var/ftp
# Vous devez connaitre le nom du ServeurFTP, Login et Mot de passe
curlftpfs ftp://MonServeurFtp.fr/DossierDistant /var/ftp -o user=Login:MotDePasse

# 3 Purger la cache du serveur distant :
rm -Rf /MonFtp/Magento/var/cache
rm -Rf /MonFtp/Magento/var/session

# 4 Purger la cache du serveur destination :
rm -Rf /var/www/vhosts/VotreSite.fr/httpdocs/Magento/var/cache
rm -Rf /var/www/vhosts/VotreSite.fr/httpdocs/Magento/var/session

# 5 sauvegarder .htaccess et local.xml du serveur Destination
cp /var/www/vhosts/VotreSite.fr/httpdocs/Magento/app/etc/local.xml /var/ftptemp/sauvegarde_local.xml
cp /var/www/vhosts/VotreSite.fr/httpdocs/Magento/.htaccess /var/ftptemp/sauvegarde_htaccesslocal
#
# 6 Copie du dossier Magento (Serveur distance source) vers le celui-ci
# avec la commande cp -r  vous pouvez ajouter 
# -uNe pas effectuer la copie si le fichier destination existant a une
# date  de  modification  plus  récente que celle du  fichier source.
cp -r -u /var/ftp/magento /var/www/vhosts/MonSite.fr/httpdocs/
#
# 6 Remettre .htaccess et local.xml du serveur Destination
cp /var/ftptemp/sauvegarde_local.xml /var/www/vhosts/VotreSite.fr/httpdocs/Magento/app/etc/local.xml
cp /var/ftptemp/sauvegarde_htaccess /var/www/vhosts/VotreSite.fr/httpdocs/Magento/.htaccess
#
# 7 Vérifier les Droits
chmod -R 777 /var/www/vhosts/VotreSite.fr/httpdocs/Magento/
#
# 8 Désactiver le ftp /var/ftp/ (démonter)
umount /var/ftp
#
# 9 supprimer des dossiers temporaires /var/ftp et /var/ftptemp
rm -Rf /var/ftp
rm -Rf /var/ftptemp

#
#
# Terminée....

Pour Exécuter le script :

changer le droit devenir executable:

chmod 777 /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh 


Exécuter :

./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh 

_______________________________________________________

Attention : Il faut aussi copier la base de données Mysql de Magento

J’ai fait deux autres tutoriels  dont  un qui regroupe les deux en mêmes temps Base + Dossier ici : Tutoriel pour automatiser une copie total de magento entre deux serveurs

et un juste pour la Base Mysql ici : Comment créer un script de copie base mysql-entre deux serveurs magento prestashop

_______________________________________________________

Créer un Tache Planifier pour lancer ce script Automatiquement :

Créer une tâche Planifiée

Pour installer le planificateur taches gnome schedule suivre ce tutoriel.

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine 1 = à 7H00 tous les lundi
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 5 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh
  • Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.___________________________________________________________________

    Ou  avec crontab  (Planificateur de tâche en ligne de commande )

    (sans gnome-schedule), tapez :
    crontab -e
    insérez :0 5 * * *
    /var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp.sh
  • Explication des instructions crontab sur wikipedia

     j’ai fait un tutoriel sur les taches Planifiées ici

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

Copier une base MySQL entre 2 serveurs avec Plesk (Magento, Prestashop, etc…)

Que ce soit une Base Magento, Prestashop ou tout autre, c’est du MySQL.

Avez vous déjà essayez d’utiliser Plesk (à partir de la 10 ou supérieur) pour copier votre base de données MySQL

C’est très simple mais d’origine ça ne fonctionner pas !

Procédure :

1) Ouvrir l’accès Mysql vers l’extérieur :

  • Editez le fichier : /etc/mysql/my.cnf
  • Commentez la ligne avec un # : skip-networking et Bind-address
  • Redémarrer  : Service mysql restart

J’ai fait un tutoriel ici : Explication pour Autoriser la connexion a distance MySQL

2) Créer une base de donnée vierge et un utilisateur

Sur le serveur de destination (Cible).

  • Créer la base vièrge : Dans Plesk >  Accueil> Abonnements> VoreSiteWeb> Sites Web & Domaines> Bases de données > Sélectionnez > Ajouter une nouvelle Base de données

3) Copier la  base de donnée vers l’autre serveur

Sur le serveur Source (de départ):

  1. Copier la base : Dans Plesk >  Accueil> Abonnements> VoreSiteWeb> Sites Web & Domaines> Bases de données > Sélectionnez > la Base source
  2. Cliquez sur faire une copie
  3. Serveur de la base de données cible Sélectionnez :  Autres…
  4. Saisissez Nom d’hôte ou adresse IP * :  Mettre ip du serveur cible
  5. Nom d’utilisateur* mettre le nom de la base cible (la base vierge)
  6. Mot de passe* de la base cible (la base vierge)
  7. Coché : Copier vers la base de données existante :
  8. Saisissez le nom de la Base cible (la vierge)

Terminé 🙂


Pour Magento :

Pour utiliser cette copie votre Magento dans un autre dossier ou serveur, il va faloir modifier aussi, core_config_data, Local.xml, .htaccess.. j’ai fait un tuto ici.


Voici ici une autre méthode pour:

Automatiser la sauvegarde Mysql entre 2 serveurs. avec un Script :

J’ai fait un Tutoriel ici : Comment automatiser la sauvegarde Mysql entre 2 serveurs. avec un Script