EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

pt-archiverp - Online în cloud

Rulați pt-archiverp în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda pt-archiverp care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


pt-archiver - Arhivează rândurile dintr-un tabel MySQL într-un alt tabel sau într-un fișier.

REZUMAT


Utilizare: pt-archiver [OPȚIUNI] --source DSN --where WHERE

pt-archiver ronțăie înregistrări dintr-un tabel MySQL. Argumentele --source și --dest folosesc DSN
sintaxă; dacă COPY este da, --dest este implicit la valoarea cheii din --source.

Exemple:

Arhivați toate rândurile de la oltp_server la olap_server și într-un fișier:

pt-archiver --source h=oltp_server,D=test,t=tbl --dest h=olap_server \
--fișier „/var/log/archive/%Y-%m-%d-%D.%t” \
--unde "1=1" --limită 1000 --commit-each

Ștergeți (ștergeți) rândurile orfane din tabelul copil:

pt-archiver --source h=gazdă,D=db,t=copil --purge\
--unde 'NU EXISTĂ (SELECT * FROM parent WHERE col=child.col)'

RISCURI


Percona Toolkit este matur, dovedit în lumea reală și bine testat, dar toate bazele de date
instrumentele pot prezenta un risc pentru sistem și serverul bazei de date. Înainte de a utiliza acest instrument,
Vă rog:

· Citiți documentația instrumentului

· Examinați cunoscutele „BUGS” ale instrumentului

· Testați instrumentul pe un server care nu este de producție

· Faceți copii de rezervă ale serverului de producție și verificați copiile de rezervă

DESCRIERE


pt-archiver este instrumentul pe care îl folosesc pentru a arhiva tabelele așa cum este descris în
<http://tinyurl.com/mysql-archiving>. Scopul este un loc de muncă cu impact redus, numai înainte
scoateți datele vechi din tabel fără a afecta mult interogările OLTP. Puteți introduce
date într-un alt tabel, care nu trebuie să fie pe același server. Puteți să-l scrieți și către a
fișier într-un format potrivit pentru LOAD DATA INFILE. Sau nu poți face nici una, caz în care este
doar o ștergere incrementală.

pt-archiver este extensibil printr-un mecanism de plugin. Puteți injecta propriul cod de adăugat
logică avansată de arhivare care ar putea fi utilă pentru arhivarea datelor dependente, aplicând
reguli de afaceri complexe sau construirea unui depozit de date în timpul procesului de arhivare.

Trebuie să alegeți cu atenție valorile pentru unele opțiuni. Cele mai importante sunt „--limit”,
„--retry” și „--txn-size”.

Strategia este să găsiți primul rând, apoi să scanați un index doar înainte pentru a găsi mai multe
rânduri eficient. Fiecare interogare ulterioară nu ar trebui să scaneze întregul tabel; ar trebui să caute
în index, apoi scanați până când găsește mai multe rânduri arhivabile. Specificarea indexului cu
partea „i” a argumentului „--sursă” poate fi crucială pentru aceasta; utilizați „--dry-run” pentru a
examinați interogările generate și asigurați-vă că le EXPLICAȚI pentru a vedea dacă sunt eficiente
(de cele mai multe ori probabil doriți să scanați cheia PRIMARY, care este implicită). Chiar
mai bine, examinați diferența dintre contoarele de stare Handler înainte și după rularea programului
interogare și asigurați-vă că nu scanează întregul tabel la fiecare interogare.

Puteți dezactiva optimizările de căutare și apoi scanare parțial sau integral cu „--no-ascend”
și „--ascend-first”. Uneori, acest lucru poate fi mai eficient pentru cheile cu mai multe coloane. Fi
conștient că pt-archiver este construit pentru a începe la începutul indexului pe care îl alege și scanează
este doar înainte. Acest lucru ar putea duce la scanări lungi de tabel dacă încercați să ronțăiți din
sfârşitul tabelului printr-un alt indice decât cel pe care îl preferă. Consultați „--source” și citiți
documentația din partea „i”, dacă acest lucru este valabil pentru dvs.

percona XtraDB Grup


pt-archiver funcționează cu Percona XtraDB Cluster (PXC) 5.5.28-23.7 și mai noi, dar există
trei limitări pe care ar trebui să le luați în considerare înainte de a arhiva pe un cluster:

Eroare la comitere
pt-archiver nu verifică erori atunci când comite tranzacții. Se comite pe PXC poate
nu eșuează, dar instrumentul nu verifică și nu reîncearcă tranzacția atunci când se întâmplă acest lucru.
Dacă se întâmplă, instrumentul va muri.

Tabelele MyISAM
Arhivarea tabelelor MyISAM funcționează, dar suportul MyISAM în PXC este încă experimental la
momentul acestei lansări. Există mai multe erori cunoscute cu PXC, tabelele MyISAM și
coloane „AUTO_INCREMENT”. Prin urmare, trebuie să vă asigurați că arhivarea nu va fi direct
sau duce indirect la utilizarea valorilor implicite „AUTO_INCREMENT” pentru un tabel MyISAM.
De exemplu, acest lucru se întâmplă cu „--dest” dacă se folosește „--columns” și
Coloana „AUTO_INCREMENT” nu este inclusă. Instrumentul nu verifică acest lucru!

Opțiuni non-cluster
Anumite opțiuni pot funcționa sau nu. De exemplu, dacă un nod de cluster nu este și a
slave, atunci „--check-slave-lag” nu funcționează. Și din moment ce tabelele PXC sunt de obicei
InnoDB, dar InnoDB nu acceptă „INSERT DELAYED”, apoi „--delayed-insert” nu acceptă
muncă. Este posibil ca și alte opțiuni să nu funcționeze, dar instrumentul nu le verifică, prin urmare
ar trebui să testați arhivarea pe un cluster de testare înainte de a arhiva pe clusterul dvs. real.

REZULTATE


Dacă specificați „--progress”, rezultatul este un rând de antet, plus ieșirea de stare la intervale.
Fiecare rând din ieșirea de stare listează data și ora curente, câte secunde pt-
archiver a rulat și câte rânduri a arhivat.

Dacă specificați „--statistics”, „pt-archiver” afișează calendarul și alte informații de ajutor
identificați care parte a procesului de arhivare necesită cel mai mult timp.

EROARE DE MANIPULARE


pt-archiver încearcă să prindă semnale și să iasă cu grație; de exemplu, dacă îl trimiteți
SIGTERM (Ctrl-C pe sisteme UNIX), va capta semnalul, va imprima un mesaj despre
semnal și ieșiți destul de normal. Nu va executa „--analyze” sau „--optimize”,
deoarece acestea pot dura mult timp pentru a se termina. Va rula toate celelalte coduri în mod normal,
inclusiv apelarea dupa_terminare() pe orice plugin (a se vedea „EXTINDERE”).

Cu alte cuvinte, un semnal, dacă este prins, va ieși din bucla principală de arhivare și va omite
optimiza/analiza.

OPŢIUNI


Specificați cel puțin unul dintre „--dest”, „--file” sau „--purge”.

„--ignore” și „--replace” se exclud reciproc.

„--txn-size” și „--commit-each” se exclud reciproc.

„--low-priority-insert” și „--delayed-insert” se exclud reciproc.

„--share-lock” și „--for-update” se exclud reciproc.

„--analyze” și „--optimize” se exclud reciproc.

„--no-ascend” și „--no-delete” se exclud reciproc.

Valorile DSN din „--dest” sunt implicite valorile din „--source” dacă COPIE este da.

--a analiza
tip: sfoară

Rulați ANALYZE TABLE apoi pe „--source” și/sau „--dest”.

Rulează ANALYZE TABLE după terminare. Argumentul este un șir arbitrar. Daca
conţine litera „s”, sursa va fi analizată. Dacă conține „d”, acesta
destinația va fi analizată. Puteți specifica oricare sau ambele. De exemplu, cel
următoarele vor analiza ambele:

--analiza=ds

Vedeahttp://dev.mysql.com/doc/en/analyze-table.html> pentru detalii pe ANALYZE TABLE.

--urcă-întâi
Urcă numai prima coloană a indexului.

Dacă doriți să utilizați optimizarea indexului ascendent (consultați „--no-ascend”), dar nu
Doriți să suportați costul general al creșterii unui index mare cu mai multe coloane, puteți utiliza acest lucru
opțiunea de a spune pt-archiver să urce numai pe coloana din stânga a indexului. Acesta poate
oferă o creștere semnificativă a performanței față de necreșterea deloc a indicelui, în timp ce
evitând costul urcării întregului indice.

Consultați „EXTINDERE” pentru o discuție despre modul în care aceasta interacționează cu pluginurile.

--cere-trece
Solicitați o parolă când vă conectați la MySQL.

--tampon
Buffer de ieșire în „--file” și spălați la commit.

Dezactivează spălarea automată în „--file” și șterge „--file” pe disc numai atunci când o tranzacție
comite. Acest lucru înseamnă de obicei că fișierul este blocat de sistemul de operare, deci
pot exista și unele spălări implicite pe disc între comiteri. Valoarea implicită este să
ștergeți „--file” pe disc după fiecare rând.

Pericolul este ca o blocare poate cauza pierderea datelor.

Creșterea performanței pe care am văzut-o în urma utilizării „--buffer” este de aproximativ 5 până la 15 la sută.
Kilometrajul dvs. poate varia.

--bulk-delete
Ștergeți fiecare bucată cu o singură instrucțiune (implica „--commit-each”).

Ștergeți fiecare bucată de rânduri în bloc cu o singură instrucțiune „DELETE”. Declaratia
șterge fiecare rând dintre primul și ultimul rând al fragmentului, inclusiv. Implică
„--commit-each”, deoarece ar fi o idee proastă să „INSEREȚI” rândurile pe rând și
comite-le înainte de blocul „ȘTERGERE”.

Metoda normală este să ștergeți fiecare rând cu cheia sa primară. Ștergerile în bloc ar putea fi a
mult mai repede. Ei de asemenea ar putea nu be mai repede dacă aveți o clauză complexă „UNDE”.

Această opțiune amână complet toată procesarea „ȘTERGERE” până când este vorba de o bucată de rânduri
terminat. Dacă aveți un plugin pe sursă, metoda sa „before_delete” nu va fi
numit. În schimb, metoda sa „before_bulk_delete” este numită mai târziu.

AVERTISMENT: dacă aveți un plugin pe sursă care uneori nu se întoarce adevărat de la
„is_archivable()”, ar trebui să utilizați această opțiune numai dacă înțelegeți ce face. Dacă
pluginul indică „pt-archiver” să nu arhiveze un rând, acesta va fi în continuare șters de
ștergerea în bloc!

--[no]limită-de-ștergere-în bloc
implicit: da

Adăugați „--limit” la instrucțiunea „--bulk-delete”.

Aceasta este o opțiune avansată și nu ar trebui să o dezactivați decât dacă știți ce sunteți
faci si de ce! În mod implicit, „--bulk-delete” adaugă o clauză „--limit” în bloc
ștergeți instrucțiunea SQL. În anumite cazuri, această clauză poate fi omisă prin precizare
„--no-bulk-delete-limit”. „--limit” trebuie încă specificat.

--inserție în vrac
Inserați fiecare bucată cu LOAD DATA INFILE (implica „--bulk-delete” „--commit-each”).

Introduceți fiecare bucată de rânduri cu „ÎNCĂRCARE DATE LOCAL INFILE”. Acest lucru poate fi mult mai rapid decât
inserând câte un rând cu instrucțiuni „INSERT”. Este implementat prin crearea unui
fișier temporar pentru fiecare bucată de rânduri și scrieți rândurile în acest fișier în loc de
inserându-le. Când bucata este terminată, încarcă rândurile.

Pentru a proteja siguranța datelor dvs., această opțiune forțează utilizarea ștergerilor în bloc. Aceasta
ar fi nesigur să ștergeți fiecare rând așa cum este găsit, înainte de a introduce rândurile în
prima destinație. Forțarea ștergerii în bloc garantează că ștergerea așteaptă până la
inserarea are succes.

Opțiunile „--low-priority-insert”, „--replace” și „--ignore” funcționează cu aceasta
opțiunea, dar „--delayed-insert” nu.

Dacă „ÎNCĂRCARE DATE LOCAL INFILE” aruncă o eroare în rândurile „Comanda utilizată nu este
permis cu această versiune MySQL”, consultați documentația pentru opțiunea DSN „L”.

--charset
forma scurta: -A; tip: sfoară

Set de caractere implicit. Dacă valoarea este utf8, setează binmode al lui Perl pe STDOUT la utf8,
transmite opțiunea mysql_enable_utf8 la DBD::mysql și rulează SET NAMES UTF8 după
conectarea la MySQL. Orice altă valoare setează binmode pe STDOUT fără stratul utf8,
și rulează SET NAMES după conectarea la MySQL.

Rețineți că numai seturile de caractere așa cum sunt cunoscute de MySQL sunt recunoscute; Deci, de exemplu, „UTF8” va
funcționează, dar „UTF-8” nu va funcționa.

Vezi și „--[no]check-charset”.

--[no]check-charset
implicit: da

Asigurați-vă că conexiunea și seturile de caractere din tabel sunt aceleași. Dezactivarea acestei verificări poate
face ca textul să fie convertit în mod eronat dintr-un set de caractere în altul (de obicei din
utf8 la latin1) care poate provoca pierderi de date sau Mojibake. Dezactivarea acestei verificări poate fi
util sau necesar atunci când se intenționează conversiile setului de caractere.

--[fără] coloane de verificare
implicit: da

Asigurați-vă că „--source” și „--dest” au aceleași coloane.

Activat implicit; determină pt-archiver să verifice dacă tabelele sursă și destinație
au aceleasi coloane. Nu verifică ordinea coloanelor, tipul de date etc. Doar
verifică dacă toate coloanele din sursă există în destinație și invers. Dacă
există diferențe, pt-archiver se va închide cu o eroare.

Pentru a dezactiva această verificare, specificați --no-check-columns.

--check-interval
tip: timp; implicit: 1s

Dacă este dat „--check-slave-lag”, aceasta definește cât timp instrumentul întrerupe fiecare
când descoperă că un sclav rămâne în urmă.
Această verificare se efectuează la fiecare 100 de rânduri.

--check-slave-lag
tip: sfoară; repetabil: da

Întrerupeți arhivarea până când decalajul slave al DSN-ului specificat este mai mic decât „--max-lag”. Acest
opțiunea poate fi specificată de mai multe ori pentru a verifica mai mult de un slave.

--coloane
forma scurta: -c; tip: matrice

Listă de coloane separate prin virgulă de arhivat.

Specificați o listă de coloane separate prin virgulă de preluat, de scris în fișier și de inserat
tabelul de destinație. Dacă este specificat, pt-archiver ignoră alte coloane, cu excepția cazului
trebuie să le adauge la instrucțiunea „SELECT” pentru a urca un index sau a șterge rânduri.
Preia și folosește aceste coloane suplimentare în interior, dar nu le scrie în
fișier sau către tabelul de destinație. Aceasta face transmite-le la pluginuri.

Vedeți și „--primary-key-only”.

--commit-fiecare
Commiteți fiecare set de rânduri preluate și arhivate (dezactivează „--txn-size”).

Commite tranzacții și șterge „--file” după ce fiecare set de rânduri a fost arhivat,
înainte de a prelua următorul set de rânduri și înainte de a dormi dacă este specificat „--sleep”.
Dezactivează „--txn-size”; utilizați „--limit” pentru a controla dimensiunea tranzacției cu
„--angajați-fiecare”.

Această opțiune este utilă ca scurtătură pentru a face „--limit” și „--txn-size” aceeași valoare,
dar mai important, evită ca tranzacțiile să fie menținute deschise în timp ce se caută mai mult
rânduri. De exemplu, imaginați-vă că arhivați rânduri vechi de la începutul unui foarte
tabel mare, cu „--limit” 1000 și „--txn-size” 1000. După o anumită perioadă de căutare
și arhivând 1000 de rânduri simultan, pt-archiver găsește ultimele 999 de rânduri și arhive
le, apoi execută următorul SELECT pentru a găsi mai multe rânduri. Aceasta scanează restul
tabel, dar nu mai găsește niciodată rânduri. A ținut deschisă o tranzacție de foarte mult timp
timp, doar pentru a determina că oricum este terminat. Puteți folosi „--commit-each” pentru a evita
acest.

--config
tip: Array

Citiți această listă de fișiere de configurare separate prin virgulă; dacă este specificat, acesta trebuie să fie primul
opțiunea de pe linia de comandă.

--Bază de date
forma scurta: -D; tip: sfoară

Conectați-vă la această bază de date.

--inserare-întârziată
Adăugați modificatorul DELAYED la instrucțiunile INSERT.

Adaugă modificatorul DELAYED la instrucțiunile INSERT sau REPLACE. Vedea
<http://dev.mysql.com/doc/en/insert.html> pentru detalii.

--dest
tip: DSN

DSN care specifică tabelul în care să arhiveze.

Acest articol specifică un tabel în care pt-archiver va insera rânduri din care arhivate
"--sursă". Folosește același format de argument cheie=val ca „--source”. Cei mai multi lipsesc
valorile implicit la aceleași valori ca „--source”, astfel încât nu trebuie să repetați opțiunile
care sunt aceleași în „--source” și „--dest”. Utilizați opțiunea „--help” pentru a vedea care
valorile sunt copiate din „--source”.

AVERTISMENT: Folosind un fișier de opțiuni implicit (F) opțiune DSN care definește un socket pentru
„--source” face ca pt-archiver să se conecteze la „--dest” folosind acel soclu, cu excepția cazului în care un alt
este specificată soclul pentru „--dest”. Aceasta înseamnă că pt-archiver se poate conecta incorect
la „--source” când se conectează la „--dest”. De exemplu:

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

Când pt-archiver se conectează la „--dest”, host2, se va conecta prin „--source”,
host1, socket definit în host1.cnf.

--funcție uscată
Imprimați interogări și ieșiți fără a face nimic.

Determină închiderea pt-archiver după tipărirea numelui de fișier și a instrucțiunilor SQL pe care le va folosi.

--fişier
tip: sfoară

Fișier pentru a arhiva, cu FORMATUL DATEI()-cum ar fi formatarea.

Nume fișier în care să scrieți rândurile arhivate. Un subset de MySQL FORMATUL DATEI() formatare
codurile sunt permise în numele fișierului, după cum urmează:

%d zi a lunii, numerică (01..31)
%H oră (00..23)
%i minute, numeric (00..59)
%m Lună, numeric (01..12)
%s secunde (00..59)
%Y An, numeric, patru cifre

Puteți utiliza și următoarele coduri de format suplimentar:

%D Nume bază de date
%t Nume tabel

Exemplu:

--fișier „/var/log/archive/%Y-%m-%d-%D.%t”

Conținutul fișierului este în același format folosit de SELECT INTO OUTFILE, așa cum este documentat
în manualul MySQL: rânduri terminate cu linii noi, coloane terminate cu file, NULL
caracterele sunt reprezentate de \N, iar caracterele speciale sunt escape de \. Aceasta permite
reîncărcați un fișier cu setările implicite ale LOAD DATA INFILE.

Dacă doriți un antet de coloană în partea de sus a fișierului, consultați „--header”. Fișierul este automat
spălat implicit; vezi „--buffer”.

--pentru-actualizare
Adaugă modificatorul FOR UPDATE la instrucțiunile SELECT.

Pentru detalii, vezihttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--antet
Imprimați antetul coloanei în partea de sus a „--file”.

Scrie numele coloanelor ca prima linie din fișierul dat de „--file”. Dacă dosarul
există, nu scrie anteturi; aceasta păstrează fișierul încărcat cu LOAD DATA INFILE în
în cazul în care adăugați mai multe rezultate.

--Ajutor
Arată ajutor și ieși.

--selectare-cu prioritate ridicată
Adaugă modificatorul HIGH_PRIORITY la instrucțiunile SELECT.

Vedeahttp://dev.mysql.com/doc/en/select.html> pentru detalii.

--gazdă
forma scurtă: -h; tip: sfoară

Conectați-vă la gazdă.

--ignora
Utilizați IGNORE pentru instrucțiunile INSERT.

Determină INSERT-urile în „--dest” să fie INSERT IGNORE.

--limită
tip: int; implicit: 1

Numărul de rânduri de preluat și arhivat per instrucțiune.

Limitează numărul de rânduri returnate de instrucțiunile SELECT la care preiau rândurile
Arhiva. Implicit este un rând. Poate fi mai eficient să crești limita, dar fii
atenție dacă arhivați puțin, sărind peste multe rânduri; acest lucru poate
provoacă mai multe dispute cu alte interogări, în funcție de motorul de stocare, tranzacție
nivelul de izolare și opțiuni precum „--for-update”.

--local
Nu scrieți interogări OPTIMIZE sau ANALYZE în binlog.

Adaugă modificatorul NO_WRITE_TO_BINLOG la interogările ANALYZE și OPTIMIZE. Vezi „--analiza”
pentru detalii.

--low-priority-delete
Adaugă modificatorul LOW_PRIORITY la instrucțiunile DELETE.

Vedeahttp://dev.mysql.com/doc/en/delete.html> pentru detalii.

--inserție cu prioritate scăzută
Adaugă modificatorul LOW_PRIORITY la instrucțiunile INSERT sau REPLACE.

Vedeahttp://dev.mysql.com/doc/en/insert.html> pentru detalii.

--max-flow-ctl
tip: plutitor

Oarecum similar cu --max-lag, dar pentru clusterele PXC. Verificați timpul mediu petrecut în cluster
pauză pentru Controlul fluxului și faceți pauza instrumentului dacă depășește procentul indicat
în opțiune. Implicit nu este verificarea controlului fluxului. Această opțiune este disponibilă pentru PXC
versiunile 5.6 sau mai recente.

--max-lag
tip: timp; implicit: 1s

Întrerupeți arhivarea dacă slave dat de „--check-slave-lag” întârzie.

Această opțiune face ca pt-archiver să se uite la slave de fiecare dată când este pe cale să fie preluat
alt rând. Dacă decalajul slave este mai mare decât valoarea opțiunii sau dacă slave
nu rulează (deci decalajul său este NULL), pt-table-checksum dorm pentru „--check-interval”
secunde și apoi se uită din nou la decalajul. Se repetă până când sclavul este prins,
apoi procedează la preluarea și arhivarea rândului.

Această opțiune poate elimina nevoia de „--sleep” sau „--sleep-coef”.

--nu-ascensiune
Nu utilizați optimizarea indexului ascendent.

Optimizarea implicită a indexului ascendent face ca „pt-archiver” să se optimizeze repetat
Interogările „SELECT” astfel încât acestea să caute în indexul unde s-a încheiat interogarea anterioară, apoi scanează
de-a lungul ei, mai degrabă decât scanarea de la începutul tabelului de fiecare dată. Aceasta este
activat în mod implicit, deoarece este în general o strategie bună pentru accesări repetate.

Indecșii mari, cu mai multe coloane, pot face ca clauza WHERE să fie suficient de complexă
acest lucru ar putea fi de fapt mai puțin eficient. Luați în considerare, de exemplu, o CHEIE PRIMARĂ cu patru coloane
pe (a, b, c, d). Clauza WHERE pentru a începe acolo unde s-a încheiat ultima interogare este următoarea:

UNDE (a >?)
SAU (a = ? ŞI b > ?)
SAU (a = ? ŞI b = ? ŞI c > ?)
SAU (a = ? ŞI b = ? ŞI c = ? ŞI d >= ?)

Popularea substituenților cu valori folosește memoria și CPU, adaugă trafic de rețea și
analiza generală și poate face ca interogarea să fie mai dificilă de optimizat pentru MySQL. Un cu patru coloane
cheia nu este mare lucru, dar o cheie cu zece coloane în care fiecare coloană permite „NULL” ar putea
fi.

Creșterea indexului ar putea să nu fie necesară dacă știți că pur și simplu eliminați rânduri
de la începutul mesei în bucăți, dar fără a lăsa găuri, deci începând de la
începutul mesei este de fapt cel mai eficient lucru de făcut.

Vezi și „--ascend-first”. Consultați „EXTINDERE” pentru o discuție despre modul în care aceasta interacționează
cu pluginuri.

--nu-sterge
Nu ștergeți rândurile arhivate.

Determină ca „pt-archiver” să nu ștergă rândurile după procesarea lor. Acest lucru nu permite
„--no-ascend”, deoarece activarea ambelor ar provoca o buclă infinită.

Dacă există un plugin pe DSN-ul sursă, metoda sa „before_delete” este oricum apelată,
chiar dacă „pt-archiver” nu va executa ștergerea. Consultați „EXTINDERE” pentru mai multe despre
Plugin-uri.

--optimizeze
tip: sfoară

Rulați apoi OPTIMIZE TABLE pe „--source” și/sau „--dest”.

Rulează OPTIMIZE TABLE după terminare. Consultați „--analyze” pentru sintaxa opțiunii și
<http://dev.mysql.com/doc/en/optimize-table.html> pentru detalii despre OPTIMIZE TABLE.

--parola
forma scurta: -p; tip: sfoară

Parola de folosit la conectare. Dacă parola conține virgule, acestea trebuie să fie eliminate
cu o bară oblică inversă: „examen\,ple”

--pid
tip: sfoară

Creați fișierul PID dat. Instrumentul nu va porni dacă fișierul PID există deja și
PID-ul pe care îl conține este diferit de PID-ul curent. Cu toate acestea, dacă fișierul PID
există și PID-ul pe care îl conține nu mai rulează, instrumentul va suprascrie PID-ul
fișier cu PID-ul curent. Fișierul PID este eliminat automat când instrumentul iese.

--conecteaza
tip: sfoară

Numele modulului Perl de utilizat ca plugin generic.

Specificați numele modulului Perl al unui plugin de uz general. În prezent este folosit doar
pentru statistici (vezi „--statistics”) și trebuie să aibă „new()” și o metodă „statistics()”.

Metoda „new( src =" $src, dst => $dst, opts => $o )> primește sursa și
DSN-urile de destinație și conexiunile la bazele de date ale acestora, la fel ca cele specifice conexiunii
pluginurile fac. De asemenea, primește un obiect OptionParser ($o) pentru accesarea liniei de comandă
opțiuni (exemplu: "$o-"get('purge');>).

Metoda „statistics(\%stats, $time)” primește un hashef al statisticilor colectate de
lucrarea de arhivare și ora la care a început întreaga lucrare.

--port
forma scurta: -P; tip: int

Numărul portului de utilizat pentru conexiune.

--doar-cheie-primară
Numai coloanele cheie primară.

O comandă rapidă pentru specificarea „--columns” cu coloanele cheii primare. Aceasta este o
eficiență dacă doriți doar să curățați rândurile; evită preluarea întregului rând, când
sunt necesare doar coloanele cheii primare pentru instrucțiunile „DELETE”. Vezi și „--purge”.

--progresa
tip: int

Imprimați informații despre progres la fiecare X rânduri.

Imprimă ora curentă, timpul scurs și rândurile arhivate la fiecare X rânduri.

--epurare
Curățați în loc de arhivare; permite omiterea „--file” și „--dest”.

Permite arhivarea fără un argument „--file” sau „--dest”, care este efectiv o curățare
deoarece rândurile sunt doar șterse.

Dacă doriți doar să curățați rândurile, luați în considerare specificarea coloanelor cheii primare ale tabelului
cu „--primary-key-only”. Acest lucru va împiedica preluarea tuturor coloanelor de pe server pentru
fara motiv.

--stergere rapida
Adaugă modificatorul QUICK la instrucțiunile DELETE.

Vedeahttp://dev.mysql.com/doc/en/delete.html> pentru detalii. După cum se precizează în
documentație, în unele cazuri poate fi mai rapid să utilizați DELETE QUICK urmat de OPTIMIZE
MASA. Puteți folosi „--optimize” pentru aceasta.

--Liniște
forma scurta: -q

Nu tipăriți niciun rezultat, cum ar fi pentru „--statistics”.

Suprimă ieșirea normală, inclusiv ieșirea „--statistics”, dar nu suprimă
ieșirea din „--why-quit”.

--a inlocui
Face ca INSERT-urile în „--dest” să fie scrise ca REPLACE.

--reîncercă
tip: int; implicit: 1

Numărul de reîncercări per timeout sau blocaj.

Specifică de câte ori pt-archiver ar trebui să încerce din nou când există o blocare InnoDB
așteptați timeout sau impas. Când reîncercările sunt epuizate, pt-archiver se va închide cu un
eroare.

Luați în considerare cu atenție ce doriți să se întâmple atunci când arhivați între un amestec de
motoarele de stocare tranzacționale și non-tranzacționale. INSERT la „--dest” și
DELETE din „--source” se află pe conexiuni separate, deci de fapt nu
participa la aceeași tranzacție chiar dacă se află pe același server. Cu toate acestea, pt-
arhivatorul implementează tranzacții simple distribuite în cod, deci commit și rollback
ar trebui să se întâmple după cum se dorește între cele două conexiuni.

În acest moment nu am scris niciun cod pentru a gestiona erorile cu stocarea tranzacțională
alte motoare decât InnoDB. Solicitați această funcție dacă aveți nevoie de ea.

--timpul de rulare
tip: timp

E timpul să alergi înainte de a ieși.

Sufixul opțional s=secunde, m=minute, h=ore, d=zile; dacă nu există sufix, se folosește s.

--[no]safe-auto-increment
implicit: da

Nu arhivați rândul cu AUTO_INCREMENT maxim.

Adaugă o clauză WHERE suplimentară pentru a împiedica pt-archiver să elimine cel mai nou rând când
urcând o cheie AUTO_INCREMENT cu o singură coloană. Acest lucru protejează împotriva reutilizarii
AUTO_INCREMENT valorile dacă serverul repornește și este activat implicit.

Clauza suplimentară WHERE conține valoarea maximă a coloanei de autoincrementare începând cu data de
începutul lucrării de arhivare sau de curățare. Dacă sunt inserate rânduri noi în timp ce pt-archiver
rulează, nu le va vedea.

--santinelă
tip: sfoară; implicit: /tmp/pt-archiver-sentinel

Ieșiți dacă acest fișier există.

Prezența fișierului specificat de „--sentinel” va determina oprirea pt-archiver
arhivare și ieșire. Valoarea implicită este /tmp/pt-archiver-sentinel. S-ar putea să găsești asta
util pentru a opri joburile cron cu grație, dacă este necesar. Vezi și „--stop”.

--set-vars
tip: Array

Setați variabilele MySQL în această listă de perechi „variabilă=valoare”, separate prin virgulă.

În mod implicit, instrumentul setează:

wait_timeout=10000

Variabilele specificate pe linia de comandă înlocuiesc aceste valori implicite. De exemplu,
specificarea „--set-vars wait_timeout=500” înlocuiește valoarea implicită de 10000.

Instrumentul imprimă un avertisment și continuă dacă o variabilă nu poate fi setată.

--share-lock
Adaugă modificatorul LOCK IN SHARE MODE la instrucțiunile SELECT.

Vedeahttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--skip-foreign-key-checks
Dezactivează verificările cheilor străine cu SET FOREIGN_KEY_CHECKS=0.

--dormi
tip: int

Timp de somn între preluări.

Specifică cât timp trebuie să dormi între instrucțiunile SELECT. Implicit este să nu dormi la
toate. Tranzacțiile NU sunt comise, iar fișierul „--file” NU este șters înainte
dormit. Consultați „--txn-size” pentru a controla asta.

Dacă este specificat „--commit-each”, comiterea și spălarea are loc înainte de culcare.

--coef de somn
tip: plutitor

Calculați „--sleep” ca multiplu al ultimului timp SELECT.

Dacă această opțiune este specificată, pt-archiver va dormi pentru timpul de interogare a ultimului
SELECT înmulțit cu coeficientul specificat.

Acesta este un mod puțin mai sofisticat de a accelera SELECT-urile: somn variabil
interval de timp între fiecare SELECT, în funcție de cât timp durează SELECT-urile.

--priză
forme scurte; tip: sfoară

Fișier socket de utilizat pentru conectare.

--sursă
tip: DSN

DSN care specifică tabelul din care trebuie arhivat (obligatoriu). Acest argument este un DSN. Vedea
„OPȚIUNI DSN” pentru sintaxă. Cele mai multe opțiuni controlează modul în care pt-archiver se conectează la MySQL,
dar există câteva opțiuni DSN extinse în sintaxa acestui instrument. D, t și i
opțiuni selectați un tabel de arhivat:

--source h=serverul_meu,D=baza_de_date_mea,t=tblul_meu

Opțiunea a specifică baza de date de setat ca implicită a conexiunii cu USE. Dacă
opțiunea b este adevărată, dezactivează înregistrarea binară cu SQL_LOG_BIN. Opțiunea m
specifică acțiuni conectabile, pe care le poate furniza un modul extern Perl. Singura
partea necesară este masa; alte părți pot fi citite din diferite locuri din
mediu (cum ar fi fișierele de opțiuni).

Partea „i” merită o mențiune specială. Acest lucru îi spune pt-archiver ce index ar trebui
scanează pentru a arhiva. Aceasta apare într-un indiciu FORCE INDEX sau USE INDEX din SELECT
instrucțiuni utilizate pentru a prelua rândurile arhivabile. Dacă nu specificați nimic, pt-archiver
va descoperi automat un index bun, preferând o „CHEIE PRIMARIA” dacă există. In al meu
experiența asta funcționează de obicei bine, așa că de cele mai multe ori puteți omite
partea „eu”.

Indexul este folosit pentru a optimiza accesele repetate la tabel; pt-archiver își amintește
ultimul rând pe care îl preia din fiecare instrucțiune SELECT și îl folosește pentru a construi un WHERE
clauza, folosind coloanele din indexul specificat, care ar trebui să permită MySQL să pornească
următorul SELECTAȚI unde s-a încheiat ultimul, mai degrabă decât să scanați potențial din
începutul tabelului cu fiecare SELECT succesiv. Dacă utilizați extern
plugin-uri, consultați „EXTINDERE” pentru o discuție despre modul în care acestea interacționează cu creșterea
indicii.

Opțiunile „a” și „b” vă permit să controlați modul în care instrucțiunile curg prin binar
Buturuga. Dacă specificați opțiunea „b”, înregistrarea binară va fi dezactivată în cazul specificat
conexiune. Dacă specificați opțiunea „a”, conexiunea va „UTILIZA” cea specificată
baza de date, pe care o puteți folosi pentru a împiedica sclavii să execute evenimentele de jurnal binar
cu opțiunile „--replicate-ignore-db”. Aceste două opțiuni pot fi folosite ca fiind diferite
metode pentru a atinge același obiectiv: arhivați datele de pe master, dar lăsați-le pe
sclav. De exemplu, puteți rula o lucrare de curățare pe master și puteți preveni
care se întâmplă asupra sclavului folosind metoda pe care o alegeți.

AVERTISMENT: Folosind un fișier de opțiuni implicit (F) opțiune DSN care definește un socket pentru
„--source” face ca pt-archiver să se conecteze la „--dest” folosind acel soclu, cu excepția cazului în care un alt
este specificată soclul pentru „--dest”. Aceasta înseamnă că pt-archiver se poate conecta incorect
la „--source” când este menit să se conecteze la „--dest”. De exemplu:

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

Când pt-archiver se conectează la „--dest”, host2, se va conecta prin „--source”,
host1, socket definit în host1.cnf.

--statistici
Colectați și imprimați statistici de sincronizare.

Determină pt-archiver să colecteze statistici de sincronizare despre ceea ce face. Aceste statistici
sunt disponibile pentru pluginul specificat de „--plugin”

Dacă nu specificați „--quiet”, „pt-archiver” tipărește statisticile când iese. The
statisticile arată astfel:

Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
Sursa: D=db,t=tabel
Selectați 4
INSERT 4
ȘTERGERE 4
Număr de acțiuni Timp Buc
comite 10 0.1079 88.27
selectați 5 0.0047 3.87
stergerea 4 0.0028 2.29
introducerea 4 0.0028 2.28
altele 0 0.0040 3.29

Primele două (sau trei) linii arată orele și tabelele sursă și destinație. The
următoarele trei rânduri arată câte rânduri au fost preluate, inserate și șterse.

Rândurile rămase arată numărătoarea și sincronizarea. Coloanele sunt acțiunea, totalul
de câte ori a fost cronometrată acea acțiune, timpul total necesar și procentul
durata totală de rulare a programului. Rândurile sunt sortate în ordinea descrescătoare a timpului total. The
ultimul rând este restul timpului care nu este atribuit în mod explicit la nimic. Acțiunile vor
variază în funcție de opțiunile din linia de comandă.

Dacă este dat „--why-quit”, comportamentul său este ușor modificat. Această opțiune determină acest lucru
imprimați motivul ieșirii chiar și atunci când este doar pentru că nu mai sunt rânduri.

Această opțiune necesită modulul standard Time::HiRes, care face parte din core Perl on
versiuni Perl relativ noi.

--Stop
Opriți rularea instanțelor prin crearea fișierului sentinelă.

Determină pt-archiver să creeze fișierul sentinel specificat de „--sentinel” și să iasă.
Acest lucru ar trebui să aibă ca efect oprirea tuturor instanțelor care rulează care urmăresc
același dosar santinelă.

--txn-size
tip: int; implicit: 1

Numărul de rânduri per tranzacție.

Specifică dimensiunea, în număr de rânduri, a fiecărei tranzacții. Zero dezactivează tranzacțiile
cu totul. După ce pt-archiver procesează atât de multe rânduri, comite atât
„--source” și „--dest” dacă sunt date și șterge fișierul dat de „--file”.

Acest parametru este esențial pentru performanță. Dacă arhivați de pe un server live,
care, de exemplu, face o muncă grea OLTP, trebuie să alegeți un echilibru bun între
dimensiunea tranzacției și cheltuielile generale de comitere. Tranzacțiile mai mari creează posibilitatea de
mai multe dispute de blocare și blocaje, dar tranzacțiile mai mici provoacă mai frecvente
comite overhead, care poate fi semnificativ. Pentru a face o idee, pe un mic set de testare I
cu care am lucrat în timpul scrierii pt-archiver, o valoare de 500 a făcut ca arhivarea să dureze aproximativ 2
secunde la 1000 de rânduri pe o instanță MySQL, altfel silențioasă, pe computerul meu desktop,
arhivare pe disc și pe alt tabel. Dezactivarea tranzacțiilor cu valoarea zero,
care pornește autocommit, a scăzut performanța la 38 de secunde la o mie de rânduri.

Dacă nu arhivați din sau către un motor de stocare tranzacțională, poate doriți
dezactivați tranzacțiile, astfel încât pt-archiver să nu încerce să comite.

--utilizator
forma scurtă: -u; tip: sfoară

Utilizator pentru autentificare dacă nu este utilizator actual.

--versiune
Afișați versiunea și ieșiți.

--[no]verificare-versiune
implicit: da

Verificați cea mai recentă versiune de Percona Toolkit, MySQL și alte programe.

Aceasta este o funcție standard de „verificare automată a actualizărilor”, cu două suplimentare
Caracteristici. În primul rând, instrumentul verifică versiunea altor programe de pe sistemul local în
în plus față de propria sa versiune. De exemplu, verifică versiunea fiecărui server MySQL
se conectează la, Perl și modulul Perl DBD::mysql. În al doilea rând, verifică și avertizează
despre versiunile cu probleme cunoscute. De exemplu, MySQL 5.5.25 a avut o eroare critică și
a fost relansat ca 5.5.25a.

Orice actualizări sau probleme cunoscute sunt tipărite în STDOUT înainte de ieşirea normală a instrumentului.
Această caracteristică nu ar trebui să interfereze niciodată cu funcționarea normală a instrumentului.

Pentru mai multe informații, vizitați .

--Unde
tip: sfoară

Clauza WHERE pentru a limita rândurile de arhivat (obligatoriu).

Specifică o clauză WHERE pentru a limita rândurile care sunt arhivate. Nu includeți cuvântul
UNDE. Poate fi necesar să citați argumentul pentru a împiedica shell-ul să îl interpreteze.
De exemplu:

--where 'ts < data_actuală - interval 90 de zile'

Pentru siguranță, este necesar „--where”. Dacă nu aveți nevoie de o clauză WHERE, utilizați
„--unde” 1=1.

--de ce-renunț
Imprimați motivul pentru ieșire, cu excepția cazului în care rândurile sunt epuizate.

Determină pt-archiver să imprime un mesaj dacă se închide din orice alt motiv decât rularea
din rânduri de arhivat. Acest lucru poate fi util dacă aveți un job cron cu „--run-time”
specificat, de exemplu, și doriți să vă asigurați că pt-archiver se termină înainte
ramane fara timp.

Dacă este dat „--statistics”, comportamentul este ușor modificat. Acesta va imprima
motiv pentru a ieși chiar și atunci când este doar pentru că nu mai sunt rânduri.

Această ieșire se tipărește chiar dacă este dat „--quiet”. Asta pentru a putea pune „pt-archiver”.
un job „cron” și primiți un e-mail dacă există o ieșire anormală.

dsn OPŢIUNI


Aceste opțiuni DSN sunt folosite pentru a crea un DSN. Fiecare opțiune este dată ca „opțiune=valoare”.
Opțiunile sunt sensibile la majuscule, așa că P și p nu sunt aceeași opțiune. Nu poate exista
spații albe înainte sau după „=" și dacă valoarea conține spații albe, aceasta trebuie citată.
Opțiunile DSN sunt separate prin virgulă. Consultați pagina de manual percona-toolkit pentru detalii complete.

· A

copie: nu

Baza de date de utilizat la executarea interogărilor.

· ARE

dsn: set de caractere; copie: da

Set de caractere implicit.

· B

copie: nu

Dacă este adevărat, dezactivați binlog cu SQL_LOG_BIN.

· D

dsn: baza de date; copie: da

Baza de date care contine tabelul.

F

dsn: mysql_read_default_file; copie: da

Citiți numai opțiunile implicite din fișierul dat

· H

dsn: gazdă; copie: da

Conectați-vă la gazdă.

· i

copie: da

Index de utilizat.

· eu

copie: da

Activați explicit LOAD DATA LOCAL INFILE.

Din anumite motive, unii furnizori compilează libmysql fără --enable-local-infile
opțiunea, care dezactivează declarația. Acest lucru poate duce la situații ciudate, cum ar fi
server care permite LOCAL INFILE, dar clientul aruncă excepții dacă este folosit.

Cu toate acestea, atâta timp cât serverul permite ÎNCĂRCARE DATE, clienții le pot reactiva cu ușurință; Vedea
și
<http://search.cpan.org/~capttofu/DBD-mysql/lib/DBD/mysql.pm>. Această opțiune face
exact asta.

Deși nu am găsit un caz în care pornirea acestei opțiuni duce la erori sau la diferențe
comportament, pentru a fi în siguranță, această opțiune nu este activată în mod implicit.

· m

copie: nu

Numele modulului de plugin.

· p

dsn: parola; copie: da

Parola de folosit la conectare. Dacă parola conține virgule, acestea trebuie să fie eliminate
cu o bară oblică inversă: „examen\,ple”

· P

dsn: port; copie: da

Numărul portului de utilizat pentru conexiune.

· S

dsn: mysql_socket; copie: da

Fișier socket de utilizat pentru conectare.

· t

copie: da

Tabel de arhivat de la/la.

· u

dsn: utilizator; copie: da

Utilizator pentru autentificare dacă nu este utilizator actual.

EXTINDEREA


pt-archiver este extensibil prin conectarea modulelor externe Perl pentru a gestiona o anumită logică și/sau
actiuni. Puteți specifica un modul atât pentru „--source” cât și pentru „--dest”, cu „m”
parte a caietului de sarcini. De exemplu:

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

Acest lucru va face ca pt-archiver să încarce pachetele My::Module1 și My::Module2, creați
instanțe ale acestora și apoi efectuați apeluri către acestea în timpul procesului de arhivare.

De asemenea, puteți specifica un plugin cu „--plugin”.

Modulul trebuie să ofere această interfață:

nou(dbh => $dbh, db => $db_name, tbl => $tbl_name)
Constructorului pluginului i se transmite o referință la mânerul bazei de date, baza de date
numele și numele tabelului. Pluginul este creat imediat după ce pt-archiver deschide fișierul
conexiunea, iar înainte de a examina tabelul dat în argumente. Acest lucru dă
plugin-ul o șansă de a crea și popula tabele temporare sau de a face alte lucrări de configurare.

before_begin(cols => \@cols, allcols => \@allcols)
Această metodă este apelată chiar înainte ca pt-archiver să înceapă să itereze printre rânduri și
arhivându-le, dar după ce face toate celelalte lucrări de configurare (examinarea structurilor tabelelor,
proiectarea interogărilor SQL și așa mai departe). Aceasta este singura dată când pt-archiver îi spune pluginului
numele coloanelor pentru rândurile la care va trece pluginul în timpul arhivării.

Argumentul „cols” este numele coloanelor pe care utilizatorul a cerut să fie arhivat, fie prin
implicit sau prin opțiunea „--columns”. Argumentul „allcols” este lista de coloane
numele pentru fiecare rând pt-archiver vor prelua din tabelul sursă. Poate aduce mai mult
coloane decât a cerut utilizatorul, deoarece are nevoie de unele coloane pentru uzul său propriu. Când
funcțiile ulterioare de plugin primesc un rând, acesta este rândul complet care conține toate elementele suplimentare
coloane, dacă există, adăugate la sfârșit.

este_arhivabil(rând => \@rând)
Această metodă este apelată pentru fiecare rând pentru a determina dacă este arhivabil. Acest
se aplică numai pentru „--source”. Argumentul este rândul însuși, ca un arrayref. Dacă
metoda returnează true, rândul va fi arhivat; altfel va fi omis.

Omiterea unui rând adaugă complicații pentru indecșii care nu sunt unici. În mod normal, pt-archiver utilizează a
Clauza WHERE concepută pentru a viza ultimul rând procesat ca loc pentru a începe scanarea
pentru următoarea instrucțiune SELECT. Dacă ați omis rândul returnând false de la
este_arhivabil(), pt-archiver ar putea intra într-o buclă infinită, deoarece rândul încă
există. Prin urmare, atunci când specificați un plugin pentru argumentul „--source”, pt-archiver
își va schimba ușor clauza WHERE. În loc să începeți cu „mai mare decât sau egal
la" ultimul rând procesat, va începe "strict mai mare decât". Acest lucru va funcționa
bine pentru indecși unici, cum ar fi cheile primare, dar poate sări peste rânduri (lăsă găuri) pe
indici neunici sau la urcarea doar pe prima coloană a unui index.

„pt-archiver” va schimba clauza în același mod dacă specificați „--no-delete”,
pentru că din nou este posibilă o buclă infinită.

Dacă specificați opțiunea „--bulk-delete” și returnați false din această metodă,
„pt-archiver” poate să nu facă ceea ce doriți. Rândul nu va fi arhivat, dar va fi
șterse, deoarece ștergerile în bloc operează pe intervale de rânduri și nu știu ce rânduri
pluginul selectat pentru păstrare.

Dacă specificați opțiunea „--bulk-insert”, valoarea returnată a acestei metode va influența
dacă rândul este scris în fișierul temporar pentru inserarea în bloc, deci inserările în bloc
va funcționa conform așteptărilor. Cu toate acestea, inserțiile în vrac necesită ștergeri în bloc.

before_delete(row => \@row)
Această metodă este apelată pentru fiecare rând chiar înainte de a fi șters. Acest lucru se aplică numai la
"--sursă". Acesta este un loc bun pentru a vă gestiona dependențele, cum ar fi ștergerea
lucruri care au cheie străină pentru rândul pe care urmează să îl ștergeți. Ai putea folosi, de asemenea
aceasta pentru a arhiva recursiv toate tabelele dependente.

Această metodă de plugin este numită chiar dacă este dat „--no-delete”, dar nu dacă
Este dat „--bulk-delete”.

before_bulk_delete(first_row => \@row, last_row => \@row)
Această metodă este apelată chiar înainte de executarea unei ștergeri în bloc. Este similar cu
metoda „before_delete”, cu excepția faptului că argumentele sale sunt primul și ultimul rând al intervalului
care urmează să fie șters. Este numit chiar dacă este dat „--no-delete”.

before_insert(row => \@row)
Această metodă este apelată pentru fiecare rând chiar înainte de a fi inserată. Acest lucru se aplică numai la
„--dest”. Puteți folosi acest lucru pentru a insera rândul în mai multe tabele, poate cu un
ON DUPLICATE KEY UPDATE clauză pentru a construi tabele rezumative într-un depozit de date.

Această metodă nu este numită dacă este dat „--bulk-insert”.

before_bulk_insert(first_row => \@row, last_row => \@row, filename =>
bulk_insert_filename)
Această metodă este apelată chiar înainte de executarea unei inserții în bloc. Este similar cu
metoda „before_insert”, cu excepția faptului că argumentele sale sunt primul și ultimul rând al intervalului
care urmează să fie șters.

custom_sth(row => \@row, sql => $sql)
Această metodă este numită chiar înainte de inserarea rândului, dar după „before_insert()". Aceasta
permite pluginului să specifice o declarație „INSERT” diferită, dacă se dorește. Întoarcerea
valoarea (dacă există) ar trebui să fie un handle de instrucțiune DBI. Parametrul „sql” este textul SQL
folosit pentru a pregăti instrucțiunea implicită „INSERT”. Această metodă nu este numită dacă dvs
specificați „--bulk-insert”.

Dacă nu se returnează nicio valoare, se utilizează mânerul implicit al instrucțiunii „INSERT”.

Această metodă se aplică numai pluginului specificat pentru „--dest”, deci dacă pluginul dvs. nu este
făcând ceea ce vă așteptați, verificați dacă l-ați specificat pentru destinație și nu pentru
sursă.

custom_sth_bulk(first_row => \@row, last_row => \@row, sql => $sql, nume de fișier =>
$bulk_insert_filename)
Dacă ați specificat „--bulk-insert”, această metodă este apelată chiar înaintea blocului
introduceți, dar după "before_bulk_insert()„, iar argumentele sunt altele.

Valoarea de returnare a acestei metode etc. este similară cu „custom_sth()„metoda.

dupa_terminare()
Această metodă este apelată după ce pt-archiver iese din bucla de arhivare, commit toată baza de date
tratează, închide „--file” și tipărește statisticile finale, dar înainte ca pt-archiver să ruleze
ANALYZE sau OPTIMIZE (vezi „--analyze” și „--optimize”).

Dacă specificați un plugin atât pentru „--source” cât și pentru „--dest”, construcții pt-archiver, apeluri
before_begin(), și apeluri dupa_terminare() pe cele două pluginuri în ordinea „--source”,
„--dest”.

pt-archiver presupune că controlează tranzacțiile și că pluginul NU se va confirma sau rula
înapoi mânerul bazei de date. Detaliul bazei de date transmis constructorului pluginului este
același handle se folosește de pt-archiver. Amintiți-vă că „--source” și „--dest” sunt separate
mânere.

Un exemplu de modul ar putea arăta astfel:

pachet My::Module;

sub nou {
my ( $clasa, %args ) = @_;
return bless(\%args, $class);
}

sub before_begin {
my ( $self, %args ) = @_;
# Salvați numele coloanelor pentru mai târziu
$self->{cols} = $args{cols};
}

sub este_arhivabil {
my ( $self, %args ) = @_;
# Faceți o logică avansată cu $args{row}
1 reveni;
}

sub before_delete {} # Nu luați nicio măsură
sub before_insert {} # Nu luați nicio măsură
sub custom_sth {} # Nu luați nicio măsură
sub after_finish {} # Nu luați nicio măsură

1;

MEDIUL


Variabila de mediu „PTDEBUG” permite ieșirea depanării detaliate către STDERR. Pentru a permite
depanarea și capturarea tuturor rezultatelor într-un fișier, rulați instrumentul ca:

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

Fiți atenți: ieșirea de depanare este voluminoasă și poate genera câțiva megaocteți de ieșire.

SISTEM CERINȚE


Aveți nevoie de Perl, DBI, DBD::mysql și de câteva pachete de bază care ar trebui să fie instalate în orice
o versiune relativ nouă de Perl.

Utilizați pt-archiverp online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    DivKit
    DivKit
    DivKit este o sursă deschisă bazată pe server
    cadru UI (SDUI). Îți permite
    lansați actualizările provenite de la server la
    diferite versiuni de aplicație. De asemenea, poate fi
    folosit pentru ...
    Descărcați DivKit
  • 2
    subconvertor
    subconvertor
    Utilitate pentru a converti între diverse
    format de abonament. Utilizatori Shadowrocket
    ar trebui să folosească ss, ssr sau v2ray ca țintă.
    Puteți adăuga &remark= la
    HT apreciat de Telegram...
    Descărcați subconvertorul
  • 3
    SPĂLARE
    SPĂLARE
    SWASH este o valoare numerică de uz general
    instrument pentru simularea instabilității,
    nehidrostatic, cu suprafață liberă,
    flux rotaţional şi fenomene de transport
    în apele de coastă ca...
    Descărcați SWASH
  • 4
    VBA-M (arhivat - Acum pe Github)
    VBA-M (arhivat - Acum pe Github)
    Proiectul s-a mutat la
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Caracteristici:Creații de înșelăciune salvează stări multiple
    sistem, acceptă gba, gbc, gb, sgb,
    sgb2Tu...
    Descărcați VBA-M (arhivat - Acum pe Github)
  • 5
    Stacer
    Stacer
    Optimizator și monitorizare de sistem Linux
    Depozitul Github:
    https://github.com/oguzhaninan/Stacer.
    Public: utilizatori finali/desktop. Utilizator
    interfață: Qt. Programare La...
    Descărcați Stacer
  • 6
    orangefox
    orangefox
    Furk al TeamWinRecoveryProject (TWRP)
    cu multe funcții suplimentare, reproiectare
    și mai multe Caracteristici: Suportă Treble și
    ROM-uri non-Treble Nucleu Oreo actualizat,
    construit...
    Descărcați OrangeFox
  • Mai mult »

Comenzi Linux

  • 1
    aa-clickhook
    aa-clickhook
    aa-clickhook - faceți clic pe sistem hook pentru
    AppArmor DESCRIERE: Când un clic
    pachetul este instalat, se va executa clic
    sistem și cârlige de utilizator. Clicul
    Sistemul AppArmor h...
    Rulați aa-clickhook
  • 2
    aa-clickquery
    aa-clickquery
    aa-clickquery - program pentru interogare
    click-apparmor DESCRIERE: Acest program
    este folosit pentru a interoga click-apparmor pentru
    informație. UTILIZARE: aa-clickquery
    --click-fra...
    Rulați aa-clickquery
  • 3
    cqrlog
    cqrlog
    CQRLOG - Program avansat de logare pentru
    operatori hamradio DESCRIERE: CQRLOG
    este un radiologger avansat bazat pe
    Baza de date MySQL. Oferă control radio
    ba ...
    Rulați cqrlog
  • 4
    cramfsswap
    cramfsswap
    cramfsswap - swap endianess de un cram
    sistem de fișiere (cramfs)...
    Rulați cramfsswap
  • 5
    FvwmEvent
    FvwmEvent
    FvwmEvent - modulul de evenimente fvwm...
    Rulați FvwmEvent
  • 6
    FvwmForm
    FvwmForm
    FvwmForm - modul de formular de intrare pentru Fvwm...
    Rulați FvwmForm
  • Mai mult »

Ad