Script d’une sauvegarde de la Base Mysql de Magento

Création d’un Script de sauvegarde

Nous avons besoin de faire quoi

  1. De sauvegarder la base (Mysqldump)
  2. De changer les droits de la sauvegarde (chmod)
  3. De Compressez la sauvegarde (Gzip)

J’ai fait un tutoriel sur  le 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

mysqldump -u Login -pMotdePasse NomBase >/VotreChemin/Sauvegarde.sql 

chmod 777 /VotreChemin/Sauvegarde.sql 

gzip -f -9 /VotreChemin/Sauvegarde.sql

Créer une Tache pour Chaque jour de la semaine avec un nom de Sauvegarde différent (SauvegardeDuLundi.sql, Mardi.sql, etc..,) vous pouvez aussi faire Janvier, Fevrier, etc..

Les Habitués du script ajouteront une variable

______________________________________________________

2) Créer une tâche Planifiée avec Gnome-schedule

  • Si vous utilisez gnome-schedule :
  • 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 du Lundi”
  • Commande : Précisez votre Script ou la ligne de commande :  ./CheminDuScrip/script.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine 1 = à 7H00 tous les lundi
  • Ajouter et Valider

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

3)  Ou créer une tâche Planifiée avec crontab :

Planificateur de tâche en ligne de commande

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 7 * * * ./CheminDuScrip/script.sh

Explication des instructions crontab sur wikipedia


J’ai fait aussi un tutoriel pour planifier cette sauvegarde toutes les nuits : voir ici : Comment planifier des taches magento avec planificateur taches gnome schedule

Publicités

Copier tout Magento (Base+Dossier) entre 2 serveurs automatiquement et planifiée

Pour copier Magento entre deux serveurs, automatiquement la Nuit .

J’ai déja fait des script et des tutoriels pour chaque étape:

Tutoriel Comment :

1) il y a 3 Scripts à créer suivez chacun de ces tutoriels :

  1. Désactiver ReWrite dans l’admin >> sytème >> Configuration >> Web >> Utiliser les réécriture du serveur web  mettre NON
  2. Purger les Log pour Réduire la Base et vider la cache
  3. Copier la Base Mysql entre deux serveurs
  4. Copier le dossier Magento en ligne de commande FTP
  5. Modifier Le core_data_config

_________________________________________________________

2) Il n’y a plus qu’a  faire un script qui lance 4 scripts 🙂

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

#!/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

############################################################
#### ETAPE 1 Nettoyer les log .. Exécution du script 1 #########
############################################################
./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

############################################################
#### ETAPE 2 récupérer la base Mysql et la restaurer #########
############################################################

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

############################################################
############# ETAPE 4 Copier les Dossiers en FTP ############
############################################################
./var/vhosts/VotreSite.fr/httpdocs/VotreMagento/shell/Script_sauvegarde_ftp 

############################################################
############# ETAPE 4 Modifier le Core_data_config #########
############################################################
./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_core_config_data

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_complet_2serveurs.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_complet_2serveurs.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_complet_2serveurs.sh

Explication des instructions crontab sur wikipedia


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

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

Script pour garder en pleine forme Magento.

Script pour garder en pleine forme Magento.

Avec un éditeur de texte nous allons créer un fichier script.sh,

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

Nous allons y mettre tout ce que votre serveur Magento a besoin de faire régulièrement.

  • Nettoyer les log de la base de données régulièrement
  • Exécuter la tache Cron.sh de Magento
  • Vider la corbeille du serveur
  • Vider dossier cache et session*
  • Redémarrer les Services apache
  • Redémarrer les Services Mysql
* Mise en garde : vider les sessions a pour effet de vider les paniers en cours et déconnecte les utilisateurs en cours.

_______________________________________________________

 Nettoyer les log de la base de données régulièrement

1) Créer un fichier est les instructions Mysql pour vider les table de Log

Créer avec un éditeur un fichier texte , nommez -le : Vider_table_log.mysql

DELETE FROM dataflow_batch_export;
DELETE FROM dataflow_batch_import;
DELETE FROM log_customer;
DELETE FROM log_quote;
DELETE FROM log_summary;
DELETE FROM log_summary_type;
DELETE FROM log_url;
DELETE FROM log_url_info;
DELETE FROM log_visitor;
DELETE FROM log_visitor_info;
DELETE FROM log_visitor_online;
DELETE FROM report_viewed_product_index;
DELETE FROM report_compared_product_index;
DELETE FROM report_event;

Enregistrez les dans votre dossier /magento/shell/

2) On va créer le Script de purge :

#!/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 +x NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

############################################################
#### ETAPE 1 Nettoyer les log de la base de données ###########
############################################################

#### Connexion a votre Base de Données Magento Mysql ####
##### mysql -h machine -u utilisateur -pMotdePase base_de_données
##  Exemples :
##  mysql -h localhost -u User161 -p35hpzq.. Base161
##  mysql -h 17.31.2.67 -u User161 -p35hpzq.. Base161
## vous pouvez tester dans un terminal, Si vous ête connecté il doit apparaitre :  Mysql>
##  Modifier ci-dessous pour mettre vos paramètre

mysql -h localhost -u User161 -p35hpzq.. Base161 < /magento/shell/Vider_table_log.mysql 
echo "si vous n'avez vu aucun message d'erreur la base est purgé :)"

#########################################################
#### ETAPE 2 Exécuter la tache Cron.sh de Magento #######
#########################################################
/var/www/vhosts/VotreSite.fr/httpdocs/DossierMagento/cron.sh

#########################################################
#### ETAPE 3 Vider la corbeille du serveur ################
#########################################################
rm -r -f /var/.Trash-0/

#########################################################
#### ETAPE 4 Vider cache et session #######################
#########################################################
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/cache

# Attention cette ligne va également vider les panier en cours et déconnecter les utilisateurs
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/session

#########################################################
#### ETAPE 5 Redémarrer les Services apache #############
#########################################################
service apache2 restart

#########################################################
#### ETAPE 6 Redémarrer les Services mysql ##############
#########################################################
service mysql restart

3) Exécuter :

  • Enregistrer le fichier dans un  dossier de votre Serveur, par exemple
     /var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh
  • Ajouter le Droit de l’exécuter :
    chmod +x /var/MesSauvegarde/sauvegarde.sh
  • Pour l’exécuter il vous reste plus qu’a taper :
    ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

______________________________________________________

Vous n’avez plus qu’a insérer ce petit script dans un tâche Planifiée avec Cron 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 “Script Magento en pleine forme”
  • Commande : Précisez votre Script ou la ligne de commande :  ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 7H00 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 7 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.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 7 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

Explication des instructions crontab sur wikipedia


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

_______________________________________________________

On peut aussi ajouter:

  • Sauvegarder la base de Magento
  • Compresser cette sauvegarde
  • Copier cette Sauvegarde vers un autre dossier

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

Purger pour réduire la base MySQL de Magento et Planifier

Nettoyage des Log de Magento soit en manuel via PhpMyAdmin ou en Ligne de commande.
C’est le moyen le plus efficace de nettoyer les logs pour ceux qui travaillent plus à l’aise avec les bases de données. Il est plus rapide que le haut-dans les outils de Magento, et il vous permet de nettoyer quelques tables non incluses dans ces outils.

1) phpMyAdmin via le Panneau Plesk

Dans la droite (principale) une image, sélectionnez la case à cocher pour les tables suivantes:

dataflow_batch_export
dataflow_batch_import
log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online
report_viewed_product_index
report_compared_product_index
report_event
  • Au bas de la page, cliquez sur le menu déroulant qui dit « avec une sélection: » et sélectionnez « vide ».
  • Un écran de confirmation s’affichera. Cliquez sur « Oui ». Cela tronque toutes les tables sélectionnées.

Effectuer régulièrement :
Nous avons vu 2Go + bases baisse d’un quart de leur taille après le nettoyage des journaux, il est donc très important que ce genre d’entretien sont effectués régulièrement. Surtout si votre temps jusqu’au premier octet de latence commence à pousser plus grande, et vous avez mis en œuvre les tweaks de performance.

Source : http://docs.nexcess.net/magento-database-maintenance

2) En ligne de commande à Planifier:

l’interet de la ligne de commande c’est :

  • C’est très Facile
  • C’est très rapide
  • Et vous pouvez ajouter cette ligne dans les Taches Planifier a faire régulièrement (cron)
php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean

3) 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 du Lundi »
  • Commande : Précisez votre la ligne de commande : php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean
  • Expert saisissez : Minute 0 – Heure 6 – jour * – Mois * – jour de la semaine 1 = à 6H00 tous les lundi
  • Ajouter et Valider

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

  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 6 * * * php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean

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 6 * * * php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/shell/log.php clean

Explication des instructions crontab sur wikipedia

_________________________________________________________

4) Méthode plus efficace, par des instructions mySQL dans un Script

voir ce tutoriel ici

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

Autoriser la connexion à distance MySQL sur Serveur (Plesk)

Pour des raisons évidentes de sécurité les Serveur sont parametré par defaut pour utiliser uniquement les bases de données en local : Localhost 127.0.0.1

Pour de nombreuses, on veut pouvoir accéder a la base de données Mysql à partir d’un autre serveur au Hébergement

Cela permet de séparer la base de donnée de votre Hébergement php/html, Faire des copies entre Serveurs Etc..

 

Il faut Modifier sur votre Serveur de base de donnée MsSQL deux lignes dans le fichier my.cnf

Editez le fichier : /etc/mysql/my.cnf
Commentez la ligne avec un # : skip-networking et Bind-address 

port   = 3306  (normalement c'est déjà par defaut)
#Commenter cette ligne
#skip-networking

# Commenter cette ligne
# Bind-address = 127.0.0.1
# ou facultatif : vous pouvez mettre l'adresse du serveur
Bind-adresse = 176.31.254.010  (exemple d'adresse)

Redémarrez MySQL : /etc/init.d/mysql restart , dans un terminal,  ssh

service mysql restart

Une seule adresse peut être sélectionné. Si cette option est spécifiée plusieurs fois, la dernière adresse indiquée est utilisée.

Si aucune adresse ou 0.0.0.0 est spécifié, le serveur écoute sur toutes les interfaces.

Source : http://kb.parallels.com/fr/1134