İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

pt-archiverp - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında pt-archiverp çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen pt-archiverp komutudur.

Program:

ADI


pt-archiver - MySQL tablosundaki satırları başka bir tabloya veya dosyaya arşivleyin.

SİNOPSİS


Kullanım: pt-archiver [SEÇENEKLER] --source DSN --where WHERE

pt-archiver, bir MySQL tablosundan kayıtları keser. --source ve --dest bağımsız değişkenleri DSN kullanır
sözdizimi; COPY evet ise, --dest varsayılan olarak --source'dan anahtarın değerine geçer.

Örnekler:

Tüm satırları oltp_server'dan olap_server'a ve bir dosyaya arşivleyin:

pt-archiver --source h=oltp_server,D=test,t=tbl --hedef h=olap_server \
--file '/var/log/archive/%Y-%m-%d-%D.%t' \
--nerede "1=1" --limit 1000 --commit-each

Yetim satırları alt tablodan temizle (silin):

pt-archiver --source h=ana bilgisayar,D=db,t=çocuk --purge \
--where 'NOT EXISTS(SELECT * FROM parent WHERE col=child.col)'

RİSKLER


Percona Toolkit olgun, gerçek dünyada kanıtlanmış ve iyi test edilmiş, ancak tüm veritabanı
araçlar, sistem ve veritabanı sunucusu için risk oluşturabilir. Bu aracı kullanmadan önce,
lütfen:

· Aracın belgelerini okuyun

· Aracın bilinen "HATALARI" gözden geçirin

· Aracı üretim dışı bir sunucuda test edin

· Üretim sunucunuzu yedekleyin ve yedekleri doğrulayın

TANIM


pt-archiver, içinde açıklandığı gibi tabloları arşivlemek için kullandığım araçtır.
<http://tinyurl.com/mysql-archiving>. Amaç, düşük etkili, yalnızca ileriye dönük bir iştir.
OLTP sorgularını fazla etkilemeden eski verileri tablodan çıkarın. ekleyebilirsiniz
verileri aynı sunucuda olması gerekmeyen başka bir tabloya aktarın. Bir de yazabilirsiniz
LOAD DATA INFILE için uygun bir formatta dosya. Ya da hiçbirini yapamazsınız, bu durumda
sadece artımlı bir SİLME.

pt-archiver, bir eklenti mekanizması aracılığıyla genişletilebilir. Eklemek için kendi kodunuzu enjekte edebilirsiniz.
bağımlı verileri arşivlemek için yararlı olabilecek gelişmiş arşivleme mantığı,
karmaşık iş kuralları veya arşivleme işlemi sırasında bir veri ambarı oluşturma.

Bazı seçenekler için değerleri dikkatli seçmeniz gerekir. En önemlileri "--limit",
"--yeniden denemeler" ve "--txn-size".

Strateji, ilk satırları bulmak, ardından daha fazlasını bulmak için bazı dizinleri yalnızca ileriye doğru taramaktır.
verimli satırlar. Sonraki her sorgu tüm tabloyu taramamalıdır; aramalı
dizine girin, ardından daha fazla arşivlenebilir satır bulana kadar tarayın. ile dizini belirtmek
"--source" argümanının 'i' kısmı bunun için çok önemli olabilir; için "--kuru çalıştırma" kullanın
oluşturulan sorguları inceleyin ve verimli olup olmadıklarını görmek için AÇIKLAYIN
(çoğu zaman muhtemelen varsayılan olan BİRİNCİL anahtarı taramak istersiniz). Hatta
daha iyisi, çalıştırmadan önce ve sonra İşleyici durum sayaçlarındaki farkı inceleyin.
sorgulayın ve her sorguda tüm tabloyu taramadığından emin olun.

Ara-sonra-tara optimizasyonlarını "--no-ascend" ile kısmen veya tamamen devre dışı bırakabilirsiniz.
ve "--ilk önce yüksel". Bazen bu, çok sütunlu anahtarlar için daha verimli olabilir. olmak
pt-archiver'ın seçtiği ve taradığı dizinin başında başlayacak şekilde oluşturulduğunun farkında olun
sadece ileriye dönük. Bu, bir yerden kemirmeye çalışıyorsanız, uzun tablo taramalarına neden olabilir.
tablonun sonu, tercih ettiğinden farklı bir dizine göre. "--source" bölümüne bakın ve okuyun
sizin için geçerliyse, "i" bölümündeki belgeler.

Perkon XtraDB Küme


pt-archiver, Percona XtraDB Cluster (PXC) 5.5.28-23.7 ve daha yeni sürümlerle çalışır, ancak
bir kümede arşivlemeden önce göz önünde bulundurmanız gereken üç sınırlama:

taahhütte hata
pt-archiver, işlemleri gerçekleştirirken hatayı kontrol etmez. PXC ile ilgili taahhütler
başarısız olur, ancak bu gerçekleştiğinde araç henüz işlemi kontrol etmez veya yeniden denemez.
Bu olursa, alet ölecektir.

MyISAM tabloları
MyISAM tablolarının arşivlenmesi işe yarar, ancak PXC'deki MyISAM desteği şu anda hala deneyseldir.
bu sürümün zamanı. PXC, MyISAM tabloları ve
"AUTO_INCREMENT" sütunları. Bu nedenle, arşivlemenin doğrudan
veya dolaylı olarak bir MyISAM tablosu için varsayılan "AUTO_INCREMENT" değerlerinin kullanılmasına neden olur.
Örneğin, "--dest" ile "--sütunlar" kullanılırsa bu olur ve
"AUTO_INCREMENT" sütunu dahil değildir. Araç bunu kontrol etmez!

Küme dışı seçenekler
Bazı seçenekler çalışabilir veya çalışmayabilir. Örneğin, bir küme düğümü aynı zamanda bir
köle, sonra "--check-slave-lag" çalışmıyor. Ve PXC tabloları genellikle
InnoDB, ancak InnoDB "DELAYED EKLE"yi desteklemiyor, ardından "--gecikmeli-insert" desteklemiyor
İş. Diğer seçenekler de çalışmayabilir, ancak araç bunları kontrol etmez, bu nedenle
gerçek kümenizde arşivleme yapmadan önce bir test kümesinde arşivlemeyi test etmelisiniz.

ÇIKTI


"--ilerleme" belirtirseniz, çıktı bir başlık satırı artı aralıklarla durum çıktısıdır.
Durum çıktısındaki her satır, geçerli tarih ve saati, kaç saniye pt-
arşivleyicinin çalıştığı ve kaç satır arşivlediği.

"--statistics" belirtirseniz, "pt-archiver" yardımcı olmak için zamanlama ve diğer bilgileri verir.
Arşivleme sürecinizin hangi bölümünün en çok zaman aldığını belirlersiniz.

HATA YÖNETİMİ


pt-archiver sinyalleri yakalamaya ve zarif bir şekilde çıkmaya çalışır; örneğin, eğer gönderirsen
SIGTERM (UNIX-ish sistemlerinde Ctrl-C), sinyali yakalar,
sinyal verin ve oldukça normal bir şekilde çıkın. "--analiz" veya "--optimize" yürütmez,
çünkü bunların tamamlanması uzun zaman alabilir. Diğer tüm kodları normal şekilde çalıştıracaktır,
arama dahil Bitirdikten sonra() herhangi bir eklentide ("GENİŞLETME" bölümüne bakın).

Başka bir deyişle, bir sinyal yakalanırsa ana arşivleme döngüsünden çıkar ve atlar.
optimize et/analiz et.

SEÇENEKLER


"--dest", "--file" veya "--purge" seçeneklerinden en az birini belirtin.

"--ignore" ve "--replace" birbirini dışlar.

"--txn-size" ve "--commit-each" birbirini dışlar.

"--düşük öncelikli-insert" ve "--gecikmeli-insert" birbirini dışlar.

"--share-lock" ve "--for-update" birbirini dışlar.

"--analiz et" ve "--optimize et" birbirini dışlar.

"--no-ascend" ve "--no-delete" birbirini dışlar.

"--dest" içindeki DSN değerleri, KOPYALAMA evet ise, varsayılan olarak "--source" değerleridir.

--analiz etmek
tür: dize

ANALİZ TABLOSU'nu daha sonra "--source" ve/veya "--dest" üzerinde çalıştırın.

Bitirdikten sonra ANALYZE TABLE'ı çalıştırır. Argüman isteğe bağlı bir dizedir. Eğer o
's' harfini içeriyorsa, kaynak analiz edilecektir. 'd' içeriyorsa,
hedef analiz edilecektir. İkisinden birini veya her ikisini de belirtebilirsiniz. Örneğin,
aşağıdaki her ikisini de analiz edecektir:

--analiz=ds

Görmekhttp://dev.mysql.com/doc/en/analyze-table.html> ANALİZ TABLOSU ile ilgili ayrıntılar için.

--ilk önce yükselmek
Dizinin yalnızca ilk sütununu yükseltin.

Artan dizin optimizasyonunu kullanmak istiyorsanız ("--no-ascend" bölümüne bakın), ancak
büyük bir çok sütunlu dizini yükseltmenin ek yüküne maruz kalmak istiyorsanız, bunu kullanabilirsiniz
pt-archiver'a dizinin yalnızca en soldaki sütununa çıkmasını söyleme seçeneği. Bu
endeksin hiç yükselmemesine göre önemli bir performans artışı sağlarken,
tüm endeksi yükseltme maliyetinden kaçınmak.

Bunun eklentilerle nasıl etkileşime girdiğine dair bir tartışma için "GENİŞLETME" bölümüne bakın.

--ask-geçiş
MySQL'e bağlanırken bir şifre isteyin.

--tampon
Çıktıyı "--file" olarak arabelleğe alın ve işlem sırasında yıkayın.

Yalnızca bir işlem sırasında "--file" olarak otomatik temizlemeyi devre dışı bırakır ve "--file" öğesini diske boşaltır
taahhüt eder. Bu genellikle dosyanın işletim sistemi tarafından bloke edildiği anlamına gelir, bu nedenle
taahhütler arasında da diske bazı örtülü sifonlar olabilir. Varsayılan
her satırdan sonra "--file" dosyasını diske boşaltın.

Tehlike, bir çökmenin veri kaybına neden olabilmesidir.

"--buffer" kullanmaktan gördüğüm performans artışı yüzde 5 ila 15 civarında.
Mesafeniz değişebilir.

--toplu-silme
Her bir parçayı tek bir ifadeyle silin ("--her birini taahhüt et" anlamına gelir).

Tek bir "DELETE" ifadesi ile her satır yığınını toplu olarak silin. İfade
dahil olmak üzere yığının ilk ve son satırı arasındaki her satırı siler. ima eder
"--her birini taahhüt et", çünkü satırları birer birer "INSERT" yapmak kötü bir fikir olacaktır ve
bunları toplu "DELETE" işleminden önce yapın.

Normal yöntem, her satırı birincil anahtarıyla silmektir. Toplu silmeler bir
çok daha hızlı. Onlar Ayrıca olabilir değil be Daha hızlı karmaşık bir "WHERE" yan tümceniz varsa.

Bu seçenek, tüm "SİL" işlemlerini, satır yığını tamamlanana kadar tamamen erteler.
bitti. Kaynakta bir eklentiniz varsa, "before_delete" yöntemi olmayacaktır.
aranan. Bunun yerine, "before_bulk_delete" yöntemi daha sonra çağrılır.

UYARI: kaynakta bazen true döndürmeyen bir eklentiniz varsa
"is_archivable()", bu seçeneği yalnızca ne yaptığını anlıyorsanız kullanmalısınız. Eğer
eklenti "pt-archiver"a bir satırı arşivlememesini söyler, yine de tarafından silinecektir.
toplu silme!

--[no]toplu silme sınırı
varsayılan: evet

"--limit" ifadesini "--bulk-delete" ifadesine ekleyin.

Bu gelişmiş bir seçenektir ve ne olduğunuzu bilmiyorsanız devre dışı bırakmamalısınız.
yapıyor ve neden! Varsayılan olarak, "--bulk-delete", toplu öğeye bir "--limit" maddesi ekler
SQL deyimini silin. Bazı durumlarda, bu madde belirtilmek suretiyle atlanabilir.
"--toplu-silme sınırı yok". "--limit" yine de belirtilmelidir.

--toplu-insert
Her parçayı LOAD DATA INFILE ("--bulk-delete" "--commit-each" anlamına gelir) ile ekleyin.

Her satır yığınını "LOAD DATA LOCAL INFILE" ile ekleyin. Bu çok daha hızlı olabilir
"INSERT" ifadeleriyle bir seferde bir satır ekleme. Oluşturularak uygulanır.
her satır yığını için geçici dosya ve satırları bu dosyaya yazmak yerine
onları sokarak. Yığın bittiğinde, satırları yükler.

Bu seçenek, verilerinizin güvenliğini korumak için toplu silmelerin kullanılmasını zorunlu kılar. o
satırları dosyaya eklemeden önce her satırı bulunduğu gibi silmek güvenli olmayacaktır.
önce hedef. Toplu silmeleri zorlamak, silme işleminin şu tarihe kadar beklemesini garanti eder:
yerleştirme başarılı.

"--low-priority-insert", "--replace" ve "--ignore" seçenekleri bununla çalışır
ancak "--gecikmeli-insert" seçeneği yoktur.

"LOAD DATA LOCAL INFILE", "Kullanılan komut
bu MySQL sürümüyle izin verilir", "L" DSN seçeneği için belgelere bakın.

--karakter seti
kısa form: -A; tür: dize

Varsayılan karakter seti. Değer utf8 ise, Perl'in STDOUT üzerindeki ikili modunu utf8'e ayarlar,
mysql_enable_utf8 seçeneğini DBD::mysql'ye iletir ve ardından SET NAMES UTF8'i çalıştırır
MySQL'e bağlanma. Diğer herhangi bir değer, utf8 katmanı olmadan STDOUT'ta binmode ayarlar,
ve MySQL'e bağlandıktan sonra SET NAMES'i çalıştırır.

Yalnızca MySQL tarafından bilinen karakter kümelerinin tanındığını unutmayın; Örneğin, "UTF8"
çalışır, ancak "UTF-8" çalışmayacaktır.

Ayrıca bkz. "--[no]check-charset".

--[no]kontrol-karakter seti
varsayılan: evet

Bağlantı ve tablo karakter setlerinin aynı olduğundan emin olun. Bu kontrolün devre dışı bırakılması,
metnin yanlışlıkla bir karakter kümesinden diğerine dönüştürülmesine neden olur (genellikle
utf8 - latin1) veri kaybına veya mojibake'e neden olabilir. Bu kontrolün devre dışı bırakılması
karakter kümesi dönüştürmeleri amaçlandığında yararlı veya gerekli.

--[no]kontrol sütunları
varsayılan: evet

"--source" ve "--dest" öğelerinin aynı sütunlara sahip olduğundan emin olun.

Varsayılan olarak etkindir; pt-archiver'ın kaynak ve hedef tabloların
aynı sütunlara sahip. Sütun sırasını, veri türünü vb. kontrol etmez.
kaynaktaki tüm sütunların hedefte olup olmadığını kontrol eder ve bunun tersi de geçerlidir. Eğer
herhangi bir fark varsa, pt-archiver bir hata ile çıkacaktır.

Bu denetimi devre dışı bırakmak için --no-check-columns belirtin.

--kontrol aralığı
tip: zaman; varsayılan: 1s

"--check-slave-lag" verilirse, bu, aracın her birini ne kadar süreyle duraklatacağını tanımlar.
bir kölenin geride kaldığını keşfettiği zaman.
Bu kontrol her 100 satırda bir yapılır.

--slave-lag'i kontrol edin
tür: dize; tekrarlanabilir: evet

Belirtilen DSN'nin bağımlı gecikmesi "--max-lag" değerinden az olana kadar arşivlemeyi duraklatın. Bu
Birden fazla bağımlı kontrol için seçenek birden çok kez belirtilebilir.

--sütunlar
kısa biçim: -c; tür: dizi

Arşivlenecek sütunların virgülle ayrılmış listesi.

Alınacak, dosyaya yazılacak ve dosyaya eklenecek sütunların virgülle ayrılmış bir listesini belirtin.
hedef tablo. Belirtilirse, pt-archiver, aksi belirtilmedikçe diğer sütunları yok sayar.
bir dizini yükseltmek veya satırları silmek için bunları "SEÇ" ifadesine eklemesi gerekir.
Bu ekstra sütunları dahili olarak alır ve kullanır, ancak bunları
dosyaya veya hedef tabloya. o yok bunları eklentilere aktarın.

Ayrıca bkz. "--yalnızca birincil anahtar".

--her birini taahhüt et
Getirilen ve arşivlenen her bir satır grubunu tamamlayın ("--txn-size" işlevini devre dışı bırakır).

Her satır grubu arşivlendikten sonra işlemleri gerçekleştirir ve "--file" siler,
sonraki satır kümesini getirmeden önce ve "--sleep" belirtilmişse uyumadan önce.
"--txn-size" işlevini devre dışı bırakır; ile işlem boyutunu kontrol etmek için "--limit" kullanın
"--her birini taahhüt et".

Bu seçenek, "--limit" ve "--txn-size" değerlerini aynı değerde yapmak için bir kısayol olarak kullanışlıdır.
ama daha da önemlisi, daha fazlasını ararken işlemlerin açık tutulmasını önler
satırlar. Örneğin, eski satırları bir çok dizinin başlangıcından itibaren arşivlediğinizi hayal edin.
"--limit" 1000 ve "--txn-size" 1000 ile büyük tablo. Bir süre bulduktan sonra
ve bir seferde 1000 satırı arşivleyen pt-archiver, son 999 satırı ve arşivi bulur
onları, ardından daha fazla satır bulmak için sonraki SELECT'i yürütür. Bu, geri kalanını tarar
tablo, ancak hiçbir zaman daha fazla satır bulamaz. Çok uzun bir süredir bir işlemi açık tuttu
zaman, sadece zaten bitmiş olduğunu belirlemek için. önlemek için "--commit-each" kullanabilirsiniz.
bu.

--yapılandırma
tür: Dizi

Bu virgülle ayrılmış yapılandırma dosyalarının listesini okuyun; belirtilmişse, bu ilk olmalıdır
komut satırındaki seçenek.

--veri tabanı
kısa biçim: -D; tür: dize

Bu veritabanına bağlanın.

--gecikmeli-insert
DELAYED değiştiricisini INSERT ifadelerine ekleyin.

DELAYED değiştiricisini INSERT veya REPLACE ifadelerine ekler. Görmek
<http://dev.mysql.com/doc/en/insert.html> ayrıntılar için.

--hedef
tür: DSN

DSN, arşivlenecek tabloyu belirtir.

Bu öğe, pt-archiver'ın arşivlenmiş satırları ekleyeceği bir tabloyu belirtir.
"--kaynak". "--source" ile aynı key=val argüman biçimini kullanır. çoğu eksik
değerler varsayılan olarak "--source" ile aynı değerlere sahiptir, bu nedenle seçenekleri tekrarlamanız gerekmez
bunlar "--source" ve "--dest" için aynıdır. Hangisini görmek için "--help" seçeneğini kullanın.
değerler "--source" dizininden kopyalanır.

UYARI: için bir soket tanımlayan varsayılan seçenekler dosyası (F) DSN seçeneğini kullanma
"--source", pt-archiver'ın başka bir soket olmadıkça bu soketi kullanarak "--dest"e bağlanmasına neden olur.
"--dest" için soket belirtildi. Bu, pt-archiver'ın yanlış bağlanabileceği anlamına gelir.
"--dest" ile bağlandığında "--source" öğesine. Örneğin:

--source F=host1.cnf,D=db,t=tbl --hedef h=host2

pt-archiver "--dest", host2'ye bağlandığında, "--source" aracılığıyla bağlanır,
host1, host1.cnf'de tanımlanan soket.

--kuru çalışma
Sorguları yazdırın ve hiçbir şey yapmadan çıkın.

Kullanacağı dosya adını ve SQL deyimlerini yazdırdıktan sonra pt-archiver'ın çıkmasına neden olur.

--dosya
tür: dize

Arşivlenecek dosya, TARİH FORMATI()-biçimlendirme gibi.

Arşivlenmiş satırların yazılacağı dosya adı. MySQL'in bir alt kümesi TARİH FORMATI() biçimlendirme
dosya adında aşağıdaki gibi kodlara izin verilir:

%d Ayın günü, sayısal (01..31)
%H Saat (00..23)
%i Dakika, sayısal (00..59)
%m Ay, sayısal (01..12)
%s Saniye (00..59)
%Y Yıl, sayısal, dört basamaklı

Aşağıdaki ekstra biçim kodlarını da kullanabilirsiniz:

%D Veritabanı adı
%t Tablo adı

Örnek:

--file '/var/log/archive/%Y-%m-%d-%D.%t'

Dosyanın içeriği, belgelendiği gibi SELECT INTO OUTFILE tarafından kullanılan formattadır.
MySQL kılavuzunda: yeni satırlarla sonlandırılan satırlar, sekmelerle sonlandırılan sütunlar, NULL
karakterler \N ile temsil edilir ve özel karakterlerden önce \ ile çıkar. Bu sağlar
LOAD DATA INFILE'ın varsayılan ayarlarıyla bir dosyayı yeniden yüklersiniz.

Dosyanın en üstünde bir sütun başlığı istiyorsanız, bkz. "--header". Dosya otomatik-
varsayılan olarak temizlendi; bkz. "--tampon".

--güncelleme için
SELECT ifadelerine FOR UPDATE değiştiricisini ekler.

Ayrıntılar için bkz.http://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--başlık
"--file" öğesinin üstündeki sütun başlığını yazdırın.

Sütun adlarını "--file" ile verilen dosyadaki ilk satır olarak yazar. eğer dosya
var, başlık yazmaz; bu, dosyayı LOAD DATA INFILE ile yüklenebilir durumda tutar.
buna daha fazla çıktı eklerseniz.

--yardım et
Yardımı göster ve çık.

--yüksek öncelikli-seçim
SELECT ifadelerine HIGH_PRIORITY değiştiricisini ekler.

Görmekhttp://dev.mysql.com/doc/en/select.html> ayrıntılar için.

--ev sahibi
kısa biçim: -h; tür: dize

Ana bilgisayara bağlanın.

--görmezden gelmek
INSERT ifadeleri için IGNORE kullanın.

"--dest" içindeki INSERT'lerin INSERT IGNORE olmasına neden olur.

--sınır
tür: int; varsayılan: 1

İfade başına getirilecek ve arşivlenecek satır sayısı.

Satırları alan SELECT deyimleri tarafından döndürülen satır sayısını sınırlar.
Arşiv. Varsayılan bir satırdır. Limiti artırmak daha verimli olabilir, ancak
Çok sayıda satırı atlayarak seyrek arşivleme yapıyorsanız dikkatli olun; bu potansiyel olarak olabilir
depolama motoruna bağlı olarak diğer sorgularla daha fazla çekişmeye neden olur, işlem
izolasyon seviyesi ve "--for-update" gibi seçenekler.

--yerel
Binlog'a OPTIMIZE veya ANALYZE sorguları yazmayın.

ANALYZE ve OPTIMIZE sorgularına NO_WRITE_TO_BINLOG değiştiricisini ekler. Bkz. "--analiz"
Ayrıntılar için.

--düşük öncelikli-silme
DELETE ifadelerine LOW_PRIORITY değiştiricisini ekler.

Görmekhttp://dev.mysql.com/doc/en/delete.html> ayrıntılar için.

--düşük öncelikli-insert
LOW_PRIORITY değiştiricisini INSERT veya REPLACE ifadelerine ekler.

Görmekhttp://dev.mysql.com/doc/en/insert.html> ayrıntılar için.

--max-akış-ctl
tür: şamandıra

--max-lag'a biraz benzer, ancak PXC kümeleri için. Harcanan ortalama zaman kümesini kontrol edin
Akış Kontrolü için duraklatma ve belirtilen yüzdeyi aşarsa aleti duraklatma
seçeneğinde. Varsayılan, Akış Kontrolü denetimi olmamasıdır. Bu seçenek PXC için kullanılabilir
5.6 veya üzeri sürümler.

--max-gecikme
tip: zaman; varsayılan: 1s

"--check-slave-lag" tarafından verilen köle gecikirse arşivlemeyi duraklatın.

Bu seçenek, pt-archiver'ın her almak üzereyken slave'e bakmasına neden olur.
başka bir sıra. Kölenin gecikmesi seçeneğin değerinden büyükse veya bağımlı
çalışmıyor (bu nedenle gecikmesi NULL), pt-table-checksum "--check-interval" için uyur
saniye ve sonra tekrar gecikmeye bakar. Köle yakalanana kadar tekrar eder,
daha sonra satırı alıp arşivlemeye devam eder.

Bu seçenek, "--sleep" veya "--sleep-coef" ihtiyacını ortadan kaldırabilir.

--yükselme yok
Artan dizin optimizasyonu kullanmayın.

Varsayılan artan indeks optimizasyonu, "pt-archiver'ın" tekrarlanan optimizasyonu yapmasına neden olur
"SEÇ" sorguları, önceki sorgunun sona erdiği dizini ararlar, ardından tarama yapar
Her seferinde tablonun başından taramak yerine, onunla birlikte. Bu
varsayılan olarak etkindir çünkü genellikle tekrarlanan erişimler için iyi bir stratejidir.

Büyük, çok sütunlu dizinler, WHERE yan tümcesinin yeterince karmaşık olmasına neden olabilir.
bu aslında daha az verimli olabilir. Örneğin, dört sütunlu bir BİRİNCİL ANAHTAR düşünün
(a, b, c, d) üzerinde. Son sorgunun bittiği yerden başlamak için WHERE yan tümcesi aşağıdaki gibidir:

NEREDE (a > ?)
VEYA (a = ? VE b > ?)
VEYA (a = ? VE b = ? VE c > ?)
VEYA (a = ? VE b = ? VE c = ? VE d >= ?)

Yer tutucuları değerlerle doldurmak, bellek ve CPU kullanır, ağ trafiği ekler ve
ek yükü ayrıştırır ve sorguyu MySQL'in optimize etmesini zorlaştırabilir. dört sütun
anahtar önemli değil, ancak her sütunun "NULL" değerine izin verdiği on sütunlu bir anahtar
olmak.

Yalnızca satırları kaldırdığınızı biliyorsanız, dizini yükseltmek gerekli olmayabilir
tablonun başlangıcından itibaren parçalar halinde, ancak herhangi bir delik bırakmadan, bu nedenle başlayarak
tablonun başlangıcı aslında yapılacak en verimli şeydir.

Ayrıca bkz. "--ilk önce yüksel". Bunun nasıl etkileşime girdiğine dair bir tartışma için "GENİŞLETME" bölümüne bakın.
eklentiler ile.

--no-silme
Arşivlenmiş satırları silmeyin.

"pt-archiver"ın satırları işledikten sonra silmemesine neden olur. Bu izin vermez
"--no-ascend", çünkü ikisini birden etkinleştirmek sonsuz bir döngüye neden olur.

Kaynak DSN'de bir eklenti varsa, "before_delete" yöntemi yine de çağrılır,
"pt-archiver" silme işlemini gerçekleştirmese bile. Daha fazla bilgi için "GENİŞLETME" bölümüne bakın
eklentileri.

--optimize etmek
tür: dize

OPTIMIZE TABLE'ı daha sonra "--source" ve/veya "--dest" üzerinde çalıştırın.

Bitirdikten sonra OPTIMIZE TABLE'ı çalıştırır. Seçenek sözdizimi için "--analyze" bölümüne bakın ve
<http://dev.mysql.com/doc/en/optimize-table.html> OPTIMIZE TABLOSU ile ilgili ayrıntılar için.

--parola
kısa biçim: -p; tür: dize

Bağlanırken kullanılacak parola. Parola virgül içeriyorsa, bunlar kaçılmalıdır
ters eğik çizgi ile: "sınav\,ple"

--pid
tür: dize

Verilen PID dosyasını oluşturun. PID dosyası zaten mevcutsa araç başlamaz ve
içerdiği PID, mevcut PID'den farklıdır. Ancak, eğer PID dosyası
mevcutsa ve içerdiği PID artık çalışmıyorsa, araç PID'nin üzerine yazacaktır.
geçerli PID ile dosya. Araç çıktığında PID dosyası otomatik olarak kaldırılır.

--Eklenti
tür: dize

Genel bir eklenti olarak kullanılacak Perl modül adı.

Genel amaçlı bir eklentinin Perl modül adını belirtin. Şu anda sadece kullanılmaktadır
istatistikler için ("--statistics" bölümüne bakın) ve "new()" ve bir "statistics()" yöntemine sahip olmalıdır.

"new( src =" $src, dst => $dst, opts => $o )> yöntemi kaynağı alır ve
hedef DSN'ler ve bunların veritabanı bağlantıları, tıpkı bağlantıya özgü
eklentiler yapar. Ayrıca komut satırına erişmek için bir OptionParser nesnesi ($o) alır.
seçenekler (örnek: "$o-"get('purge');>).

"statistics(\%stats, $time)" yöntemi, tarafından toplanan istatistiklerin bir hashrefini alır.
arşivleme işi ve tüm işin başladığı zaman.

--Liman
kısa biçim: -P; tür: int

Bağlantı için kullanılacak bağlantı noktası numarası.

--birincil-anahtar-yalnızca
Yalnızca birincil anahtar sütunları.

Birincil anahtar sütunlarıyla "--sütunları" belirtmek için bir kısayol. Bu bir
sadece satırları temizlemek istiyorsanız verimlilik; tüm satırı getirmekten kaçınır, ne zaman
"DELETE" ifadeleri için yalnızca birincil anahtar sütunları gereklidir. Ayrıca bkz. "--purge".

--ilerleme
tür: int

Her X satırında ilerleme bilgilerini yazdırın.

Geçerli saati, geçen süreyi ve her X satırında arşivlenen satırları yazdırır.

--temizlemek
Arşivlemek yerine temizleyin; "--file" ve "--dest" öğelerinin atlanmasına izin verir.

Etkili bir temizleme olan "--file" veya "--dest" bağımsız değişkeni olmadan arşivlemeye izin verir
satırlar yeni silindiği için.

Yalnızca satırları temizlemek istiyorsanız, tablonun birincil anahtar sütunlarını belirtmeyi düşünün.
"--yalnızca birincil anahtar" ile. Bu, sunucudan tüm sütunların alınmasını önleyecektir.
sebep yok.

--hızlı-silme
DELETE ifadelerine QUICK değiştiricisini ekler.

Görmekhttp://dev.mysql.com/doc/en/delete.html> ayrıntılar için. Belirtildiği gibi
bazı durumlarda DELETE QUICK'i ve ardından OPTIMIZE'ı kullanmak daha hızlı olabilir.
TABLO. Bunun için "--optimize" kullanabilirsiniz.

--sessizlik
kısa biçim: -q

"--statistics" gibi herhangi bir çıktı yazdırmayın.

"--statistics" çıktısı da dahil olmak üzere normal çıktıyı bastırır, ancak bastırmaz
"--why-quit" çıktısı.

--yer değiştirmek
"--dest" içindeki INSERT'lerin REPLACE olarak yazılmasına neden olur.

--tekrar denemeler
tür: int; varsayılan: 1

Zaman aşımı veya kilitlenme başına yeniden deneme sayısı.

Bir InnoDB kilidi olduğunda pt-archiver'ın kaç kez yeniden denemesi gerektiğini belirtir
bekleme zaman aşımı veya kilitlenme. Yeniden denemeler bittiğinde, pt-archiver bir
hata.

Aşağıdakiler arasında arşivleme yaparken ne olmasını istediğinizi dikkatlice düşünün.
işlemsel ve işlemsel olmayan depolama motorları. "--dest" için INSERT ve
"--source" öğesinden DELETE, ayrı bağlantılarda olduğundan, aslında
aynı sunucuda olsalar bile aynı işleme katılırlar. Ancak, pt-
arşivleyici, kodda basit dağıtılmış işlemler uygular, bu nedenle taahhüt eder ve geri alır
iki bağlantı arasında istendiği gibi gerçekleşmelidir.

Şu anda işlemsel depolamayla ilgili hataları işlemek için herhangi bir kod yazmadım
InnoDB dışındaki motorlar. İhtiyacınız olursa bu özelliği isteyin.

--Çalışma süresi
tip: zaman

Çıkmadan önce koşma zamanı.

İsteğe bağlı son ek s=saniye, m=dakika, h=saat, d=gün; sonek yoksa, s kullanılır.

--[no]güvenli-otomatik artış
varsayılan: evet

Satırı maksimum AUTO_INCREMENT ile arşivlemeyin.

pt-archiver'ın aşağıdaki durumlarda en yeni satırı kaldırmasını önlemek için fazladan bir WHERE yan tümcesi ekler.
artan tek sütunlu bir AUTO_INCREMENT anahtarı. Bu, yeniden kullanıma karşı koruma sağlar
AUTO_INCREMENT değerleri, sunucu yeniden başlatılırsa ve varsayılan olarak etkinleştirilirse.

Ekstra WHERE yan tümcesi, şu andan itibaren otomatik artış sütununun maksimum değerini içerir:
arşiv veya temizleme işinin başlangıcı. pt-archiver sırasında yeni satırlar eklenirse
koşuyor, onları görmeyecek.

--nöbetçi
tür: dize; varsayılan: /tmp/pt-archiver-sentinel

Bu dosya varsa çıkın.

"--sentinel" ile belirtilen dosyanın varlığı pt-archiver'ın durmasına neden olur
arşivleme ve çıkış. Varsayılan /tmp/pt-archiver-sentinel'dir. Bunu bulabilirsin
gerekirse cron işlerini zarif bir şekilde durdurmak için kullanışlıdır. Ayrıca bkz. "--stop".

--set-vars
tür: Dizi

MySQL değişkenlerini bu virgülle ayrılmış "değişken=değer" çiftleri listesinde ayarlayın.

Varsayılan olarak, araç şunları ayarlar:

bekleme_zaman aşımı=10000

Komut satırında belirtilen değişkenler bu varsayılanları geçersiz kılar. Örneğin,
"--set-vars wait_timeout=500" belirtilmesi, 10000 varsayılan değerini geçersiz kılar.

Araç bir uyarı yazdırır ve bir değişken ayarlanamıyorsa devam eder.

--paylaşım kilidi
SELECT deyimlerine LOCK IN SHARE MODE değiştiricisini ekler.

Görmekhttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--skip-yabancı-anahtar kontrolleri
SET FOREIGN_KEY_CHECKS=0 ile yabancı anahtar kontrollerini devre dışı bırakır.

--uyku
tür: int

Getirmeler arasındaki uyku süresi.

SELECT deyimleri arasında ne kadar süre uyuyacağını belirtir. Varsayılan, uyumak değildir
Tümü. İşlemler YAPILMAZ ve "--file" dosyası daha önce YIKANMAZ.
uyuyor. Bunu kontrol etmek için "--txn-size" bölümüne bakın.

"--commit-each" belirtilirse, uyumadan önce tamamlama ve temizleme gerçekleşir.

--uyku katı
tür: şamandıra

"--sleep" değerini son SELECT zamanının katı olarak hesaplayın.

Bu seçenek belirtilirse, pt-archiver son sorgu zamanı için uyur.
SELECT, belirtilen katsayı ile çarpılır.

Bu, SELECT'leri kısmak için biraz daha karmaşık bir yoldur: değişen bir uyku
SELECT'lerin ne kadar sürdüğüne bağlı olarak, her SELECT arasındaki süre.

--priz
kısa formlar; tür: dize

Bağlantı için kullanılacak yuva dosyası.

--kaynak
tür: DSN

Arşivlenecek tabloyu belirten DSN (gerekli). Bu argüman bir DSN'dir. Görmek
Sözdizimi için "DSN SEÇENEKLERİ". Çoğu seçenek, pt-archiver'ın MySQL'e nasıl bağlanacağını kontrol eder,
ancak bu aracın söz diziminde bazı genişletilmiş DSN seçenekleri vardır. D, t ve ben
seçenekler arşivlenecek bir tablo seçer:

--source h=sunucum,D=veritabanım,t=my_tbl

a seçeneği, USE ile bağlantının varsayılanı olarak ayarlanacak veritabanını belirtir. Eğer
b seçeneği doğrudur, SQL_LOG_BIN ile ikili günlük kaydını devre dışı bırakır. m seçeneği
harici bir Perl modülünün sağlayabileceği takılabilir eylemleri belirtir. Tek
gerekli kısım tablodur; diğer kısımlar kitabın çeşitli yerlerinden okunabilir.
ortam (seçenek dosyaları gibi).

'i' kısmı özel olarak anılmayı hak ediyor. Bu, pt-archiver'a hangi dizini kullanması gerektiğini söyler.
arşivlemek için tarayın. Bu, SELECT içinde FORCE INDEX veya USE INDEX ipucunda görünür.
arşivlenebilir satırları getirmek için kullanılan ifadeler. Hiçbir şey belirtmezseniz, pt-archiver
varsa, bir "PRİMARY ANAHTAR"ı tercih ederek iyi bir dizini otomatik olarak keşfedecektir. Benim .. De
Bunun genellikle iyi çalıştığını deneyimleyin, bu nedenle çoğu zaman muhtemelen sadece atlayabilirsiniz.
'ben' kısmı.

Dizin, tabloya tekrarlanan erişimleri optimize etmek için kullanılır; pt-archiver hatırlar
her SELECT ifadesinden aldığı son satır ve onu bir WHERE oluşturmak için kullanır.
MySQL'in başlatmasına izin vermesi gereken belirtilen dizindeki sütunları kullanan yan tümce
sonraki SEÇİN, potansiyel olarak
Her ardışık SELECT ile tablonun başlangıcı. Harici kullanıyorsanız
eklentiler, artan ile nasıl etkileşime girdiğine dair bir tartışma için lütfen "GENİŞLETME" bölümüne bakın.
dizinler.

'a' ve 'b' seçenekleri, ifadelerin ikili dosya üzerinden nasıl aktığını kontrol etmenizi sağlar.
kayıt. 'b' seçeneğini belirtirseniz, belirtilen zaman aralığında ikili günlük kaydı devre dışı bırakılır.
bağlantı. 'a' seçeneğini belirtirseniz, bağlantı belirtilen "KULLANIR"
kölelerin ikili günlük olaylarını yürütmesini önlemek için kullanabileceğiniz veritabanı
"--replicate-ignore-db" seçenekleriyle. Bu iki seçenek farklı olarak kullanılabilir.
aynı amaca ulaşmak için yöntemler: verileri ana cihazdan arşivleyin, ancak
köle. Örneğin, master üzerinde bir temizleme işi çalıştırabilir ve bunun
seçtiğiniz yöntemi kullanarak köle üzerinde oluyor.

UYARI: için bir soket tanımlayan varsayılan seçenekler dosyası (F) DSN seçeneğini kullanma
"--source", pt-archiver'ın başka bir soket olmadıkça bu soketi kullanarak "--dest"e bağlanmasına neden olur.
"--dest" için soket belirtildi. Bu, pt-archiver'ın yanlış bağlanabileceği anlamına gelir.
"--dest" ile bağlanmak istendiğinde "--source" olarak kullanılır. Örneğin:

--source F=host1.cnf,D=db,t=tbl --hedef h=host2

pt-archiver "--dest", host2'ye bağlandığında, "--source" aracılığıyla bağlanır,
host1, host1.cnf'de tanımlanan soket.

--İstatistik
Zamanlama istatistiklerini toplayın ve yazdırın.

pt-archiver'ın ne yaptığı hakkında zamanlama istatistikleri toplamasına neden olur. Bu istatistikler
"--plugin" ile belirtilen eklenti için kullanılabilir

"--quiet" belirtmediğiniz sürece, "pt-archiver" çıktığında istatistikleri yazdırır. bu
istatistikler şöyle görünür:

Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
Kaynak: D=db,t=tablo
4 SEÇİN
EKLE 4
SİL 4
Eylem Sayısı Zaman Pct
10 0.1079 88.27 taahhüt et
5 0.0047 3.87 seç
4 0.0028 2.29 siliniyor
4 0.0028 2.28 ekleme
diğer 0 0.0040 3.29

İlk iki (veya üç) satır, süreleri ve kaynak ve hedef tabloları gösterir. bu
sonraki üç satır, kaç satırın getirildiğini, eklendiğini ve silindiğini gösterir.

Kalan satırlar sayıları ve zamanlamayı gösterir. Sütunlar eylem, toplam
bu eylemin zamanlanma sayısı, toplam süre ve
programın toplam çalışma süresi. Satırlar, azalan toplam süreye göre sıralanır. bu
son satır, açıkça hiçbir şeye atfedilmeyen zamanın geri kalanıdır. Eylemler
komut satırı seçeneklerine bağlı olarak değişir.

"--why-quit" verilirse, davranışı biraz değişir. Bu seçenek neden olur
daha fazla satır olmadığı için bile çıkma nedenini yazdırın.

Bu seçenek, temel Perl'in bir parçası olan standart Time::HiRes modülünü gerektirir.
oldukça yeni Perl sürümleri.

--Dur
Sentinel dosyasını oluşturarak örnekleri çalıştırmayı durdurun.

pt-archiver'ın "--sentinel" ile belirtilen sentinel dosyasını oluşturmasına ve çıkmasına neden olur.
Bu, izleyen tüm çalışan örnekleri durdurma etkisine sahip olmalıdır.
aynı nöbet dosyası.

--txn boyutunda
tür: int; varsayılan: 1

İşlem başına satır sayısı.

Her işlemin boyutunu satır sayısı olarak belirtir. Sıfır, işlemleri devre dışı bırakır
tamamen. pt-archiver bu kadar çok satırı işledikten sonra, hem
"--source" ve verilmişse "--dest" ve "--file" ile verilen dosyayı temizler.

Bu parametre performans için kritik öneme sahiptir. Canlı bir sunucudan arşivliyorsanız,
örneğin ağır OLTP işi yapıyorsa, aralarında iyi bir denge seçmeniz gerekir.
işlem boyutu ve taahhüt yükü. Daha büyük işlemler olasılığını yaratır
daha fazla kilit çekişmesi ve kilitlenme, ancak daha küçük işlemler daha sık neden olur
önemli olabilecek ek yükü taahhüt edin. Bir fikir vermek için küçük bir test setinde I
pt-archiver yazarken birlikte çalıştı, 500 değeri arşivlemenin yaklaşık 2 sürmesine neden oldu
masaüstü makinemde aksi halde sessiz bir MySQL örneğinde 1000 satır başına saniye,
diske ve başka bir tabloya arşivleme. Sıfır değeri olan işlemleri devre dışı bırakma,
otomatik işlemeyi açan, performansı bin satırda 38 saniyeye düşürdü.

Bir işlem depolama motorundan veya bir motora arşivleme yapmıyorsanız,
pt-archiver'ın taahhütte bulunmaya çalışmaması için işlemleri devre dışı bırakın.

--kullanıcı
kısa biçim: -u; tür: dize

Mevcut kullanıcı değilse oturum açmak için kullanıcı.

--versiyon
Sürümü göster ve çık.

--[hayır]sürüm kontrolü
varsayılan: evet

Percona Toolkit, MySQL ve diğer programların en son sürümünü kontrol edin.

Bu, standart bir "güncellemeleri otomatik olarak kontrol et" özelliğidir ve iki ek
özellikleri. İlk olarak araç, yerel sistemdeki diğer programların sürümlerini şurada kontrol eder:
kendi versiyonuna ek olarak. Örneğin, her MySQL sunucusunun sürümünü kontrol eder.
Perl'e ve Perl modülü DBD::mysql'ye bağlanır. İkincisi, kontrol eder ve uyarır
bilinen sorunları olan sürümler hakkında. Örneğin, MySQL 5.5.25'te kritik bir hata vardı ve
5.5.25a olarak yeniden yayınlandı.

Tüm güncellemeler veya bilinen sorunlar, aracın normal çıktısından önce STDOUT'a yazdırılır.
Bu özellik asla aletin normal çalışmasına müdahale etmemelidir.

Daha fazla bilgi için ziyaret edin .

--nerede
tür: dize

Hangi satırların arşivleneceğini sınırlamak için WHERE yan tümcesi (gerekli).

Hangi satırların arşivleneceğini sınırlamak için bir WHERE yan tümcesi belirtir. kelimeyi dahil etme
NEREDE. Kabuğunuzun onu yorumlamasını önlemek için argümanı alıntılamanız gerekebilir.
Örneğin:

--where 'ts < current_date - 90 günlük aralık'

Güvenlik için "--nerede" gereklidir. WHERE yan tümcesine ihtiyacınız yoksa,
"--nerede" 1=1.

--neden-bırakmak
Satırlar tükenmedikçe çıkış nedenini yazdırın.

Çalışma dışında herhangi bir nedenle çıkarsa, pt-archiver'ın bir mesaj yazdırmasına neden olur
arşivlenecek satır kalmadı. "--run-time" ile bir cron işiniz varsa bu yararlı olabilir.
örneğin belirtilen ve pt-archiver'ın daha önce bitirdiğinden emin olmak istiyorsunuz.
Zaman tükeniyor.

"--statistics" verilirse, davranış biraz değiştirilir. yazdıracak
sadece daha fazla satır olmadığı için bile çıkma nedeni.

Bu çıktı, "--quiet" verilse bile yazdırılır. Bu, içine "pt-archiver" koyabilmeniz için
bir "cron" işi ve anormal bir çıkış varsa bir e-posta alın.

DSN SEÇENEKLER


Bu DSN seçenekleri, bir DSN oluşturmak için kullanılır. Her seçenek "seçenek=değer" şeklinde verilir.
Seçenekler büyük/küçük harfe duyarlıdır, dolayısıyla P ve p aynı seçenek değildir. olamaz
boşluk "=" işaretinden önce veya sonra ve değer boşluk içeriyorsa alıntı yapılmalıdır.
DSN seçenekleri virgülle ayrılmıştır. Tüm ayrıntılar için percona-toolkit kılavuz sayfasına bakın.

· A

kopya: hayır

Sorgular yürütülürken KULLANILACAK veritabanı.

Bir

dsn: karakter kümesi; kopya: evet

Varsayılan karakter seti.

· B

kopya: hayır

Doğruysa, SQL_LOG_BIN ile binlog'u devre dışı bırakın.

· NS

dsn: veritabanı; kopya: evet

Tabloyu içeren veritabanı.

F

dsn: mysql_read_default_file; kopya: evet

Yalnızca verilen dosyadan varsayılan seçenekleri oku

· H

dsn: ana bilgisayar; kopya: evet

Ana bilgisayara bağlanın.

· ben

kopya: evet

Kullanılacak dizin.

· BEN

kopya: evet

LOAD DATA LOCAL INFILE'ı açıkça etkinleştirin.

Bazı nedenlerden dolayı, bazı satıcılar libmysql'yi --enable-local-infile olmadan derler.
ifadeyi devre dışı bırakan seçenek. Bu, aşağıdaki gibi garip durumlara yol açabilir:
sunucu LOCAL INFILE'a izin veriyor, ancak istemci kullanılıyorsa istisnalar atıyor.

Ancak, sunucu VERİ YÜKLEME'ye izin verdiği sürece, istemciler onu kolayca yeniden etkinleştirebilir; Görmek
ve
<http://search.cpan.org/~capttofu/DBD-mysql/lib/DBD/mysql.pm>. Bu seçenek
tam olarak.

Bu seçeneği çevirmenin hatalara veya farklı
davranış, güvenli tarafta olmak için bu seçenek varsayılan olarak açık değildir.

· M

kopya: hayır

Eklenti modülü adı.

· P

dsn: şifre; kopya: evet

Bağlanırken kullanılacak parola. Parola virgül içeriyorsa, bunlar kaçılmalıdır
ters eğik çizgi ile: "sınav\,ple"

· P

dsn: bağlantı noktası; kopya: evet

Bağlantı için kullanılacak bağlantı noktası numarası.

· S

dsn: mysql_socket; kopya: evet

Bağlantı için kullanılacak yuva dosyası.

· T

kopya: evet

Arşivlenecek/gelecek tablo.

· sen

dsn: kullanıcı; kopya: evet

Mevcut kullanıcı değilse oturum açmak için kullanıcı.

UZATILMAK


pt-archiver, bazı mantık ve/veya işlemleri gerçekleştirmek için harici Perl modülleri takılarak genişletilebilir.
hareketler. Hem "--source" hem de "--dest" için 'm' ile bir modül belirtebilirsiniz.
şartnamenin bir parçası. Örneğin:

--source D=test,t=test1,m=My::Module1 --dest m=My::Module2,t=test2

Bu, pt-archiver'ın My::Module1 ve My::Module2 paketlerini yüklemesine neden olur,
örneklerini ve ardından arşivleme işlemi sırasında onlara çağrı yapın.

Ayrıca "--plugin" ile bir eklenti belirtebilirsiniz.

Modül bu arayüzü sağlamalıdır:

yeni(dbh => $dbh, db => $db_name, tbl => $tbl_name)
Eklentinin yapıcısı, veritabanı tanıtıcısına, veritabanına bir referans iletilir.
adı ve tablo adı. Eklenti, pt-archiver dosyayı açtıktan hemen sonra oluşturulur.
bağlantı ve önce argümanlarda verilen tabloyu inceler. Bu
eklenti, geçici tablolar oluşturma ve doldurma veya başka kurulum işleri yapma şansı.

Before_begin(cols => \@cols, allcols => \@allcols)
Bu yöntem, pt-archiver satırlar arasında yinelemeye başlamadan hemen önce çağrılır ve
onları arşivlemek, ancak diğer tüm kurulum işlerini yaptıktan sonra (tablo yapılarını incelemek,
SQL sorguları tasarlama vb.). Bu, pt-archiver'ın eklentiye söylediği tek zamandır.
Arşivleme sırasında eklentinin geçeceği satırlar için sütun adları.

"Sütunlar" argümanı, kullanıcının arşivlenmesini istediği sütun adlarıdır.
varsayılan olarak veya "--sütunlar" seçeneğiyle. "allcols" argümanı, sütun listesidir.
pt-archiver her satırın adını kaynak tablodan alır. Daha fazlasını getirebilir
kendi kullanımı için bazı sütunlara ihtiyaç duyduğundan, kullanıcının talep ettiğinden daha fazla sütun. Ne zaman
sonraki eklenti işlevleri bir satır alır, tüm ekstraları içeren tam satırdır.
sütunlar varsa sonuna eklenir.

is_archivable(satır => \@satır)
Bu yöntem, arşivlenebilir olup olmadığını belirlemek için her satır için çağrılır. Bu
yalnızca "--source" için geçerlidir. Argüman, bir arrayref olarak satırın kendisidir. Eğer
yöntem true değerini döndürür, satır arşivlenir; aksi takdirde atlanacaktır.

Bir satırın atlanması, benzersiz olmayan dizinler için komplikasyonlar ekler. Normalde pt-archiver bir
WHERE yan tümcesi, taramanın başlatılacağı yer olarak son işlenen satırı hedeflemek üzere tasarlanmıştır
sonraki SELECT ifadesi için. false döndürerek satırı atladıysanız
arşivlenebilir(), pt-archiver sonsuz bir döngüye girebilir çünkü satır hala
var. Bu nedenle, "--source" argümanı için bir eklenti belirlediğinizde, pt-archiver
WHERE yan tümcesini biraz değiştirecektir. "Büyüktür veya eşittir" ile başlamak yerine
"son işlenen satıra", "kesinlikle büyüktür" ile başlayacaktır.
birincil anahtarlar gibi benzersiz dizinlerde iyi, ancak satırları atlayabilir (delik bırakabilir)
benzersiz olmayan dizinler veya bir dizinin yalnızca ilk sütununu yükseltirken.

"--no-delete" belirtirseniz, "pt-archiver" tümceyi aynı şekilde değiştirecektir,
çünkü yine sonsuz bir döngü mümkündür.

"--bulk-delete" seçeneğini belirtir ve bu yöntemden false döndürürseniz,
"pt-archiver" istediğinizi yapmayabilir. Satır arşivlenmeyecek, ancak
silindi, çünkü toplu silmeler satır aralıklarında çalışır ve hangi satırların
Tutmak için eklenti seçildi.

"--bulk-insert" seçeneğini belirtirseniz, bu yöntemin dönüş değeri
satırın toplu ekleme için geçici dosyaya yazılıp yazılmadığı, dolayısıyla toplu ekler
beklendiği gibi çalışacak. Ancak, toplu eklemeler toplu silme gerektirir.

Before_delete(satır => \@satır)
Bu yöntem, silinmeden hemen önce her satır için çağrılır. Bu sadece için geçerlidir
"--kaynak". Bu, silme gibi bağımlılıkları ele almanız için iyi bir yerdir.
silmek üzere olduğunuz satıra yabancı anahtarlı şeyler. Ayrıca kullanabilirsin
bu, tüm bağımlı tabloları özyinelemeli olarak arşivlemek için.

Bu eklenti yöntemi, "--no-delete" verilse bile çağrılır, ancak değilse
"--toplu-delete" verilir.

Before_bulk_delete(first_row => \@row, last_row => \@row)
Bu yöntem, toplu silme yürütülmeden hemen önce çağrılır. Şuna benzer
"before_delete" yöntemi, argümanlarının aralığın ilk ve son satırı olması dışında
silinecek. "--no-delete" verilse bile çağrılır.

önce_insert(satır => \@satır)
Bu yöntem, eklenmeden hemen önce her satır için çağrılır. Bu sadece için geçerlidir
"--hedef". Bunu, satırı birden çok tabloya eklemek için kullanabilirsiniz.
Bir veri ambarında özet tablolar oluşturmak için ON DUPLICATE KEY UPDATE yan tümcesi.

"--bulk-insert" verilirse bu yöntem çağrılmaz.

Before_bulk_insert(first_row => \@row, last_row => \@row, dosya adı =>
toplu_insert_filename)
Bu yöntem, toplu ekleme yürütülmeden hemen önce çağrılır. Şuna benzer
"before_insert" yöntemi, argümanlarının aralığın ilk ve son satırı olması dışında
silinecek.

custom_sth(satır => \@satır, sql => $sql)
Bu yöntem, satırı eklemeden hemen önce çağrılır, ancak "önce_insert()". O
eklentinin istenirse farklı "INSERT" ifadesi belirtmesine izin verir. Geri dönüş
değer (varsa) bir DBI deyim tanıtıcısı olmalıdır. "Sql" parametresi SQL metnidir
varsayılan "INSERT" ifadesini hazırlamak için kullanılır. Bu yöntem çağrılmaz,
"--bulk-insert" belirtin.

Herhangi bir değer döndürülmezse, varsayılan "INSERT" ifade tanıtıcısı kullanılır.

Bu yöntem yalnızca "--dest" için belirtilen eklenti için geçerlidir, bu nedenle eklentiniz
beklediğinizi yaparak, hedef için değil, hedef için belirttiğinizden emin olun.
kaynak.

custom_sth_bulk(first_row => \@row, last_row => \@row, sql => $sql, dosya adı =>
$bulk_insert_filename)
"--bulk-insert" belirttiyseniz, bu yöntem toplu işlemden hemen önce çağrılır.
ekle, ancak sonra "Before_bulk_insert()" ve argümanlar farklı.

Bu yöntemin dönüş değeri vb. "özel_sth()" yöntem.

Bitirdikten sonra()
Bu yöntem, pt-archiver arşivleme döngüsünden çıktıktan sonra çağrılır, tüm veritabanını işler
"--file" dosyasını işler, kapatır ve son istatistikleri yazdırır, ancak pt-archiver çalıştırılmadan önce
ANALİZLE veya OPTİMİZE ET (bkz. "--analiz et" ve "--optimize et").

Hem "--source" hem de "--dest" için bir eklenti belirtirseniz, pt-archiver yapıları, çağrılar
önce_başlangıç()ve aramalar Bitirdikten sonra() iki eklentide "--source" sırasına göre,
"--hedef".

pt-archiver, işlemleri kontrol ettiğini ve eklentinin taahhütte bulunmayacağını veya yuvarlanmayacağını varsayar.
veritabanı tanıtıcısını geri alın. Eklentinin yapıcısına iletilen veritabanı tanıtıcısı,
aynı tanıtıcı pt-archiver kendini kullanır. "--source" ve "--dest" in ayrı olduğunu unutmayın
kolları.

Örnek bir modül şöyle görünebilir:

paketim::Modül;

alt yeni {
benim ( $sınıf, %args ) = @_;
dönüş kutsa(\%args, $sınıf);
}

alt önce_başlangıç ​​{
benim ( $self, %args ) = @_;
# Sütun adlarını daha sonra kaydedin
$self->{sütun} = $args{sütun};
}

alt is_archivable {
benim ( $self, %args ) = @_;
# $args{row} ile biraz gelişmiş mantık yapın
1 dönmek;
}

sub Before_delete {} # İşlem yapmayın
sub Before_insert {} # Herhangi bir işlem yapmayın
sub custom_sth {} # İşlem yapmayın
sub after_finish {} # İşlem yapmayın

1;

ÇEVRE


"PTDEBUG" ortam değişkeni, STDERR'ye ayrıntılı hata ayıklama çıktısı sağlar. Etkinleştirmek
hata ayıklama ve tüm çıktıları bir dosyaya yakalama, aracı aşağıdaki gibi çalıştırın:

PTDEBUG=1 pt-archiver ... > DOSYA 2>&1

Dikkatli olun: Hata ayıklama çıktısı hacimlidir ve birkaç megabayt çıktı üretebilir.

SİSTEM ŞARTLAR


Perl, DBI, DBD::mysql ve herhangi bir programa yüklenmesi gereken bazı çekirdek paketlere ihtiyacınız var.
Perl'in oldukça yeni versiyonu.

onworks.net hizmetlerini kullanarak çevrimiçi pt-archiverp kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

  • 1
    DivKit
    DivKit
    DivKit, açık kaynaklı, Sunucu Odaklı bir yazılımdır
    Kullanıcı arayüzü (SDUI) çerçevesi. Şunları yapmanızı sağlar:
    sunucu kaynaklı güncellemeleri kullanıma sunmak
    farklı uygulama sürümleri. Ayrıca olabilir
    için kullanılır...
    DivKit'i indirin
  • 2
    alt dönüştürücü
    alt dönüştürücü
    Çeşitli arasında dönüştürmek için yardımcı program
    abonelik biçimi. Shadowrocket kullanıcıları
    hedef olarak ss, ssr veya v2ray kullanmalıdır.
    &remark= ekleyebilirsiniz
    Telegram beğenilen HT...
    Alt dönüştürücüyü indir
  • 3
    YIKAMA
    YIKAMA
    SWASH, genel amaçlı bir sayısal
    kararsızlığı simüle etmek için araç,
    hidrostatik olmayan, serbest yüzey,
    rotasyonel akış ve taşıma olayları
    gibi kıyı sularında...
    SWASH'ı indirin
  • 4
    VBA-M (Arşivlendi - Şimdi Github'da)
    VBA-M (Arşivlendi - Şimdi Github'da)
    Proje şuraya taşındı:
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Özellikler:Hile oluşturmadurumları kaydetçoklu
    sistem, gba, gbc, gb, sgb'yi destekler,
    sgb2Tu...
    VBA-M'yi İndirin (Arşivlendi - Şimdi Github'da)
  • 5
    Stacer
    Stacer
    Linux Sistem Optimize Edici ve İzleme
    Github Deposu:
    https://github.com/oguzhaninan/Stacer.
    Kitle: Son Kullanıcılar/Masaüstü. kullanıcı
    arayüz: Qt. Programlama...
    Stacer'ı indirin
  • 6
    TuruncuTilki
    TuruncuTilki
    TeamWinRecoveryProject(TWRP) çatalı
    birçok ek işlevle, yeniden tasarlayın
    ve daha fazla Özellikler: Tiz ve
    Tiz olmayan ROM'larGüncel Oreo çekirdeği,
    inşa edilmiş...
    OrangeFox'u indirin
  • Daha fazla »

Linux komutları

Ad