Actuellement, j'utilise un script de vidage et valide la base de données dans le dépôt Git. --skip-extended-insert --skip-comments --skip-dump-date
signifie qu'un diff peut me donner une idée juste de ce qui a changé, mais tout s'effondre si j'essaie de fusionner.
WP_SITEURL, WP_HOME et tous les autres emplacements Les magasins complets wordpress doivent être mis à jour lors de l'importation sur un autre hôte (test, transfert, production)
Est-ce que quelqu'un utilise une meilleure méthode?
Principaux problèmes:
Un processus créant des migrations horodatées, avec uniquement les éléments ajoutés ou supprimés, serait idéal ... mais je ne sais pas si c'est même possible?
Voici deux solutions possibles. Il s’agit en réalité d’outils génériques de contrôle de version de MySQL, mais ils peuvent être adaptés à votre flux de travail:
Cet outil crée des "migrations", qui sont essentiellement des scripts SQL, à partir des modifications détectées dans la base de données. Ces scripts sont stockés dans un répertoire local et peuvent donc être validés sur votre VCS actuel (git, par exemple).
Il est utilisé via une interface Web PHP.
Fondamentalement similaire à l'outil précédent, il est basé sur une interface de ligne de commande. Il est configuré via un fichier JSON. La principale différence est qu'il ne génère pas automatiquement les fichiers de migration.
Il y a un problème en suspens pour intégrer cela avec le précédent similaire, c'est donc quelque chose à rechercher.
Plugins Wordpress
Quelques plugins qui pourraient aider à la création d'un workflow reproductible:
Je le fais sur MYSQL.
Il met tous les schémas et les données des tables dans leur propre fichier afin que je puisse facilement voir ce qui a changé.
Contrairement à la plupart des autres solutions de ce fil, cette solution récupère les données, ce qui est important pour un CMS.
Cette solution n'utilise aucun outil, mais juste un script en ligne de commande.
edit: J'ai trouvé que mon ancien code avait un bogue où l'ordre d'importation était important. enlever le drapeau --compact
corrige le bogue.
for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do
echo exporting $x
mysqldump -u root -ppassword --skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset --extended-insert=FALSE --replace --skip-dump-date dbname $x > "./db/$x.sql"
done
Ancien code
for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do
mysqldump -u root -ppassword --compact --extended-insert=FALSE --replace dbname $x > "./db/$x.sql"
done
et voici comment importer
for x in `ls ./db/*.sql`; do
echo importing $x
mysql -pdbpassword dbname --force < $x
done