Veritabanı sürüm kontrolü ve dağıtımı için çözüm mü?


11

Şu anda bir döküm komut dosyası kullanın ve git repo veritabanına taahhüt. --skip-extended-insert --skip-comments --skip-dump-datebir farkın bana neyin değiştiği hakkında adil bir fikir verebileceği anlamına gelir, ancak birleşmeye çalışırsam her şey düşer.

WP_SITEURL, WP_HOME ve diğer tüm wordpress mağazalarının tam URL'leri başka bir ana bilgisayara aktarılırken güncellenmesi gerekiyor (test, aşamalandırma, üretim)

Daha iyi bir yöntem kullanan var mı?

Ana konular:

  • Wordpress tam URL'leri veritabanında depolar (taşınabilir olmayan)
  • İlgili olmayan diğer birçok kayıt değişir
    • auto_increment değerleri (sadece bunları kaldırırım, ancak kimlik sorunlarıyla karşılaştım)
    • zaman damgaları (potansiyel olarak da çıkabilir)
    • geçici * kayıtlar ... onlarla ne yapacağımı bilmiyorum

Zaman damgalı geçişler yaratan, yalnızca eklenen veya kaldırılan şeylerle ilgili bir işlem ideal olurdu ... ancak bunun mümkün olup olmadığından emin değilim?


Tüm veri değişikliklerini mi yoksa yalnızca yapı değişikliklerini mi sürümlemek istiyorsunuz ? ve bu sizin gerçek iş göreviniz mi?
Tembel Porsuk

WordMS gibi CMS'lerde değişiklik yaparken, mantık (kod) değişiklikleriyle birlikte genellikle içerik ve yapılandırma (DB verileri) değişiklikleri vardır. Her ikisini de sürdürebilmek istiyorum. Yapı değişiklikleri iyi bir başlangıç ​​olur ... İŞ GÖREVİ: istemci yeni widget ister. Hazırlama sunucusuna eklenti yükleyin, repo'ya bağlanın -> Eklentiyi yapılandırın ve örnek içerik ekleyin -> onaylandıktan sonra kod değişikliklerini üretime çekin, ardından üretim yöneticisinde aynı veri değişikliklerini manuel olarak yapın.
Jacob Dorman

1
@JacobDorman Aynı problemi çözmeye çalışıyorum. Henüz bir şey yaptın mı? Bazı araştırmalardan sonra, belirli bir güncelleme komut dosyası oluşturan bazı özel eklentilerin (muhtemelen yalnızca yüklü eklentiler ve yapılandırma seçenekleri gibi yapılandırma değişikliklerini dışa aktarmak ve genel olarak yayınları, kategorileri ve içeriği dışa aktarmak için) olduğunu düşünmeye başladım. . Başka fikirleriniz varsa duymak isterim.
Víctor López García

Yanıtlar:


4

İşte iki olası çözüm, ikisi de aslında genel MySQL sürüm kontrol araçlarıdır, ancak iş akışınıza uyarlanabilir:

dbv.php

Bu araç, veritabanında algılanan değişikliklerden temelde SQL komut dosyaları olan "geçişler" oluşturur. Bu komut dosyaları yerel bir dizinde saklanır ve bu nedenle geçerli VCS'nize (örneğin git) kaydedilebilir.

Bir PHP web arayüzü üzerinden kullanılır.

DBVC

Temel olarak önceki araca benzer şekilde, bu bir komut satırı arabirimine dayanır. Bir json dosyası ile yapılandırılmıştır. Temel fark, taşıma dosyalarını otomatik olarak oluşturmamasıdır.

Bunu önceki benzerle entegre etmek için bekleyen bir sorun var, bu yüzden aranacak bir şey.

Wordpress Eklentileri

Tekrarlanabilir bir iş akışı oluşturulmasına yardımcı olabilecek bazı eklentiler:


dbvc aradığım bir tür araç gibi görünüyor. Teşekkürler!
Jacob Dorman

1
Yardım ettiğine sevindim. Başka bir ilginç araç buldum, bir süredir güncellenmedi, ancak ganimet.com/idler/MMP
Víctor López García

@JacobDorman DBVC ile DB değişikliklerini farklı ortamlardan başarıyla birleştirebiliyor musunuz? Benim yaptığım kendime ait bir strateji , ama DBVC güncelleme dosyalarını üretmek ya da benzer bir şey kullanmak zorunda yapar mysqldiff SQL döker arasında? Aslında karşılaştırılabilir SQL farklılıkları, özellikle ayrı satırlarda INSERT deyimi parametreleri üretmek yardımcı olmadıkça bu araç yararlı görüntü olamaz ... Her ne kadar bir dosya bununla başa çıkmak için düzenlenebilir varsayalım ...
Spencer Williams

@SpencerWilliams DBVC kullanmadım (ve mysqldiff kullanmadım) ama yine de sürüm kontrolüne db dökümlerini ekledim ... Onları çoğu durumda birleştirilebilir olarak görmüyorum, ancak karşılaştırmanın ötesinde farklılıklar vurgulamaya yardımcı olabilir değişiklikler ve sorunlar.
Jacob Dorman

@victor MMP'yi kontrol ettim. Şema değişiklikleri yapar, ancak veri diffs / insertleri değil.
David Silva Smith

2

Bunu MYSQL üzerinde yapıyorum.

Neyin değiştiğini kolayca görebilmem için tüm tablo şemasını ve verilerini kendi dosyalarına koyar.

Bu iş parçacığındaki diğer çözümlerin çoğundan farklı olarak, bu çözüm bir CMS için önemli olan verileri alır.

Bu çözüm herhangi bir araç kullanmaz, sadece bir komut satırı betiği kullanır.

edit: Eski kod benim ithalat sipariş önemli olduğu bir hata vardı bulundu. --compactbayrağın çıkarılması hatayı düzeltir.

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

Eski kod

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

ve işte nasıl

for x in `ls ./db/*.sql`; do
     echo importing $x
     mysql -pdbpassword dbname --force < $x
done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.