Aceasta este comanda pt-table-checksump 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-table-checksum - Verificați integritatea replicării MySQL.
REZUMAT
Utilizare: pt-table-checksum [OPȚIUNI] [DSN]
pt-table-checksum efectuează o verificare a consistenței replicării online prin executarea sumei de control
interogări pe master, care produce rezultate diferite pe replici care sunt inconsecvente
cu stăpânul. DSN-ul opțional specifică gazda principală. „STARE DE IEȘIRE” a instrumentului este
diferit de zero dacă sunt găsite diferențe sau dacă apar avertismente sau erori.
Următoarea comandă se va conecta la replicarea master pe localhost, checksum fiecare
tabel și raportați rezultatele pentru fiecare replică detectată:
pt-table-checksum
Acest instrument se concentrează pe găsirea eficientă a diferențelor de date. Dacă orice date este diferită,
puteți rezolva problema cu pt-table-sync.
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ă
Vezi și „LIMITĂRI”.
DESCRIERE
pt-table-checksum este conceput pentru a face ceea ce trebuie în mod implicit în aproape toate cazurile. Când
în caz de îndoială, utilizați „--explain” pentru a vedea cum instrumentul va verifica suma unui tabel. Următorul este a
prezentare generală la nivel înalt a modului în care funcționează instrumentul.
Spre deosebire de versiunile mai vechi ale pt-table-checksum, acest instrument se concentrează pe un singur
scop și nu are multă complexitate și nu acceptă multe sume de verificare diferite
tehnici. Execută interogări de sumă de control pe un singur server, iar acestea curg
replicare pentru a se reexecuta pe replici. Dacă aveți nevoie de comportamentul mai vechi, puteți utiliza
Percona Toolkit versiunea 1.0.
pt-table-checksum se conectează la serverul pe care îl specificați și găsește baze de date și tabele care
potriviți cu filtrele pe care le specificați (dacă există). Funcționează câte o masă, deci nu
acumulați cantități mari de memorie sau lucrați mult înainte de a începe să verificați suma. Acest
îl face utilizabil pe servere foarte mari. L-am folosit pe servere cu sute de
mii de baze de date și tabele și trilioane de rânduri. Oricât de mare ar fi serverul
este, pt-table-checksum funcționează la fel de bine.
Un motiv pentru care poate funcționa pe mese foarte mari este că împarte fiecare masă în bucăți
rânduri și verifică fiecare bucată cu o singură interogare REPLACE..SELECT. Variază bucata
dimensiune pentru a face ca interogările de sumă de control să ruleze în intervalul de timp dorit. Scopul fragmentării
tabelele, în loc să facă fiecare tabel cu o singură interogare mare, este să se asigure că
sumele de verificare sunt neintruzive și nu provoacă prea multă întârziere de replicare sau încărcare pe server.
De aceea, timpul țintă pentru fiecare bucată este de 0.5 secunde în mod implicit.
Instrumentul ține evidența cât de repede este capabil serverul să execute interogările și se ajustează
bucățile pe măsură ce învață mai multe despre performanța serverului. Folosește un exponențial
medie ponderată în descreștere pentru a menține stabilă dimensiunea bucății, dar să rămână receptiv dacă
performanța serverului se modifică în timpul sumei de verificare din orice motiv. Aceasta înseamnă că instrumentul
se va accelera rapid dacă serverul dvs. se încarcă puternic în timpul unui vârf de trafic
sau o sarcină de fundal, de exemplu.
Chinking se realizează printr-o tehnică pe care obișnuiam să o numim „ciugulire” în alte instrumente
Trusa de instrumente Percona. Este aceeași tehnică folosită pentru pt-archiver, de exemplu. Moștenirea
algoritmii de fragmentare utilizați în versiunile mai vechi ale pt-table-checksum sunt eliminați, deoarece
nu a rezultat în bucăți de dimensiuni previzibile și nu a funcționat bine pe multe mese. Tot ceea ce
este necesar pentru a împărți un tabel în bucăți este un index de un fel (de preferință un primar
cheie sau index unic). Dacă nu există un index, iar tabelul conține un index adecvat
de rânduri, instrumentul va verifica suma tabelului într-o singură bucată.
pt-table-checksum are multe alte garanții pentru a se asigura că nu interferează cu niciuna
funcționarea serverului, inclusiv replicile. Pentru a realiza acest lucru, pt-table-checksum detectează
replici și se conectează automat la ele. (Dacă acest lucru nu reușește, îi puteți da un indiciu cu
opțiunea „--recursie-method”.)
Instrumentul monitorizează continuu replicile. Dacă vreo replică rămâne prea mult în urmă în
replicare, pt-table-checksum se întrerupe pentru a-i permite să ajungă din urmă. Dacă vreo replică are un
eroare sau replicarea se oprește, pt-table-checksum se întrerupe și așteaptă. În plus, pt-table-
suma de control caută cauzele comune ale problemelor, cum ar fi filtrele de replicare, și refuză
operați dacă nu îl forțați. Filtrele de replicare sunt periculoase, deoarece interogările
că pt-table-checksum execută ar putea intra în conflict cu ele și ar putea provoca replicare
a esua.
pt-table-checksum verifică că bucățile nu sunt prea mari pentru a verifica suma de control în siguranță. Funcționează
o interogare EXPLAIN pentru fiecare bucată și omite bucățile care ar putea fi mai mari decât cea dorită
număr de rânduri. Puteți configura sensibilitatea acestei măsuri de siguranță cu ajutorul
Opțiunea „--chunk-size-limit”. Dacă un tabel va fi verificat într-o singură bucată, deoarece acesta
are un număr mic de rânduri, apoi pt-table-checksum verifică suplimentar că tabelul
nu este supradimensionat pe replici. Acest lucru evită următorul scenariu: un tabel este gol pe
master, dar este foarte mare pe o replică și este sumă de verificare într-o singură interogare mare, care
provoacă o întârziere foarte mare în replicare.
Există mai multe alte garanții. De exemplu, pt-table-checksum își stabilește nivelul de sesiune
innodb_lock_wait_timeout la 1 secundă, astfel încât, dacă există o așteptare de blocare, acesta va fi
victimă în loc să provoace alte interogări să expire. O altă măsură de siguranță verifică sarcina
serverul bazei de date și se întrerupe dacă sarcina este prea mare. Nu există un singur răspuns corect
pentru cum să faceți acest lucru, dar în mod implicit pt-table-checksum se va întrerupe dacă există mai mult de 25
executând simultan interogări. Probabil ar trebui să setați o valoare corectă pentru serverul dvs
opțiunea „--max-load”.
Suma de verificare este de obicei o sarcină cu prioritate scăzută care ar trebui să cedeze altor lucrări pe server.
Cu toate acestea, un instrument care trebuie repornit în mod constant este dificil de utilizat. Astfel, pt-table-
suma de control este foarte rezistentă la erori. De exemplu, dacă administratorul bazei de date trebuie
ucideți interogările pt-table-checksum din orice motiv, aceasta nu este o eroare fatală. Utilizatori des
rulați pt-kill pentru a elimina orice interogări de sumă de verificare de lungă durată. Instrumentul va reîncerca o interogare oprită
o dată, iar dacă eșuează din nou, va trece la următoarea bucată din acel tabel. La fel
comportamentul se aplică dacă există un timp de așteptare pentru blocare. Instrumentul va imprima un avertisment, dacă este cazul
apare o eroare, dar o singură dată pe tabel. Dacă conexiunea la orice server eșuează, pt-
table-checksum va încerca să se reconecteze și să continue lucrul.
Dacă pt-table-checksum întâlnește o afecțiune care o face să se oprească complet, este ușor
pentru a-l relua cu opțiunea „--resume”. Va începe din ultima bucată din ultima
tabel pe care l-a procesat. De asemenea, puteți opri instrumentul în siguranță cu CTRL-C. Se va termina
bucata pe care o procesează în prezent și apoi ieșiți. Îl poți relua ca de obicei
după aceea.
După ce pt-table-checksum termină suma de verificare a tuturor bucăților dintr-un tabel, se întrerupe și
așteaptă ca toate replicile detectate să termine executarea interogărilor de sumă de control. Odată ce este
terminat, verifică toate replicile pentru a vedea dacă au aceleași date ca și masterul,
apoi tipărește o linie de ieșire cu rezultatele. Puteți vedea o mostră a rezultatelor sale
mai târziu în această documentație.
Instrumentul imprimă indicatori de progres în timpul operațiunilor care necesită timp. Se imprimă a
indicator de progres pe măsură ce fiecare tabel este verificat. Progresul este calculat de către
numărul estimat de rânduri din tabel. De asemenea, va tipări un raport de progres atunci când se întrerupe
să aștepte ca replicarea să ajungă din urmă și când așteaptă să verifice replicile
diferențe față de maestru. Puteți face ieșirea mai puțin verbosă cu „--quiet”
opțiune.
Dacă doriți, puteți interoga manual tabelele de sumă de control pentru a obține un raport despre ce tabele
iar bucățile au diferențe față de maestru. Următoarea interogare va raporta fiecare
bază de date și tabel cu diferențe, împreună cu un rezumat al numărului de bucăți și rânduri
posibil afectate:
SELECT db, tbl, SUM(this_cnt) AS total_rows, COUNT(*) AS chunks
DE LA percona.checksums
UNDE (
master_cnt <> this_cnt
SAU master_crc <> this_crc
OR ISNULL(master_crc) <> ISNULL(this_crc))
GROUP BY db, tbl;
Tabelul la care se face referire în acea interogare este tabelul sume de control, unde sunt stocate sumele de control.
Fiecare rând din tabel conține suma de control a unei bucăți de date dintr-un tabel din
Server.
Versiunea 2.0 a pt-table-checksum nu este compatibilă cu versiunea pt-table-sync
1.0. În unele cazuri, aceasta nu este o problemă serioasă. Adăugarea unei coloane „limite” la
tabel, și apoi actualizarea lui cu o clauză WHERE generată manual, poate fi suficientă pentru a lăsa pt-
table-sync versiunea 1.0 interopera cu pt-table-checksum versiunea 2.0. Presupunând că an
cheie primară întreagă numită „id”, Puteți încerca ceva de genul următor:
ALTER TABLE sume de control ADD limite VARCHAR(500);
ACTUALIZAȚI sumele de verificare
SET limite = COALESCE(CONCAT('id BETWEEN ', limita_inferioară,
'ȘI', limita_superioară), '1=1');
LIMITAREA
Replicări folosind replicarea pe rând
pt-table-checksum necesită replicare bazată pe instrucțiuni și se stabilește
„binlog_format=STATEMENT” pe master, dar din cauza unei limitări MySQL, replicile nu o fac
onorează această schimbare. Prin urmare, sumele de control nu se vor replica dincolo de nicio replică folosind
replicare bazată pe rânduri care sunt master pentru replici ulterioare.
Instrumentul verifică automat „binlog_format” pe toate serverele. Vedea
„--[no]check-binlog-format” .
(Eroare 899415 )
Diferențele de schemă și tabel
Instrumentul presupune că schemele și tabelele sunt identice pe master și toate
replici. Replicarea se va întrerupe dacă, de exemplu, o replică nu are o schemă
care există pe master (și schema respectivă este sumă de verificare), sau dacă structura unui
tabelul de pe o replică este diferit de cel de pe master.
percona XtraDB Grup
pt-table-checksum funcționează cu Percona XtraDB Cluster (PXC) 5.5.28-23.7 și mai nou. The
numărul posibil de setări de cluster Percona XtraDB este mare, având în vedere că poate fi utilizat cu
replicare regulată, de asemenea. Prin urmare, sunt acceptate numai setările enumerate mai jos și
cunoscut ca functioneaza. Alte setări, cum ar fi cluster la cluster, nu sunt acceptate și probabil nu
muncă.
Cu excepția cazului în care este menționat, toate următoarele setări acceptate necesită să utilizați „dsn”
metoda pentru „--recursion-method” pentru a specifica nodurile cluster. De asemenea, verificarea decalajului (vezi
„VERIFICARE REPLICA”) nu este efectuată pentru nodurile cluster.
Un singur cluster
Cea mai simplă configurare PXC este un singur cluster: toate serverele sunt noduri de cluster și acolo
nu sunt replici obișnuite. Dacă toate nodurile sunt specificate în tabelul DSN (vezi
„--recursion-method”), apoi puteți rula instrumentul pe orice nod și orice diferențe pe orice
alte noduri vor fi detectate.
Toate nodurile trebuie să fie în același cluster (au aceeași valoare „wsrep_cluster_name”), altfel
instrumentul iese cu o eroare. Deși este posibil să aveți grupuri diferite cu
același nume, acest lucru nu trebuie făcut și nu este acceptat. Acest lucru se aplică tuturor
setări suportate.
Un singur cluster cu replici
Nodurile de cluster pot fi, de asemenea, master obișnuite și pot replica la replici obișnuite. In orice caz,
instrumentul poate detecta diferențele pe o replică numai dacă rulează pe „nodul principal” al replicii.
De exemplu, dacă configurarea clusterului este,
nodul 1 <-> nodul 2 <-> nodul 3
| |
| +-> replica3
+-> replica2
puteți detecta diferențele pe replica3 rulând instrumentul pe nodul 3, dar pentru a detecta diferențele pe
replica2 trebuie să rulați instrumentul din nou pe nodul2. Dacă rulați instrumentul pe nodul 1, va fi
nu detectează diferențele pe nici o replică.
În prezent, instrumentul nu detectează această configurare și nu avertizează despre replici care nu pot fi
verificat (de exemplu, replica2 când rulează pe nodul 3).
Replicile din această configurare sunt încă supuse „--[no]check-binlog-format”.
Master la un singur cluster
Este posibil ca un master obișnuit să se repete într-un cluster, ca și cum cluster-ul ar fi
un sclav logic, cum ar fi:
master -> nodul 1 <-> nodul 2 <-> nodul 3
Instrumentul acceptă această configurare, dar numai dacă rulează pe master și dacă toate nodurile din
cluster sunt în concordanță cu „replica directă” (nodul 1 în acest exemplu) a
maestru. De exemplu, dacă toate nodurile au valoarea „foo” pentru rândul 1, dar masterul are valoare
„bară” pentru același rând, această diferență va fi detectată. Sau dacă numai nodul 1 are această diferență,
va fi de asemenea detectat. Dar dacă numai nodul2 sau nodul3 are această diferență, nu va fi
detectat. Prin urmare, această configurare este utilizată pentru a verifica dacă masterul și clusterul ca a
întreg sunt consistente.
În această configurare, instrumentul poate detecta automat „replica directă” (nodul 1) atunci când rulează
pe master, deci nu trebuie să utilizați metoda „dsn” pentru „--recursion-method”
deoarece node1 va reprezenta întregul cluster, motiv pentru care toate celelalte noduri trebuie să fie
în concordanță cu acesta.
Instrumentul avertizează când detectează această configurație pentru a vă aminti că funcționează numai atunci când este utilizat
așa cum este descris mai sus. Aceste avertismente nu afectează starea de ieșire a instrumentului; ei sunt
doar mementouri pentru a ajuta la evitarea rezultatelor fals pozitive.
REZULTATE
Instrumentul imprimă rezultate tabelare, o linie pe tabel:
TS ERORI DIFERENTE RÂNDURI BĂRȚI SARITE OROLOGIE
10-20T08:36:50 0 0 200 1 0 0.005 db1.tbl1
10-20T08:36:50 0 0 603 7 0 0.035 db1.tbl2
10-20T08:36:50 0 0 16 1 0 0.003 db2.tbl3
10-20T08:36:50 0 0 600 6 0 0.024 db2.tbl4
Erorile, avertismentele și rapoartele de progres sunt tipărite la erori standard. Vezi și „--liniștit”.
Rezultatele fiecărui tabel sunt tipărite când instrumentul termină verificarea sumei tabelului. The
coloanele sunt după cum urmează:
TS Marca temporală (fără anul) când instrumentul a terminat verificarea sumei tabelului.
ERORI
Numărul de erori și avertismente care au apărut la verificarea sumei tabelului. Erori
iar avertismentele sunt tipărite la eroare standard în timp ce tabelul este în desfășurare.
DIFERENTE
Numărul de bucăți care diferă de master pe una sau mai multe replici. Dacă
„--no-replicate-check” este specificat, această coloană va avea întotdeauna zerouri. Dacă
Este specificat „--replicate-check-only”, apoi sunt tipărite numai tabelele cu diferențe.
ROWS
Numărul de rânduri selectate și verificate din tabel. S-ar putea să fie diferit
din numărul de rânduri din tabel dacă utilizați opțiunea --where.
BUCĂȚI
Numărul de bucăți în care a fost împărțit tabelul.
SALITAT
Numărul de bucăți care au fost omise din cauza uneia sau mai multor dintre aceste probleme:
* MySQL nu folosește --chunk-index
* MySQL nu utilizează indexul complet al fragmentelor (--[no]check-plan)
* Dimensiunea fragmentului este mai mare decât --chunk-size * --chunk-size-limit
* Timpul de așteptare pentru blocare a fost depășit (--reîncercări)
* Interogarea sumă de control a fost oprită (--reîncercări)
Începând cu pt-table-checksum 2.2.5, bucățile ignorate provoacă o „STARE DE IEȘIRE” diferită de zero.
TIMP
Timpul scurs la verificarea sumei tabelului.
TABEL
Baza de date și tabelul care au fost verificate.
Dacă este specificat „--replicate-check-only”, doar diferențele de sumă de control pentru replicile detectate
sunt tipărite. Ieșirea este diferită: un paragraf per replică, o diferență de sumă de control
pe linie, iar valorile sunt separate prin spații:
Diferențele pe h=127.0.0.1, P=12346
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 PRIMAR 1 100
db1.tbl1 6 0 1 PRIMAR 501 600
Diferențele pe h=127.0.0.1, P=12347
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 PRIMAR 1 100
db2.tbl2 9 5 0 PRIMAR 101 200
Primul rând al unui paragraf indică replica cu diferențe. În acest exemplu
sunt două: h=127.0.0.1, P=12346 și h=127.0.0.1, P=12347. Coloanele sunt după cum urmează:
TABEL
Baza de date și tabelul care diferă de master.
BUCATĂ MARE
Numărul de bucată al tabelului care diferă de master.
CNT_DIFF
Numărul de rânduri de bucăți de pe replică minus numărul de rânduri de bucăți de pe master.
CRC_DIFF
1 dacă CRC al fragmentului de pe replică este diferit de CRC al fragmentului de pe
maestru, altfel 0.
CHUNK_INDEX
Indicele folosit pentru a împărți tabelul.
LOWER_BOUNDARY
Valorile indexului care definesc limita inferioară a fragmentului.
UPPER_BOUNDARY
Valorile indexului care definesc limita superioară a fragmentului.
EXIT STAREA
pt-table-checksum are trei stări de ieșire posibile: zero, 255 și orice altă valoare este o
mască de biți cu steaguri pentru diferite probleme.
O stare de ieșire zero indică nicio eroare, avertismente sau diferențe de sumă de control sau omisă
bucăți sau mese.
O stare de ieșire 255 indică o eroare fatală. Cu alte cuvinte: unealta a murit sau s-a prăbușit. The
eroarea este tipărită în „STDERR”.
Dacă starea de ieșire nu este zero sau 255, atunci valoarea sa funcționează ca o mască de biți cu acestea
steaguri:
VALOAREA BIȚILOR DE STRAPUL SENS
================ ========= ========================== =================
EROARE 1 A apărut o eroare nefatală
ALREADY_RUNNING 2 --fișierul pid există și PID rulează
CAUGHT_SIGNAL 4 S-a prins SIGHUP, SIGINT, SIGPIPE sau SIGTERM
NO_SLAVES_FOUND 8 Nu au fost găsite replici sau noduri de cluster
TABLE_DIFF 16 A fost găsită cel puțin o diferență
SKIP_CHUNK 32 Cel puțin o bucată a fost omisă
SKIP_TABLE 64 Cel puțin un tabel a fost omis
Dacă este setat vreun steag, starea de ieșire va fi diferită de zero. Utilizați operațiunea „ȘI” pe biți pentru a
verificați un anumit steag. De exemplu, dacă „$exit_status & 16” este adevărat, atunci cel puțin
s-a gasit o diferenta.
Începând cu pt-table-checksum 2.2.5, bucățile ignorate provoacă o stare de ieșire diferită de zero. O ieșire
starea de zero sau 32 este echivalentă cu o stare de ieșire zero cu bucăți omise în precedent
versiuni ale instrumentului.
OPŢIUNI
Acest instrument acceptă argumente suplimentare de linie de comandă. Consultați „SINOPSIS” și utilizare
informatii pentru detalii.
--cere-trece
grup: Conexiune
Solicitați o parolă când vă conectați la MySQL.
--[no]check-binlog-format
implicit: da
Verificați dacă „binlog_format” este același pe toate serverele.
Consultați „Replicile care utilizează replicarea pe rând” din „LIMITĂRI”.
--index-binar
Această opțiune modifică comportamentul „--create-replicate-table” astfel încât
coloanele de limita superioară și inferioară ale tabelului replicat sunt create cu datele BLOB
tip. Acest lucru este util în cazurile în care aveți probleme la verificarea tabelelor cu chei
care includ un tip de date binar sau care au seturi de caractere non-standard. Vedea
„--replica”.
--check-interval
tip: timp; implicit: 1; grupa: acceleratie
Timp de somn între verificări pentru „--max-lag”.
--[fără]check-plan
implicit: da
Verificați planurile de execuție a interogărilor pentru siguranță. În mod implicit, această opțiune determină pt-table-
checksum pentru a rula EXPLAIN înainte de a rula interogări care sunt menite să acceseze o cantitate mică
de date, dar care ar putea accesa multe rânduri dacă MySQL alege un plan de execuție prost. Aceste
includeți interogările pentru a determina limitele blocurilor și interogările blocurilor în sine. Dacă
se pare că MySQL va folosi un plan prost de execuție a interogărilor, instrumentul va omite
bucată de masă.
Instrumentul folosește mai multe euristici pentru a determina dacă un plan de execuție este prost. The
primul este dacă EXPLAIN raportează că MySQL intenționează să folosească indexul dorit pentru a accesa
rândurile. Dacă MySQL alege un index diferit, instrumentul consideră că interogarea este nesigură.
Instrumentul verifică, de asemenea, cât de mult din indexul MySQL raportează pe care îl va folosi pentru
interogare. Ieșirea EXPLAIN arată acest lucru în coloana key_len. Instrumentul își amintește
cea mai mare key_len văzută și omite bucăți în care MySQL raportează că va folosi un mai mic
prefixul indexului. Această euristică poate fi înțeleasă ca omitere a bucăților care au a
plan de execuție mai rău decât alte bucăți.
Instrumentul imprimă un avertisment prima dată când o bucată este omisă din cauza unei execuții proaste
plan în fiecare tabel. Bucățile ulterioare sunt sărite în tăcere, deși puteți vedea
numărul de bucăți omise în coloana SKIPPED din rezultatul instrumentului.
Această opțiune adaugă ceva lucru de configurare la fiecare tabel și bucată. Deși munca nu este
intruziv pentru MySQL, are ca rezultat mai multe călătorii dus-întors la server, care consumă
timp. A face bucăți prea mici va face ca suprafața să devină relativ mai mare. Aceasta
Prin urmare, este recomandat să nu faceți bucăți prea mici, deoarece unealta poate lua
un timp foarte lung de finalizat dacă o faci.
--[no]check-replication-filters
implicit: da; grupa: Siguranta
Nu verificați suma dacă există filtre de replicare setate pe orice replică. Instrumentul arată
pentru opțiunile de server care filtrează replicarea, cum ar fi binlog_ignore_db și
replicate_do_db. Dacă găsește astfel de filtre, se anulează cu o eroare.
Dacă replicile sunt configurate cu opțiuni de filtrare, ar trebui să fii atent
pentru a verifica toate bazele de date sau tabele care există pe master și nu pe replici.
Modificările aduse unor astfel de tabele ar putea fi în mod normal sărit în replici din cauza
opțiunile de filtrare, dar interogările de sumă de control modifică conținutul tabelului care
stochează sumele de control, nu tabelele ale căror date le verificați. Prin urmare,
aceste interogări vor fi executate pe replica, iar dacă tabelul sau baza de date sunteți
suma de verificare nu există, interogările vor duce la eșecul replicării. Pentru mai mult
informații despre regulile de replicare, vezi
<http://dev.mysql.com/doc/en/replication-rules.html>.
Filtrarea de replicare face imposibilă asigurarea faptului că interogările de sumă de control nu vor fi
întrerupe replicarea (sau pur și simplu nu reușește replicarea). Dacă sunteți sigur că este în regulă să rulați
interogările de sumă de control, puteți anula această opțiune pentru a dezactiva verificările. Vezi si
„--replicate-database”.
Vezi și „VERIFICARE REPLICA”.
--check-slave-lag
tip: sfoară; grupa: acceleratie
Întrerupeți suma de verificare până când decalajul acestei replici este mai mic decât „--max-lag”. Valoarea este a
DSN care moștenește proprietățile de la gazda principală și opțiunile de conectare
("--port", "--user", etc.). În mod implicit, pt-table-checksum monitoare la toate
replicile conectate, dar această opțiune limitează monitorizarea decalajului la replica specificată.
Acest lucru este util dacă anumite replici sunt întârziate în mod intenționat (cu pt-slave-delay pentru
exemplu), caz în care puteți specifica o replică normală de monitorizat.
Vezi și „VERIFICARE REPLICA”.
--[no]check-slave-tables
implicit: da; grupa: Siguranta
Verifică dacă tabelele pe slave există și au toate sumele de control „--columns”. Mese
lipsa sclavilor sau lipsa tuturor sumei de control „--coloane” poate determina instrumentul să
întrerupe replicarea când încearcă să verifice diferențele. Dezactivați această verificare numai dacă
sunteți conștient de riscuri și sunteți sigur că toate mesele de pe toți sclavii există și sunt
identic cu maestrul.
--chink-index
tip: sfoară
Preferați acest index pentru tabelele de fragmentare. În mod implicit, pt-table-checksum alege cel mai mult
indice adecvat pentru fragmentare. Această opțiune vă permite să specificați indexul pe care îl aveți
prefera. Dacă indexul nu există, atunci pt-table-checksum va reveni la el
comportament implicit de alegere a unui index. pt-table-checksum adaugă indexul la
Instrucțiuni SQL de sumă de control într-o clauză „FORCE INDEX”. Aveți grijă când utilizați această opțiune;
o alegere proastă a indicelui ar putea cauza performanțe proaste. Acesta este probabil cel mai bine să îl utilizați când
însumați doar un singur tabel, nu un întreg server.
--coloane-index-bucăți
tip: int
Folosiți doar atâtea coloane din stânga unui „--chunk-index”. Acest lucru funcționează numai pentru
indecși compuși și este util în cazurile în care există o eroare în optimizatorul de interogări MySQL
(planificatorul) îl face să scaneze o gamă largă de rânduri în loc să folosească indexul pentru a localiza
punctele de început și de sfârșit exact. Această problemă apare uneori pe indexurile cu
multe coloane, cum ar fi 4 sau mai multe. Dacă se întâmplă acest lucru, instrumentul ar putea imprima un avertisment
legate de opțiunea „--[no]check-plan”. Instruiți instrumentul să folosească numai primul
N coloane ale indexului reprezintă o soluție pentru eroare în unele cazuri.
--dimensiunea bucatilor
tip: dimensiune; implicit: 1000
Numărul de rânduri de selectat pentru fiecare interogare de sumă de verificare. Sufixele permise sunt k, M, G.
Nu ar trebui să utilizați această opțiune în majoritatea cazurilor; preferă „--chunk-time” în schimb.
Această opțiune poate suprascrie comportamentul implicit, care este ajustarea dimensiunii bucăților
dinamic pentru a încerca să facă bucăți să ruleze exact în secunde „--chunk-time”. Când aceasta
opțiunea nu este setată în mod explicit, valoarea sa implicită este folosită ca punct de plecare, dar după
că, instrumentul ignoră valoarea acestei opțiuni. Dacă setați această opțiune în mod explicit,
cu toate acestea, apoi dezactivează comportamentul de ajustare dinamică și încearcă să facă toate bucățile
exact numărul specificat de rânduri.
Există o subtilitate: dacă indicele bucăților nu este unic, atunci este posibil ca bucățile
va fi mai mare decât se dorește. De exemplu, dacă un tabel este fragmentat de un index care
conține 10,000 dintr-o valoare dată, nu există nicio modalitate de a scrie o clauză WHERE care să se potrivească
doar 1,000 dintre valori, iar acea bucată va avea cel puțin 10,000 de rânduri. Un astfel de
chunk va fi probabil sărit din cauza „--chunk-size-limit”.
Selectarea unei bucăți mici va face ca instrumentul să devină mult mai lent, parțial
din cauza lucrărilor de configurare necesare pentru „--[no]check-plan”.
--limită-dimensiune-bucătă
tip: plutitor; implicit: 2.0; grupa: Siguranta
Nu verificați bucăți cu sumă de control mult mai mari decât dimensiunea dorită.
Când un tabel nu are indici unici, dimensiunile bucăților pot fi inexacte. Această opțiune
specifică o limită maximă tolerabilă a inexactității. Instrumentul folosește la
estimați câte rânduri sunt în bucată. Dacă această estimare depășește porțiunea dorită
dimensiunea înmulțită de limita (de două ori mai mare, în mod implicit), apoi instrumentul omite o bucată.
Valoarea minimă pentru această opțiune este 1, ceea ce înseamnă că nicio bucată nu poate fi mai mare decât
„--dimensiunea bucății”. Probabil că nu doriți să specificați 1, deoarece rândurile raportate de
EXPLAIN sunt estimări, care pot fi diferite de numărul real de rânduri din
bucată mare. Dacă instrumentul omite prea multe bucăți pentru că sunt supradimensionate, s-ar putea să doriți
pentru a specifica o valoare mai mare decât valoarea implicită de 2.
Puteți dezactiva verificarea blocurilor supradimensionate specificând o valoare de 0.
--bucat-timp
tip: plutitor; implicit: 0.5
Ajustați dinamic dimensiunea bucăților, astfel încât fiecare interogare de sumă de control să dureze atât de mult pentru a fi executată.
Instrumentul urmărește rata de control (rânduri pe secundă) pentru toate tabelele și pentru fiecare tabel
individual. Folosește aceste rate pentru a ajusta dimensiunea blocului după fiecare interogare de sumă de verificare,
astfel încât următoarea interogare de sumă de control să dureze această perioadă de timp (în secunde) pentru a se executa.
Algoritmul este următorul: la începutul fiecărui tabel, dimensiunea bucății este
inițializat de la rândurile medii generale pe secundă de când instrumentul a început să funcționeze sau
valoarea „--chunk-size” dacă instrumentul nu a început încă să funcționeze. Pentru fiecare
porțiunea ulterioară a unui tabel, instrumentul ajustează dimensiunea blocului pentru a încerca să facă interogări
rulați în intervalul de timp dorit. Menține o medie mobilă care scade exponențial
de interogări pe secundă, astfel încât, dacă performanța serverului se modifică din cauza modificărilor în
încărcarea serverului, instrumentul se adaptează rapid. Acest lucru permite instrumentului să se realizeze în mod previzibil
interogări cronometrate pentru fiecare tabel și pentru server în general.
Dacă această opțiune este setată la zero, dimensiunea fragmentului nu se ajustează automat, așa că interogați suma de control
timpii vor varia, dar dimensiunile sumelor de control al interogărilor nu vor varia. Un alt mod de a face același lucru
este să specificați o valoare pentru „--chunk-size” în mod explicit, în loc să o lăsați la
Mod implicit.
--coloane
forma scurta: -c; tip: matrice; grup: Filtru
Sumă de verificare numai această listă de coloane separate prin virgulă. Dacă o masă nu are nimic din
coloanele specificate vor fi omise.
Această opțiune se aplică tuturor tabelelor, așa că are sens doar atunci când se verifică unul
tabel, cu excepția cazului în care tabelele au un set comun de coloane.
--config
tip: Array; grup: Config
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ă.
Consultați rezultatul „--help” pentru o listă de fișiere de configurare implicite.
--[nu]create-replica-tabel
implicit: da
Creați baza de date și tabelul „--replicate” dacă nu există. Structura lui
tabelul replicat este același cu tabelul sugerat menționat în „--replicate”.
--baze de date
forma scurtă: -d; tip: hash; grup: Filtru
Numai suma de verificare a acestei liste de baze de date separate prin virgulă.
--baze de date-regex
tip: sfoară; grup: Filtru
Doar bazele de date cu sumă de control ale căror nume se potrivesc cu această expresie regex Perl.
--defaults-file
forma scurtă: -F; tip: sfoară; grup: Conexiune
Citiți numai opțiunile mysql din fișierul dat. Trebuie să dați un nume de cale absolut.
--[no]tabel-replicat-vide
implicit: da
Ștergeți sumele de control anterioare pentru fiecare tabel înainte de a verifica sumele tabelului. Această opțiune
nu trunchiază întregul tabel, șterge doar rânduri (sume de control) pentru fiecare tabel
chiar înainte de a verifica suma tabelului. Prin urmare, dacă suma de control se oprește prematur și
au existat date preexistente, vor exista în continuare rânduri pentru tabele care nu au fost
sumă de verificare înainte ca instrumentul să fie oprit.
Dacă reluați de la o rulare anterioară a sumei de control, atunci suma de control înregistrează pentru
tabelul din care reia instrumentul nu va fi golit.
Pentru a goli întregul tabel replicat, trebuie să executați manual „TRUNCATE TABLE” înainte
rulează instrumentul.
--motoare
forma scurtă: -e; tip: hash; grup: Filtru
Doar tabele cu sume de control care folosesc aceste motoare de stocare.
--explica
cumulativ: da; implicit: 0; grup: Ieșire
Afișați, dar nu executați, interogări de sumă de control (dezactivează „--[no]empty-replicate-table”).
Dacă este specificat de două ori, instrumentul iterează de fapt prin algoritmul de fragmentare,
imprimarea valorilor limită superioară și inferioară pentru fiecare bucată, dar nu executarea
interogări de sumă de control.
--float-precizie
tip: int
Precizie pentru conversia număr-în șir FLOAT și DOUBLE. Provoacă FLOAT și DOUBLE
valorile care trebuie rotunjite la numărul specificat de cifre după virgulă zecimală, cu
il RUNDĂ() funcție în MySQL. Acest lucru poate ajuta la evitarea nepotrivirilor sumelor de control din cauza
diferite reprezentări în virgulă mobilă ale acelorași valori pe MySQL diferit
versiuni și hardware. Valoarea implicită nu este rotunjire; valorile sunt convertite în
coarde de către CONCAT() funcția, iar MySQL alege reprezentarea șirului. daca tu
specificați o valoare de 2, de exemplu, apoi valorile 1.008 și 1.009 vor fi rotunjite la
1.01, iar suma de control va fi egală.
--funcţie
tip: sfoară
Funcție hash pentru sume de control (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, etc).
Implicit este utilizarea CRC32(), Dar MD5() si SHA1() funcţionează, de asemenea, şi puteţi folosi dvs
propria funcție, cum ar fi un UDF compilat, dacă doriți. Funcția pe care o specificați este rulată
SQL, nu în Perl, deci trebuie să fie disponibil pentru MySQL.
MySQL nu are funcții hash bune încorporate care sunt rapide. CRC32() este prea predispus
a hash coliziuni și MD5() si SHA1() sunt foarte consumatoare de CPU. The FNV1A_64() UDF
care este distribuit cu Percona Server este o alternativă mai rapidă. Este foarte simplu să
compilați și instalați; uitați-vă la antetul din codul sursă pentru instrucțiuni. Dacă este
instalat, este de preferat MD5(). Puteți utiliza, de asemenea, MURMUR_HASH() funcționează dacă
îl compilați și îl instalați ca UDF; sursa este distribuită și cu Percona
Server și ar putea fi mai bine decât FNV1A_64().
--Ajutor
grup: Ajutor
Arată ajutor și ieși.
--gazdă
forma scurtă: -h; tip: sfoară; implicit: localhost; grup: Conexiune
Gazdă la care să te conectezi.
--ignora-coloanele
tip: Hash; grup: Filtru
Ignorați această listă de coloane separate prin virgulă atunci când calculați suma de control. Dacă o masă
are toate coloanele filtrate de --ignore-columns, va fi omis.
--ignore-baze de date
tip: Hash; grup: Filtru
Ignorați această listă de baze de date separate prin virgulă.
--ignore-databases-regex
tip: sfoară; grup: Filtru
Ignorați bazele de date ale căror nume se potrivesc cu această expresie regex Perl.
--ignora-motoare
tip: Hash; implicit: FEDERATED,MRG_MyISAM; grup: Filtru
Ignorați această listă de motoare de stocare separate prin virgulă.
--ignora-tabelele
tip: Hash; grup: Filtru
Ignorați această listă de tabele separate prin virgulă. Numele tabelelor pot fi calificate cu
numele bazei de date. Tabelul „--replicate” este întotdeauna ignorat automat.
--ignore-tables-regex
tip: sfoară; grup: Filtru
Ignorați tabelele ale căror nume se potrivesc cu expresia regex Perl.
--max-lag
tip: timp; implicit: 1s; grupa: acceleratie
Întrerupeți suma de verificare până când decalajul tuturor replicilor este mai mic decât această valoare. După fiecare
interogare de sumă de control (fiecare bucată), pt-table-checksum analizează întârzierea de replicare a tuturor
replici la care se conectează, folosind Seconds_Behind_Master. Dacă vreo replică este în urmă
mai mult decât valoarea acestei opțiuni, atunci pt-table-checksum va dormi pentru
„--check-interval” secunde, apoi verificați din nou toate replicile. Daca specificati
„--check-slave-lag”, apoi instrumentul examinează doar acel server pentru decalaj, nu toate serverele.
Instrumentul așteaptă pentru totdeauna ca replicile să nu mai rămână în urmă. Dacă orice replică este oprită,
instrumentul așteaptă pentru totdeauna până când replica este pornită. Suma de verificare continuă o dată
replicile rulează și nu rămân prea mult.
Instrumentul imprimă rapoarte de progres în timpul așteptării. Dacă o replică este oprită, se imprimă a
raport de progres imediat, apoi din nou la fiecare interval de raport de progres.
Vezi și „VERIFICARE REPLICA”.
--incarcatura maxima
tip: Array; implicit: Threads_running=25; grupa: acceleratie
Examinați SHOW GLOBAL STATUS după fiecare bucată și întrerupeți dacă există variabile de stare
mai mare decât pragul. Opțiunea acceptă o listă separată prin virgulă cu starea MySQL
variabile pentru a verifica un prag. Opțional „=MAX_VALUE” (sau „:MAX_VALUE”) poate
urmăriți fiecare variabilă. Dacă nu este dat, instrumentul determină un prag prin examinarea
valoarea curentă și creșterea acesteia cu 20%.
De exemplu, dacă doriți ca instrumentul să se întrerupă atunci când Threads_connected devine prea mare, dvs
poate specifica „Threads_connected”, iar instrumentul va verifica valoarea curentă atunci când aceasta
începe să funcționeze și adăugați 20% la acea valoare. Dacă valoarea curentă este 100, atunci instrumentul
se va întrerupe când Threads_connected depășește 120 și va relua lucrul când este sub 120
din nou. Dacă doriți să specificați un prag explicit, cum ar fi 110, puteți utiliza oricare
„Threads_connected:110” sau „Threads_connected=110”.
Scopul acestei opțiuni este de a preveni ca unealta să adauge prea multă sarcină la
Server. Dacă interogările de sumă de control sunt intruzive sau dacă cauzează așteptări de blocare, atunci altele
interogările de pe server vor tinde să se blocheze și să se plaseze în coadă. Acest lucru va cauza de obicei
Threads_running să crească, iar instrumentul poate detecta asta rulând SHOW GLOBAL
STARE imediat după încheierea fiecărei interogări de sumă de verificare. Dacă specificați un prag pentru
această variabilă, apoi puteți indica instrumentului să aștepte până când interogările rulează
normal din nou. Totuși, acest lucru nu va împiedica formarea la coadă; va da doar serverului
o șansă de a vă recupera din coadă. Dacă observați coadă, cel mai bine este să reduceți
timpul bucată.
--parola
forma scurta: -p; tip: sfoară; grup: Conexiune
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ă
Fișier modul Perl care definește o clasă „pt_table_checksum_plugin”. Un plugin vă permite
pentru a scrie un modul Perl care se poate conecta în multe părți ale pt-table-checksum. Acest
necesită o bună cunoaștere a convențiilor Perl și Percona Toolkit, care sunt dincolo
acest domeniu de aplicare al acestei documentații. Vă rugăm să contactați Percona dacă aveți întrebări sau
Nevoie de ajutor.
Consultați „PLUGIN” pentru mai multe informații.
--port
forma scurta: -P; tip: int; grup: Conexiune
Numărul portului de utilizat pentru conexiune.
--progresa
tip: matrice; implicit: oră, 30
Imprimați rapoartele de progres către STDERR.
Valoarea este o listă separată prin virgulă cu două părți. Prima parte poate fi procentual,
timp sau iterații; a doua parte specifică cât de des trebuie tipărită o actualizare,
în procente, secunde sau număr de iterații. Instrumentul imprimă rapoarte de progres pentru
o varietate de operațiuni consumatoare de timp, inclusiv așteptarea replicilor pentru a ajunge din urmă dacă
devin întârziate.
--Liniște
forma scurta: -q; cumulativ: da; implicit: 0
Imprimați doar cele mai importante informații (dezactivează „--progress”). Precizând acest lucru
opțiunea o dată face ca instrumentul să imprime numai erori, avertismente și tabele care au
diferențe ale sumei de control.
Specificarea acestei opțiuni de două ori face ca instrumentul să imprime numai erori. În acest caz, tu
poate utiliza starea de ieșire a instrumentului pentru a determina dacă au existat avertismente sau sumă de control
diferențe.
--recurs
tip: int
Numărul de niveluri de recurs în ierarhie la descoperirea replicilor. Implicit este
infinit. Vezi și „--recursion-method” și „REPLICA CHECKS”.
--metoda-recursivă
tip: matrice; implicit: listă de procese, gazde
Metodă de recursivitate preferată pentru descoperirea replicilor. pt-table-checksum funcționează
mai multe „VERIFICARE REPLICA” înainte și în timpul rulării.
Deși replicile nu sunt necesare pentru a rula pt-table-checksum, instrumentul nu poate detecta
diferă pe sclavi pe care nu îi poate descoperi. Prin urmare, este tipărit un avertisment și
„EXIT STATUS” este diferit de zero dacă nu sunt găsite replici și metoda nu este „none”. Dacă
se întâmplă acest lucru, încercați o metodă de recursivitate diferită sau utilizați metoda „dsn” pentru a specifica
replici de verificat.
Metodele posibile sunt:
UTILIZĂRI METODEI
==================================================== ======
listă de procese AFIȘARE LISTA DE PROCESE
gazde SHOW SLAVE HOSTS
cluster AFIȘAȚI STAREA CA „wsrep\_incoming\_addresses”
dsn=DSN-uri DSN dintr-un tabel
nici unul Nu găsi sclavi
Metoda „processlist” este implicită, deoarece „SHOW SLAVE HOSTS” nu este de încredere.
Cu toate acestea, dacă serverul folosește un port non-standard (nu 3306), atunci metoda „gazde”
devine implicit deoarece funcționează mai bine în acest caz.
Metoda „hosts” necesită ca replicile să fie configurate cu „report_host”,
„port_raport”, etc.
Metoda „cluster” necesită un cluster bazat pe Galera 23.7.3 sau mai nou, cum ar fi
Percona XtraDB Cluster versiunile 5.5.29 și mai sus. Acest lucru va descoperi automat nodurile într-un
cluster folosind „ARAȚI STARE CA „wsrep\_incoming\_addresses””. Puteți combina
„cluster” cu „processlist” și „gazde” pentru a descoperi automat nodurile și replicile clusterului,
dar această funcționalitate este experimentală.
Metoda „dsn” este specială: mai degrabă decât descoperirea automată a replicilor, aceasta
metoda specifică un tabel cu DSN-uri replici. Instrumentul se va conecta numai la acestea
replici. Această metodă funcționează cel mai bine atunci când replicile nu folosesc același nume de utilizator MySQL sau
parola ca master sau când doriți să împiedicați conectarea instrumentului la
anumite replici. Metoda „dsn” este specificată ca: „--recursion-method
dsn=h=gazdă,D=percona,t=dsns". DSN-ul specificat trebuie să aibă părți D și t, sau doar un
partea t calificată pentru baza de date, care specifică tabelul DSN. Tabelul DSN trebuie să aibă
următoarea structură:
CREATE TABLE `dsns` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`părinte_id` int(11) DEFAULT NULL,
`dsn` varchar(255) NU NUL,
CHEIE PRIMARĂ („id”)
);
DSN-urile sunt ordonate după „id”, dar „id” și „parent_id” sunt altfel ignorate. „dsn”
coloana conține un DSN replica așa cum ar fi dat pe linia de comandă, de exemplu:
„h=replica_host,u=repl_user,p=repl_pass”.
Metoda „niciun” face ca instrumentul să ignore toate sclavii și nodurile cluster. Această metodă este
nu este recomandat deoarece dezactivează efectiv „VERIFICELE REPLICA” și nr
pot fi găsite diferențe. Este util, totuși, dacă trebuie doar să scrieți sume de control
pe nodul master sau pe un singur nod de cluster. Alternativa mai sigură este
„--no-replicate-check”: instrumentul găsește replici și noduri de cluster, efectuează
„REPLICA VERIFICA”, dar nu verifică diferențele. Vedeți „--[no]replicate-check”.
--replica
tip: sfoară; implicit: percona.checksums
Scrieți rezultatele sumei de control în acest tabel. Tabelul replicat trebuie să aibă această structură
(MAGIC_create_replicate):
CREATE TABLE checksums (
db REZERVOR(64) NU NUL,
tbl REZERVOR(64) NU NUL,
chunk INT NOT NULL,
chunk_time FLOAT NULL,
chunk_index VARCHAR(200) NULL,
limită_inferioară TEXT NULL,
upper_boundary TEXT NULL,
acest_crc REZERVOR(40) NU NUL,
this_cnt INT NOT NULL,
master_crc REZERVOR(40) NULL,
master_cnt INT NULL,
TS TIMESTAMP NU NULL CURRENT_TIMESTAMP ÎN ACTUALIZARE CURRENT_TIMESTAMP,
CHEIE PRIMARĂ (db, tbl, chunk),
INDEX ts_db_tbl (ts, db, tbl)
) MOTOR=InnoDB;
Notă: tipul de date low_boundary și upper_boundary pot fi BLOB. Vezi „--binary-index”.
În mod implicit, „--[no]create-replicate-table” este adevărat, deci baza de date și tabelul
specificate de această opțiune sunt create automat dacă nu există.
Asigurați-vă că alegeți un motor de stocare adecvat pentru tabelul replicat. Daca esti
checksuming tabele InnoDB și utilizați MyISAM pentru acest tabel, se va întrerupe un impas
replicare, deoarece amestecul de tabele tranzacționale și non-tranzacționale din
Declarațiile de sumă de control vor face ca acesta să fie scris în binlog, chiar dacă avea un
eroare. Apoi se va relua fără un blocaj asupra replicilor și va întrerupe replicarea
cu „eroare diferită pe master și slave”. Aceasta nu este o problemă cu pt-table-
suma de control; este o problemă cu replicarea MySQL și puteți citi mai multe despre ea în
Manual MySQL.
Tabelul replicat nu este niciodată verificat (instrumentul adaugă automat acest tabel la
„--ignora-tabelele”).
--[no]replicare-verificare
implicit: da
Verificați replicile pentru diferențele de date după terminarea fiecărui tabel. Instrumentul găsește
diferențe prin executarea unei simple instrucțiuni SELECT pe toate replicile detectate. The
interogarea compară rezultatele sumei de control ale replicii cu rezultatele sumei de control ale masterului. Aceasta
raportează diferențele în coloana DIFFS a rezultatului.
--doar-replicare-verificare
Verificați replicile pentru coerență fără a executa interogări de sumă de control. Această opțiune este
folosit numai cu „--[no]replicate-check”. Dacă este specificat, pt-table-checksum nu
suma de verificare a oricăror tabele. Verifică replicile pentru diferențele găsite de anterioare
sumă de verificare și apoi iese. Ar putea fi util dacă rulați pt-table-checksum în liniște
într-un job cron, de exemplu, și mai târziu doriți un raport despre rezultatele jobului cron,
poate pentru a implementa un control Nagios.
--replicate-check-retry
tip: int; implicit: 1
Reîncercați compararea sumelor de control de mai multe ori când se întâlnește o diferență. Doar cand
o diferență persistă după acest număr de verificări este considerat valabil. Folosind asta
opțiunea cu o valoare de 2 sau mai mult atenuează diferențele false care apar la utilizare
opțiunea --resume.
--replica-base de date
tip: sfoară
UTILIZAȚI numai această bază de date. În mod implicit, pt-table-checksum execută USE pentru a selecta
baza de date care conține tabelul la care lucrează în prezent. Acesta este cel mai bun efort
pentru a evita problemele cu filtrele de replicare, cum ar fi binlog_ignore_db și
replicate_ignore_db. Cu toate acestea, filtrele de replicare pot crea o situație în care există
pur și simplu nu este o modalitate corectă de a face lucrurile. Este posibil ca unele afirmații să nu fie replicate și
altele ar putea duce la eșecul replicării. În astfel de cazuri, puteți utiliza această opțiune pentru a
specificați o bază de date implicită pe care pt-table-checksum o selectează cu USE și nu se modifică niciodată.
Vezi și „--[no]check-replication-filters”.
--relua
Reluați suma de verificare de la ultima bucată finalizată (dezactivează
„--[nu]tabel-replicat-vide”). Dacă instrumentul se oprește înainte de a verifica toate tabelele,
această opțiune face ca suma de verificare să fie reluată din ultima bucată a ultimului tabel
terminat.
--reîncercă
tip: int; implicit: 2
Reîncercați o bucată de atâtea ori când există o eroare nefatală. Erorile nefatale sunt
probleme, cum ar fi un timeout de așteptare pentru blocare sau interogarea fiind oprită.
--timpul de rulare
tip: timp
Cât timp să alerge. Implicit este să ruleze până când toate tabelele au fost verificate. Aceste
Sunt permise sufixe de valoare de timp: s (secunde), m (minute), h (ore) și d (zile).
Combinați această opțiune cu „--resume” pentru a verifica cât mai multe tabele într-un interval alocat
timp, reluând de unde s-a oprit instrumentul data viitoare când este rulat.
--separator
tip: sfoară; Mod implicit: #
Caracterul separator folosit pentru CONCAT_WS(). Acest caracter este folosit pentru a se alătura
valorile coloanelor la suma de verificare.
--set-vars
tip: Array; grup: Conexiune
Setați variabilele MySQL în această listă de perechi „variabilă=valoare”, separate prin virgulă.
În mod implicit, instrumentul setează:
wait_timeout=10000
innodb_lock_wait_timeout=1
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ă.
--priză
forme scurte; tip: sfoară; grup: Conexiune
Fișier socket de utilizat pentru conectare.
--Mese
forma scurtă: -t; tip: hash; grup: Filtru
Sumă de verificare numai această listă de tabele separate prin virgulă. Numele de tabel pot fi calificate cu
numele bazei de date.
--tables-regex
tip: sfoară; grup: Filtru
Sumă de control numai tabele ale căror nume se potrivesc cu această expresie regex Perl.
--tunde
Adăuga TUNDE() la coloanele VARCHAR (ajută când se compară 4.1 cu >= 5.0). Acest lucru este util
când nu vă pasă de diferențele de spațiu de sfârșit dintre versiunile MySQL care
variază în modul lor de manipulare a spațiilor de sfârșit. MySQL 5.0 și versiunile ulterioare păstrează toate ultimele
spații în VARCHAR, în timp ce versiunile anterioare le-ar elimina. Aceste diferențe vor
cauzează diferențe false ale sumelor de control.
--utilizator
forma scurtă: -u; tip: sfoară; grup: Conexiune
Utilizator pentru autentificare dacă nu este utilizator actual.
--versiune
grup: Ajutor
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ă
Faceți numai rândurile care se potrivesc cu această clauză WHERE. Puteți folosi această opțiune pentru a limita
sumă de control doar pentru o parte a tabelului. Acest lucru este util în special dacă aveți
numai tabele și nu doriți să verificați din nou în mod constant toate rândurile; ai putea conduce o slujbă zilnică
pentru a verifica doar rândurile de ieri, de exemplu.
Această opțiune seamănă mult cu opțiunea -w pentru mysqldump. Nu specifica UNDE
cuvânt cheie. Poate fi necesar să citați valoarea. Iată un exemplu:
pt-table-checksum --unde „ts > CURRENT_DATE - INTERVAL 1 DAY”
REPLICA VERIFICĂRI
În mod implicit, pt-table-checksum încearcă să găsească și să se conecteze la toate replicile conectate
gazda maestru. Acest proces automatizat se numește „recursie slave” și este controlat de
opțiunile „--recursion-method” și „--recurse”. Instrumentul efectuează aceste verificări asupra tuturor
replici:
1. „--[no]check-replication-filters”
pt-table-checksum verifică filtrele de replicare pe toate replicile, deoarece pot
complica sau întrerupe procesul sumei de control. În mod implicit, instrumentul se va închide dacă există
sunt găsite filtre de replicare, dar această verificare poate fi dezactivată prin specificarea
„--no-check-replication-filters”.
2. Tabel „--replica”.
pt-table-checksum verifică dacă tabelul „--replicate” există pe toate replicile, altfel
suma de verificare poate întrerupe replicarea atunci când se actualizează tabelul de pe replica principală
la o replică care nu are tabelul. Această verificare nu poate fi dezactivată, iar instrumentul
așteaptă pentru totdeauna până când tabelul există pe toate replicile, imprimând mesaje „--progress”.
in timp ce asteapta.
3. Dimensiunea unei singure bucăți
Dacă un tabel poate fi verificat într-o singură bucată pe master, pt-table-checksum va fi
verificați dacă dimensiunea tabelului pentru toate replicile este mai mică decât „--chunk-size” *
„--limită-dimensiune-bucătă”. Acest lucru previne o problemă rară unde se află masa de pe master
gol sau mic, dar pe o replică este mult mai mare. În acest caz, o singură bucată
suma de control pe master ar supraîncărca replica.
O altă problemă rară apare atunci când dimensiunea tabelului de pe o replică este aproape de
„--dimensiune-bucățiune” * „--limită-dimensiune-porțiune”. În astfel de cazuri, tabelul este mai probabil să fie
a omis chiar dacă este sigur să verificați suma într-o singură bucată. Acest lucru se întâmplă pentru că
dimensiunile tabelului sunt estimative. Când acele estimări și „--chunk-size” *
„--chunk-size-limit” sunt aproape egale, această verificare devine mai sensibilă la
marja de eroare a estimărilor, mai degrabă decât diferențele semnificative reale în dimensiunile tabelului.
Specificarea unei valori mai mari pentru „--chunk-size-limit” ajută la evitarea acestei probleme.
Această verificare nu poate fi dezactivată.
4. Lag
După fiecare bucată, pt-table-checksum verifică decalajul pe toate replicile sau numai pe
replica specificată de „--check-slave-lag”. Acest lucru ajută instrumentul să nu supraîncarce
replici cu date de sumă de control. Nu există nicio modalitate de a dezactiva această verificare, dar puteți
specificați o singură replică pentru a verifica cu „--check-slave-lag” și dacă acea replică este
cel mai rapid, va ajuta la prevenirea unealtei să aștepte prea mult timp pentru ca lag-ul replica să se reducă.
5. Bucăți de sumă de control
Când pt-table-checksum termină suma de verificare a unui tabel, așteaptă ultima sumă de control
bucată pentru a se replica la toate replicile, astfel încât să poată efectua „--[no]replicate-check”.
Dezactivarea acestei opțiuni prin specificarea --no-replicate-check dezactivează această verificare, dar aceasta
dezactivează, de asemenea, raportarea imediată a diferențelor de sume de control, necesitând astfel o secundă
rulați instrumentul cu „--replicate-check-only” pentru a găsi și tipări diferențele de sume de control.
CONECTEAZA
Fișierul specificat de „--plugin” trebuie să definească o clasă (adică un pachet) numită
„pt_table_checksum_plugin” cu o subrutină „new()”. Instrumentul va crea o instanță de
această clasă și numiți orice cârlige pe care le definește. Nu sunt necesare cârlige, dar un plugin nu este
foarte folositor fara ele.
Aceste cârlige, în această ordine, sunt numite dacă sunt definite:
înăuntru
înainte de_replicare_verificare
după_verificare_replicată
get_slave_lag
before_checksum_table
after_checksum_table
Fiecare cârlig primește argumente diferite. Pentru a vedea ce argumente sunt transmise unui cârlig,
căutați numele cârligului în codul sursă al instrumentului, cum ar fi:
# --plugin cârlig
if ( $plugin && $plugin->can('init') ) {
$plugin->init(
sclavi => $slaves,
slave_lag_cxns => $slave_lag_cxns,
repl_table => $repl_table,
);
}
Comentariul „# --plugin hook” precede fiecare apel de hook.
Vă rugăm să contactați Percona dacă aveți întrebări sau aveți nevoie de ajutor.
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.
· ARE
dsn: set de caractere; copie: da
Set de caractere implicit.
· D
copie: nu
Baza de date tabel DSN.
F
dsn: mysql_read_default_file; copie: da
Fișierul implicit pentru valorile conexiunii.
· H
dsn: gazdă; copie: da
Conectați-vă la gazdă.
· 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: nu
Fișier socket de utilizat pentru conectare.
· t
copie: nu
Tabelul DSN.
· u
dsn: utilizator; copie: da
Utilizator pentru autentificare dacă nu este utilizator actual.
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-table-checksum ... > FIȘIER 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-table-checksump online folosind serviciile onworks.net