2012-06-27 9 views
9

Ben, bu MySQLTYPO3 sys_log güzel ve temiz tutmanın en iyi yolu? Bunu cronjob eğer

DELETE FROM sys_log 
WHERE sys_log.tstamp < UNIX_TIMESTAMP(ADDDATE(NOW(), INTERVAL -2 MONTH)) 
ORDER BY sys_log.tstamp ASC 
LIMIT 10000 

sys_log küçük tutmak için bu iyi mi var?

+1

Gerçekte bir fiil nedir? – HerrSerker

+0

Hayır, bu bir isim. Bu cronjob. Bir cronjob. Kişisel olarak yaratıcı kelime-yaratıcılığını burada düşünmeme rağmen. Eğer aklınız varsa, düzenlemeye özen gösterin? – wirap

cevap

8

Evet ve siz kayıt tarihine umurumda eğer DEĞİL Hayır

. Sys_history tablosunu kullanarak kayıtlardaki değişiklikleri (içerik, sayfa vb.) Geri alabilirsiniz. Sys_history tabloları ve sys_log tabloları ilişkilidir. Sys_log'u kestiğinizde, sistemdeki herhangi bir değişikliği geri alma yeteneğini de kaybedersiniz. Müşterileriniz bundan hoşlanmayabilir. Yalnızca sys_log boyutu umurumda eğer

IS. Tablonun cron ile kesilmesi iyidir.

TYPO3'te 4.6 ve üstü tablo çöp toplama zamanlayıcısı görevini kullanabilirsiniz. 4.5'in altındaki TYPO3 sürümleri için tablecleaner uzantısını kullanabilirsiniz. [N] günlerinden daha eski olan sys_log'daki tüm kayıtları kaldırırsanız, [N] günler için kayıt geçmişinizi de koruyacaksınız. Bu benim için en iyi çözüm gibi görünüyor.

Ve büyük sys_log tablolar için ilk etapta ;-)

+0

Hızlı bir yorum - IIRC bir zamanlayıcı işi var, bu sayede evinizi TYPO3 kurulumunuzda "içeride" temizlemeye devam edebilirsiniz ve farklı harici cli işleri çalışmıyor. –

7

Evet, öyle.

bir zamanlayıcı görevi bunun için vardır TYPO3 kurulum temiz ve

6

küçük tutma konusunda da other suggestions by Jochen Weiland bakınız. Bu, Table garbage collection (scheduler) olarak adlandırılır.

TYPO3 4.7'de, yalnızca sys_log tablosunu temizleyebilirsiniz. TYPO3 6.0'dan başlayarak, sys_history tablasını da temizleyebilir. Gün sayısını ve hangi tabloların temizleneceğini yapılandırabilirsiniz.

Uzantılar, temizlemek için başka tablolar da kaydedebilir.

+0

Neye denir? – HerrSerker

+0

İsme ve isme birkaç kelime daha ekledim. Typo3 4.7.8 içinde – pgampe

+0

Bu görev, zamanlayıcı uzantısındaki çeşitli hatalardan dolayı arka planda planlanamaz.Bkz. Http://forge.typo3.org/issues/48022, http://forge.typo3.org/projects/typo3v4-core/repository/revisions/f3f892ee2d3915b1934a7ce62cc921a3555cf8be/diff/typo3/sysext/scheduler/class. tx_scheduler_module.php – knb

1

başka sık görülen nedeni daki sys_log doldurarak ne düzeltmeyi deneyin TYPO3 tesisatta kullanılan uzantıların biriyle sorun/hatalardır.

tx_solr eski bir sürümünü kullanılan yaygın bir örnek:

Core: Error handler (FE): PHP Warning: Invalid argument supplied for foreach() in typo3conf/ext/solr/classes/class.tx_solr_util.php 
Core: Error handler (FE): PHP Warning: array_reverse() expects parameter 1 to be array, null given in typo3conf/ext/solr/classes/class.tx_solr_util.php line 280 

kayıtlarının Bu set sys_log içinde her dakika açılır ya da öylesine kısa bir sürede kayıtlarını milyonlarca açar olacaktır.

Neyse ki, bu tür kayıtların sys_history kayıt geçmişinde ve ilgili geri alma işlevinde herhangi bir etkisi yoktur, dolayısıyla bunları silmek güvenlidir.

bu olasılıkla LOCK zaman aşımları ile ilgili sorunlara yol olacaktır geniş sys_log var, yani silme sorgusu sınırlamak gerekecek olursa:

delete from sys_log where details LIKE 'Core:%' LIMIT 200000;

1

Kısa cevap:

Hayır, kesinlikle iyi bir fikir değil. Sys_log'dan gerçekten bir şeyler silmek istiyorsanız, sys_history'nin yine de buna başvurduğunu unutmayın. Sys_history için de aynısını yapmalısın.

DELETE FROM sys_log WHERE NOT EXISTS 
(SELECT * FROM sys_history WHERE sys_history.sys_log_uid=sys_log.uid) 
AND recuid=0 AND tstamp < $timestamp LIMIT $limit 

ihtiyaçlarınız için bu duruma çekinmeyin:

Ya da, sadece aşağıdakileri yapın.

ayrıca sys_log.error ile kayıtları siliyor güvenle (sys_history etkilemeden) yapabilecekleriniz = 0.

açık cevap:

  • gelişiminde testinizi yapın, değil üretime . Gelişimdeki hatalarınızı ortadan kaldırın. Bunu yakından takip etmek için geliştiricilerinizi eğitin ve eğitin.
  • komut dosyası tarafından, ancak hatalar salt
  • üretim
  • yakından sys_log Monitör gelişimi üzerinde (Uyarılar) ayrıntılı şekilde ayıklama düzeyini ayarlama veya el

Biraz daha önerileri:

  • Düzenli olarak sys günlüğüne bakın ve sorunları ortadan kaldırın. Sorunu düzelttikten sonra sys_log özel hatasını silebilirsiniz (sys_log.error! = 0, sys_log.details bölümüne bakın). Bir veritabanı komutuyla veya daha yeni TYPO3 sürümlerinde yapabilirsiniz "SYSTEM: log" kullanın: her büyük güncelleme üzerinde

enter image description here

  • düğmesi "benzer hataları Sil" arka uç ve kullanımı Düşük seviye süpürge kullanarak (örneğin silinen = 1 ile kayıtları siler) bir ve truncate sys_history yapıyoruz. İlk olarak editörlere yakın olan numaralı telefondan biriyle konuştuğunuzdan emin olun; TYPO3 örneğinin daha eski bir sürümünü çevrimiçi olarak yalnızca dahili erişim ile tutarak iyiyiz. Bazı şeyleri temiz tutmayı seviyoruz.

Daha yeni TYPO3 sürümlerinde, sys_log ve sys_history arasındaki ilişki sorunu artık olmayacaktır. TYPO3'te Breaking Change #55298'a bakın.

İlgili konular