EngelsFransSpaans

Ad


OnWorks-favicon

pt-archiverp - Online in de cloud

Voer pt-archiverp uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht pt-archiverp die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


pt-archiver - Archiveer rijen van een MySQL-tabel in een andere tabel of een bestand.

KORTE INHOUD


Gebruik: pt-archiver [OPTIES] --bron DSN --waar WAAR

pt-archiver knabbelt aan records uit een MySQL-tabel. De argumenten --source en --dest gebruiken DSN
syntaxis; als COPY ja is, wordt --dest standaard ingesteld op de sleutelwaarde uit --source.

Voorbeelden:

Archiveer alle rijen van oltp_server naar olap_server en naar een bestand:

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

Verweesde rijen uit de onderliggende tabel verwijderen (verwijderen):

pt-archiver --source h=host,D=db,t=child --purge \
--waar 'NIET BESTAAT(SELECT * FROM ouder WHERE col=child.col)'

RISICO'S


Percona Toolkit is volwassen, bewezen in de echte wereld en goed getest, maar alle databases
tools kunnen een risico vormen voor het systeem en de databaseserver. Voordat u dit hulpmiddel gebruikt,
alstublieft:

· Lees de documentatie van de tool

· Bekijk de bekende "BUGS" van de tool

· Test de tool op een niet-productieserver

· Maak een back-up van uw productieserver en verifieer de back-ups

PRODUCTBESCHRIJVING


pt-archiver is de tool die ik gebruik om tabellen te archiveren zoals beschreven in
<http://tinyurl.com/mysql-archiving>. Het doel is een baan met weinig impact en alleen voorwaarts
knabbel oude gegevens uit de tabel zonder veel invloed op OLTP-query's te hebben. U kunt de
gegevens naar een andere tabel, die niet op dezelfde server hoeft te staan. Je kunt het ook schrijven naar a
bestand in een formaat dat geschikt is voor LOAD DATA INFILE. Of je kunt geen van beide doen, in welk geval dat zo is
gewoon een incrementele DELETE.

pt-archiver is uitbreidbaar via een plug-inmechanisme. U kunt uw eigen code injecteren om toe te voegen
geavanceerde archiveringslogica die nuttig zou kunnen zijn voor het archiveren van afhankelijke gegevens
complexe bedrijfsregels, of het bouwen van een datawarehouse tijdens het archiveringsproces.

Voor sommige opties moet u de waarden zorgvuldig kiezen. De belangrijkste zijn "--limit",
"--nieuwe pogingen" en "--txn-size".

De strategie is om de eerste rij(en) te vinden en vervolgens een index alleen vooruit te scannen om meer te vinden
rijen efficiënt. Elke volgende query mag niet de hele tabel scannen; het zou moeten zoeken
in de index en scan vervolgens totdat er meer archiveerbare rijen worden gevonden. De index opgeven met
het 'i'-gedeelte van het '--source'-argument kan hiervoor cruciaal zijn; gebruik "--dry-run" om
onderzoek de gegenereerde vragen en zorg ervoor dat u ze UITLEGT om te zien of ze efficiënt zijn
(meestal wilt u waarschijnlijk de PRIMARY-sleutel scannen, wat de standaardinstelling is). Zelfs
beter, onderzoek het verschil in de Handler-statustellers voor en na het uitvoeren van de
query en zorg ervoor dat niet bij elke query de hele tabel wordt gescand.

U kunt de zoek-en-dan-scan-optimalisaties geheel of gedeeltelijk uitschakelen met "--no-ascend"
en "--eerst opstijgen". Soms kan dit efficiënter zijn voor sleutels met meerdere kolommen. Zijn
zich ervan bewust dat pt-archiver is gebouwd om te beginnen aan het begin van de index die het kiest en scant
het is alleen voorwaarts. Dit kan resulteren in lange tabelscans als u probeert te knabbelen
het einde van de tabel door een andere index dan degene die hij verkiest. Zie "--source" en lees
de documentatie over het ‘i’-gedeelte als dit op u van toepassing is.

Percona XtraDB TROS


pt-archiver werkt met Percona XtraDB Cluster (PXC) 5.5.28-23.7 en nieuwer, maar er zijn
drie beperkingen waarmee u rekening moet houden voordat u op een cluster archiveert:

Fout bij vastleggen
pt-archiver controleert niet op fouten wanneer het transacties vastlegt. Commits op PXC kunnen dat wel
mislukt, maar de tool controleert de transactie nog niet en probeert deze ook niet opnieuw als dit gebeurt.
Als dit gebeurt, sterft het gereedschap.

MijnISAM-tabellen
Het archiveren van MyISAM-tabellen werkt, maar MyISAM-ondersteuning in PXC is nog experimenteel
tijd van deze uitgave. Er zijn verschillende bekende bugs met PXC-, MyISAM-tabellen en
'AUTO_INCREMENT'-kolommen. Daarom moet u ervoor zorgen dat er niet direct wordt gearchiveerd
of indirect resulteren in het gebruik van standaardwaarden "AUTO_INCREMENT" voor een MyISAM-tabel.
Dit gebeurt bijvoorbeeld met "--dest" als "--columns" wordt gebruikt en de
De kolom 'AUTO_INCREMENT' is niet opgenomen. De tool controleert hier niet op!

Niet-clusteropties
Bepaalde opties kunnen wel of niet werken. Als een clusterknooppunt bijvoorbeeld niet ook een
slave, dan werkt "--check-slave-lag" niet. En aangezien PXC-tabellen dat meestal zijn
InnoDB, maar InnoDB ondersteunt "INSERT DELAYED" niet, vervolgens "--delayed-insert" niet
werk. Andere opties werken mogelijk ook niet, maar de tool controleert deze daarom niet
u moet de archivering op een testcluster testen voordat u op uw echte cluster archiveert.

OUTPUT


Als u "--progress" opgeeft, is de uitvoer een koprij, plus statusuitvoer met tussenpozen.
Elke rij in de statusuitvoer vermeldt de huidige datum en tijd, hoeveel seconden pt-
archiver is uitgevoerd en hoeveel rijen het heeft gearchiveerd.

Als u "--statistics" opgeeft, voert "pt-archiver" timing en andere informatie uit om te helpen
u identificeert welk deel van uw archiveringsproces de meeste tijd kost.

FOUTAFHANDELING


pt-archiver probeert signalen op te vangen en netjes af te sluiten; bijvoorbeeld als u het verzendt
SIGTERM (Ctrl-C op UNIX-achtige systemen), het zal het signaal opvangen, een bericht afdrukken over de
signaal en verlaat redelijk normaal. Het zal "--analyze" of "--optimize" niet uitvoeren,
omdat het lang kan duren voordat deze klaar zijn. Het zal alle andere code normaal uitvoeren,
inclusief bellen after_finish() op eventuele plug-ins (zie "UITBREIDING").

Met andere woorden: als een signaal wordt opgevangen, zal het uit de hoofdarchieflus breken en overslaan
optimaliseren/analyseren.

OPTIES


Geef ten minste één van de volgende opties op: "--dest", "--file" of "--purge".

"--negeren" en "--vervangen" sluiten elkaar uit.

"--txn-size" en "--commit-each" sluiten elkaar wederzijds uit.

"--low-priority-insert" en "--delayed-insert" sluiten elkaar uit.

"--share-lock" en "--for-update" sluiten elkaar wederzijds uit.

"--analyseren" en "--optimaliseren" sluiten elkaar uit.

"--no-ascend" en "--no-delete" sluiten elkaar uit.

DSN-waarden in "--dest" zijn standaard waarden uit "--source" als COPY ja is.

--analyseren
type: tekenreeks

Voer daarna ANALYZE TABLE uit op "--source" en/of "--dest".

Voert ANALYSEERTABEL uit na voltooiing. Het argument is een willekeurige tekenreeks. Als het
de letter 's' bevat, wordt de bron geanalyseerd. Als er 'd' in staat, wordt de
bestemming zal worden geanalyseerd. U kunt een van beide of beide opgeven. Bijvoorbeeld de
het volgende zal beide analyseren:

--analyseren=ds

Zienhttp://dev.mysql.com/doc/en/analyze-table.html> voor details over ANALYSEERTABEL.

--eerst stijgen
Stijg alleen de eerste kolom van de index op.

Als u wel gebruik wilt maken van de oplopende indexoptimalisatie (zie "--no-ascend"), maar doe dat niet
Als u de overhead wilt oplopen die gepaard gaat met het oplopen van een grote index met meerdere kolommen, kunt u dit gebruiken
optie om pt-archiver te vertellen alleen de meest linkse kolom van de index omhoog te gaan. Dit kan
zorgen voor een aanzienlijke prestatieverbetering in plaats van helemaal niet te stijgen in de index
het vermijden van de kosten van het stijgen van de hele index.

Zie "UITBREIDING" voor een bespreking van hoe dit samenwerkt met plug-ins.

--vraag-pas
Vraag om een ​​wachtwoord bij verbinding met MySQL.

--buffer
Buffer de uitvoer naar "--file" en spoel deze weg bij commit.

Schakelt automatisch doorspoelen naar "--file" uit en leegt "--file" alleen naar schijf bij een transactie
pleegt. Dit betekent doorgaans dat het bestand door het besturingssysteem wordt geblokkeerd
er kunnen ook enkele impliciete flushes naar schijf tussen commits plaatsvinden. De standaardinstelling is
spoel "--file" na elke rij naar schijf.

Het gevaar is dat een crash gegevensverlies kan veroorzaken.

De prestatieverbetering die ik heb gezien door het gebruik van "--buffer" is ongeveer 5 tot 15 procent.
Uw kilometerstand kan variëren.

--bulk-verwijderen
Verwijder elk deel met een enkele instructie (impliceert "--commit-each").

Verwijder elk deel van de rijen in bulk met een enkele "DELETE"-instructie. De verklaring
verwijdert elke rij tussen de eerste en de laatste rij van het blok, inclusief. Het impliceert
"--commit-each", aangezien het een slecht idee zou zijn om rijen één voor één te "INSERT" en
commit ze vóór de bulk "DELETE".

De normale methode is om elke rij met de primaire sleutel te verwijderen. Bulkverwijderingen kunnen een
veel sneller. Ze ook macht niet be sneller als u een complexe "WHERE"-clausule heeft.

Deze optie stelt alle "DELETE"-verwerkingen volledig uit totdat het deel van de rijen is voltooid
afgerond. Als je een plug-in op de broncode hebt, zal de "before_delete"-methode dat niet zijn
genaamd. In plaats daarvan wordt de methode "before_bulk_delete" later aangeroepen.

WAARSCHUWING: als je een plug-in op de bron hebt die soms niet waar retourneert
"is_archivable()", u moet deze optie alleen gebruiken als u begrijpt wat deze doet. Als
de plug-in instrueert "pt-archiver" om een ​​rij niet te archiveren, deze zal nog steeds worden verwijderd door
de bulkverwijdering!

--[no]bulk-delete-limiet
standaard: ja

Voeg "--limit" toe aan de "--bulk-delete"-instructie.

Dit is een geavanceerde optie en u moet deze niet uitschakelen tenzij u weet wat u doet
doen en waarom! Standaard voegt "--bulk-delete" een "--limit"-clausule toe aan de bulk
verwijder de SQL-instructie. In bepaalde gevallen kan deze clausule worden weggelaten door dit te specificeren
"--geen-bulk-verwijderingslimiet". "--limit" moet nog steeds worden opgegeven.

--bulk-inzet
Voeg elk deel in met LOAD DATA INFILE (impliceert "--bulk-delete" "--commit-each").

Voeg elk deel van de rijen in met "LOAD DATA LOCAL INFILE". Dit kan veel sneller zijn dan
rij voor rij invoegen met "INSERT"-instructies. Het wordt geïmplementeerd door het creëren van een
tijdelijk bestand voor elk deel van de rijen, en de rijen naar dit bestand schrijven in plaats van
ze invoegen. Wanneer het stuk klaar is, worden de rijen geüpload.

Om de veiligheid van uw gegevens te beschermen, dwingt deze optie het gebruik van bulkverwijderingen af. Het
Het zou onveilig zijn om elke rij te verwijderen zoals deze wordt gevonden, voordat de rijen in de
bestemming eerst. Het forceren van bulkverwijdering garandeert dat de verwijdering wacht tot de
het inbrengen is gelukt.

De opties "--low-priority-insert", "--replace" en "--ignore" werken hiermee
optie, maar "--delayed-insert" niet.

Als "LOAD DATA LOCAL INFILE" een fout genereert in de regels van "The used command is not
toegestaan ​​met deze MySQL-versie", raadpleeg de documentatie voor de "L" DSN-optie.

--tekenset
korte vorm: -A; type: tekenreeks

Standaard tekenset. Als de waarde utf8 is, stelt u Perl's binmode op STDOUT in op utf8,
geeft de optie mysql_enable_utf8 door aan DBD::mysql en voert daarna SET NAMES UTF8 uit
verbinding maken met MySQL. Elke andere waarde stelt binmode in op STDOUT zonder de utf8-laag,
en voert SET NAMES uit na verbinding met MySQL.

Merk op dat alleen tekensets zoals bekend bij MySQL worden herkend; Dus bijvoorbeeld "UTF8" zal dat wel doen
werken, maar "UTF-8" niet.

Zie ook "--[no]check-charset".

--[geen]controletekenset
standaard: ja

Zorg ervoor dat de tekensets voor verbindingen en tabellen hetzelfde zijn. Het uitschakelen van deze controle kan
ervoor zorgen dat tekst ten onrechte wordt omgezet van de ene tekenset naar de andere (meestal van
utf8 naar latin1), wat gegevensverlies of mojibake kan veroorzaken. Het uitschakelen van deze controle kan dat wel zijn
nuttig of noodzakelijk wanneer tekensetconversies zijn bedoeld.

--[geen]controlekolommen
standaard: ja

Zorg ervoor dat "--source" en "--dest" dezelfde kolommen hebben.

Standaard ingeschakeld; zorgt ervoor dat pt-archiver de bron- en bestemmingstabellen controleert
hebben dezelfde kolommen. Het controleert de kolomvolgorde, het gegevenstype, enz. niet. Het is gewoon
controleert of alle kolommen in de bron bestaan ​​in de bestemming en omgekeerd. Als
er verschillen zijn, zal pt-archiver afsluiten met een foutmelding.

Om deze controle uit te schakelen, specificeert u --no-check-kolommen.

--controle-interval
type: tijd; standaard: 1s

Als "--check-slave-lag" wordt opgegeven, definieert dit hoe lang het gereedschap pauzeert
keer dat hij ontdekt dat een slaaf achterloopt.
Deze controle wordt elke 100 rijen uitgevoerd.

--check-slaaf-vertraging
type: tekenreeks; herhaalbaar: ja

Pauzeer het archiveren totdat de slave-vertraging van de opgegeven DSN minder is dan "--max-lag". Dit
optie kan meerdere keren worden opgegeven voor het controleren van meer dan één slave.

--kolommen
korte vorm: -c; type: array

Door komma's gescheiden lijst met kolommen die moeten worden gearchiveerd.

Geef een door komma's gescheiden lijst op met kolommen die moeten worden opgehaald, naar het bestand moeten worden geschreven en waarin deze moeten worden ingevoegd
de bestemmingstabel. Indien gespecificeerd negeert pt-archiver andere kolommen, tenzij dit het geval is
moet ze toevoegen aan de "SELECT" -instructie om naar een index te stijgen of rijen te verwijderen.
Het haalt deze extra kolommen op en gebruikt deze intern, maar schrijft ze niet naar het
bestand of naar de doeltabel. Het doet geef ze door aan plug-ins.

Zie ook "--alleen primaire sleutel".

--commit-elk
Leg elke set opgehaalde en gearchiveerde rijen vast (schakelt "--txn-size" uit).

Voert transacties uit en verwijdert "--file" nadat elke set rijen is gearchiveerd,
voordat de volgende reeks rijen wordt opgehaald, en vóór het slapengaan als "--sleep" is opgegeven.
Schakelt "--txn-size" uit; gebruik "--limit" om de transactiegrootte te beheren
"--commit-elke".

Deze optie is handig als sneltoets om "--limit" en "--txn-size" dezelfde waarde te geven,
maar wat nog belangrijker is, het vermijdt dat transacties openblijven tijdens het zoeken naar meer
rijen. Stel je bijvoorbeeld voor dat je oude rijen archiveert vanaf het begin van een zeer
grote tabel, met "--limit" 1000 en "--txn-size" 1000. Na enige tijd zoeken
en door 1000 rijen tegelijk te archiveren, vindt pt-archiver de laatste 999 rijen en archieven
en voert vervolgens de volgende SELECT uit om meer rijen te vinden. Hiermee wordt de rest van de scan gescand
tabel, maar vindt nooit meer rijen. Het heeft een transactie heel lang opengehouden
tijd, om vervolgens vast te stellen dat het toch klaar is. U kunt "--commit-each" gebruiken om dit te voorkomen
deze.

--config
type: matrix

Lees deze door komma's gescheiden lijst met configuratiebestanden; indien opgegeven, moet dit de eerste zijn
optie op de opdrachtregel.

--databank
korte vorm: -D; type: tekenreeks

Maak verbinding met deze database.

--vertraagd invoegen
Voeg de DELAYED-modifier toe aan INSERT-instructies.

Voegt de modifier DELAYED toe aan INSERT- of REPLACE-instructies. Zien
<http://dev.mysql.com/doc/en/insert.html> voor details.

--bestemming
type: DSN

DSN met vermelding van de tabel waarnaar moet worden gearchiveerd.

Dit item specificeert een tabel waarin pt-archiver gearchiveerde rijen zal invoegen
"--bron". Het gebruikt hetzelfde key=val-argumentformaat als "--source". De meeste ontbreken
waarden hebben standaard dezelfde waarden als "--source", dus u hoeft de opties niet te herhalen
die hetzelfde zijn in "--source" en "--dest". Gebruik de optie "--help" om te zien welke
waarden worden gekopieerd van "--source".

WAARSCHUWING: Met behulp van een standaard optiebestand (F) DSN-optie die een socket definieert voor
"--source" zorgt ervoor dat pt-archiver verbinding maakt met "--dest" via die socket, tenzij een andere
socket voor "--dest" is opgegeven. Dit betekent dat pt-archiver mogelijk onjuist verbinding maakt
naar "--source" wanneer het verbinding maakt met "--dest". Bijvoorbeeld:

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

Wanneer pt-archiver verbinding maakt met "--dest", host2, zal deze verbinding maken via de "--source",
host1, socket gedefinieerd in host1.cnf.

--oefening
Druk query's af en sluit af zonder iets te doen.

Zorgt ervoor dat pt-archiver afsluit na het afdrukken van de bestandsnaam en de SQL-instructies die het zal gebruiken.

--het dossier
type: tekenreeks

Bestand om naar te archiveren, met DATUMNOTATIE()-achtige opmaak.

Bestandsnaam waarnaar gearchiveerde rijen moeten worden geschreven. Een subset van MySQL's DATUMNOTATIE() opmaak
codes zijn als volgt toegestaan ​​in de bestandsnaam:

%d Dag van de maand, numeriek (01..31)
%H Uur (00..23)
%i Minuten, numeriek (00..59)
%m Maand, numeriek (01..12)
%s Seconden (00..59)
%Y Jaar, numeriek, vier cijfers

U kunt ook de volgende extra formaatcodes gebruiken:

%D Databasenaam
%t Tabelnaam

Voorbeeld:

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

De inhoud van het bestand heeft hetzelfde formaat dat wordt gebruikt door SELECT INTO OUTFILE, zoals gedocumenteerd
in de MySQL-handleiding: rijen afgesloten met nieuwe regels, kolommen afgesloten met tabs, NULL
tekens worden vertegenwoordigd door \N, en speciale tekens worden geëscaped door \. Dit laat
u laadt een bestand opnieuw met de standaardinstellingen van LOAD DATA INFILE.

Als u een kolomkop bovenaan het bestand wilt, zie "--header". Het bestand wordt automatisch
standaard doorgespoeld; zie "--buffer".

--voor-update
Voegt de FOR UPDATE-modifier toe aan SELECT-instructies.

Voor details, ziehttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--koptekst
Druk de kolomkop af bovenaan "--file".

Schrijft kolomnamen als de eerste regel in het bestand, gegeven door "--file". Als het bestand
bestaat, schrijft geen headers; hierdoor blijft het bestand laadbaar met LOAD DATA INFILE in
als u er meer uitvoer aan toevoegt.

--help
Help weergeven en afsluiten.

--hoge prioriteit-selecteren
Voegt de modifier HIGH_PRIORITY toe aan SELECT-instructies.

Zienhttp://dev.mysql.com/doc/en/select.html> voor details.

--gastheer
korte vorm: -h; type: tekenreeks

Maak verbinding met host.

--negeren
Gebruik IGNORE voor INSERT-instructies.

Zorgt ervoor dat INSERTs in "--dest" INSERT IGNORE zijn.

--begrenzing
typ: int; standaard: 1

Aantal rijen dat per afschrift moet worden opgehaald en gearchiveerd.

Beperkt het aantal rijen dat wordt geretourneerd door de SELECT-instructies waarnaar rijen worden opgehaald
archief. Standaard is één rij. Het kan efficiënter zijn om de limiet te verhogen, maar wees dat wel
wees voorzichtig als u spaarzaam archiveert en veel rijen overslaat; dit kan mogelijk
meer conflicten veroorzaken met andere query's, afhankelijk van de opslagengine en de transactie
isolatieniveau en opties zoals "--for-update".

--lokaal
Schrijf geen OPTIMIZE- of ANALYZE-query's naar binlog.

Voegt de NO_WRITE_TO_BINLOG-modifier toe aan ANALYZE- en OPTIMIZE-query's. Zie "--analyseren"
voor meer info.

--lage prioriteit-verwijderen
Voegt de modifier LOW_PRIORITY toe aan DELETE-instructies.

Zienhttp://dev.mysql.com/doc/en/delete.html> voor details.

--invoeging met lage prioriteit
Voegt de modifier LOW_PRIORITY toe aan INSERT- of REPLACE-instructies.

Zienhttp://dev.mysql.com/doc/en/insert.html> voor details.

--max-flow-ctl
type: vlotter

Enigszins vergelijkbaar met --max-lag, maar dan voor PXC-clusters. Controleer de gemiddelde tijd die het cluster besteedt
pauzeren voor Flow Control en laat het gereedschap pauzeren als het het aangegeven percentage overschrijdt
in de optie. Standaard is er geen Flow Control-controle. Deze optie is beschikbaar voor PXC
versies 5.6 of hoger.

--max-vertraging
type: tijd; standaard: 1s

Pauzeer het archiveren als de slave gegeven door "--check-slave-lag" achterblijft.

Deze optie zorgt ervoor dat pt-archiver elke keer naar de slaaf kijkt als deze op het punt staat op te halen
nog een rij. Als de vertraging van de slave groter is dan de waarde van de optie, of als de slave
is niet actief (dus de vertraging is NULL), pt-table-checksum slaapt gedurende "--check-interval"
seconden en kijkt dan opnieuw naar de vertraging. Het herhaalt zich totdat de slaaf wordt ingehaald,
gaat vervolgens verder met het ophalen en archiveren van de rij.

Deze optie kan de noodzaak voor "--sleep" of "--sleep-coef" elimineren.

--geen-opstijging
Gebruik geen oplopende indexoptimalisatie.

De standaard optimalisatie van de oplopende index zorgt ervoor dat "pt-archiver" herhaaldelijk wordt geoptimaliseerd
"SELECT"-query's, zodat ze de index zoeken waar de vorige query eindigde, en vervolgens scannen
erlangs, in plaats van elke keer vanaf het begin van de tabel te scannen. Dit is
standaard ingeschakeld omdat dit over het algemeen een goede strategie is voor herhaalde toegang.

Grote indexen met meerdere kolommen kunnen ervoor zorgen dat de WHERE-clausule complex genoeg is
dit zou zelfs minder efficiënt kunnen zijn. Denk bijvoorbeeld aan een PRIMAIRE SLEUTEL met vier kolommen
op (a, b, c, d). De WHERE-clausule die moet beginnen waar de laatste query eindigde, is als volgt:

WAAR (een >?)
OF (a = ? EN b > ?)
OF (a = ? EN b = ? EN c > ?)
OF (a = ? EN b = ? EN c = ? EN d >= ?)

Het vullen van de tijdelijke aanduidingen met waarden gebruikt geheugen en CPU, voegt netwerkverkeer toe en
het parseren van overhead, en kan het voor MySQL moeilijker maken om de query te optimaliseren. Een vierkoloms
sleutel is geen probleem, maar een sleutel met tien kolommen waarin elke kolom "NULL" toestaat, zou dat wel kunnen
worden.

Het is misschien niet nodig om de index op te laten lopen als u weet dat u alleen maar rijen verwijdert
vanaf het begin van de tabel in stukjes, maar zonder gaten achter te laten, dus vanaf
het begin van de tabel is eigenlijk het meest efficiënt om te doen.

Zie ook "--eerst opstijgen". Zie "UITBREIDING" voor een bespreking van hoe dit op elkaar inwerkt
met plug-ins.

--niet-verwijderen
Verwijder gearchiveerde rijen niet.

Zorgt ervoor dat "pt-archiver" rijen niet verwijdert nadat ze zijn verwerkt. Dit staat niet toe
"--no-ascend", omdat het inschakelen van beide een oneindige lus zou veroorzaken.

Als er een plug-in op de bron-DSN staat, wordt de "before_delete" -methode hoe dan ook aangeroepen,
ook al zal "pt-archiver" de verwijdering niet uitvoeren. Zie "VERLENGEN" voor meer informatie
plugins.

--optimaliseren
type: tekenreeks

Voer daarna OPTIMIZE TABLE uit op "--source" en/of "--dest".

Voert OPTIMIZE TABLE uit na voltooiing. Zie "--analyze" voor de syntaxis van de optie en
<http://dev.mysql.com/doc/en/optimize-table.html> voor details over TABEL OPTIMALISEREN.

--wachtwoord
korte vorm: -p; type: tekenreeks

Wachtwoord om te gebruiken bij het verbinden. Als het wachtwoord komma's bevat, moeten deze worden ontsnapt
met een backslash: "exam\,ple"

--pid
type: tekenreeks

Maak het opgegeven PID-bestand aan. De tool start niet als het PID-bestand al bestaat en
de PID die het bevat is anders dan de huidige PID. Als het PID-bestand
bestaat en de PID die deze bevat niet meer actief is, zal de tool de PID overschrijven
bestand met de huidige PID. Het PID-bestand wordt automatisch verwijderd wanneer de tool wordt afgesloten.

--inpluggen
type: tekenreeks

Perl-modulenaam die als algemene plug-in moet worden gebruikt.

Geef de Perl-modulenaam op van een plug-in voor algemeen gebruik. Het wordt momenteel alleen gebruikt
voor statistieken (zie "--statistics") en moet "new()" en een "statistics()"-methode hebben.

De "new( src =" $src, dst => $dst, opts => $o )> methode haalt de bron op en
doel-DSN's en hun databaseverbindingen, net als de verbindingsspecifieke
plug-ins doen dat wel. Het krijgt ook een OptionParser-object ($o) voor toegang tot de opdrachtregel
opties (bijvoorbeeld: "$o-"get('purge');>).

De methode "statistics(\%stats, $time)" haalt een hashref op van de statistieken die zijn verzameld door
de archiveringstaak en het tijdstip waarop de hele taak begon.

--haven
korte vorm: -P; typ: int

Poortnummer dat moet worden gebruikt voor verbinding.

--alleen primaire sleutel
Alleen primaire sleutelkolommen.

Een snelkoppeling voor het opgeven van "--kolommen" met de primaire sleutelkolommen. Dit is een
efficiëntie als u alleen rijen wilt opschonen; het vermijdt het ophalen van de hele rij wanneer
alleen de primaire sleutelkolommen zijn nodig voor "DELETE"-instructies. Zie ook "--purge".

--voortgang
typ: int

Druk elke X-rij voortgangsinformatie af.

Drukt de huidige tijd, verstreken tijd en rijen af ​​die elke X rijen zijn gearchiveerd.

--zuiveren
Opschonen in plaats van archiveren; maakt het weglaten van "--file" en "--dest" mogelijk.

Maakt archivering mogelijk zonder een "--file" of "--dest" argument, wat in feite een opschoning is
omdat de rijen zojuist zijn verwijderd.

Als u alleen rijen wilt verwijderen, kunt u overwegen de primaire sleutelkolommen van de tabel op te geven
met "--alleen primaire sleutel". Hierdoor wordt voorkomen dat alle kolommen van de server worden opgehaald
geen reden.

--snel verwijderen
Voegt de QUICK-modifier toe aan DELETE-instructies.

Zienhttp://dev.mysql.com/doc/en/delete.html> voor details. Zoals vermeld in de
documentatie, kan het in sommige gevallen sneller zijn om DELETE QUICK te gebruiken, gevolgd door OPTIMIZE
TAFEL. Hiervoor kunt u "--optimize" gebruiken.

--stil
korte vorm: -q

Druk geen uitvoer af, zoals voor "--statistieken".

Onderdrukt de normale uitvoer, inclusief de uitvoer van "--statistics", maar onderdrukt deze niet
de uitvoer van "--waarom-quit".

--vervangen
Zorgt ervoor dat INSERTs in "--dest" worden geschreven als REPLACE.

--pogingen
typ: int; standaard: 1

Aantal nieuwe pogingen per time-out of impasse.

Specificeert het aantal keren dat pt-archiver het opnieuw moet proberen als er een InnoDB-vergrendeling is
Wachttime-out of impasse. Wanneer de nieuwe pogingen zijn uitgeput, wordt pt-archiver afgesloten met een
fout.

Denk goed na over wat u wilt dat er gebeurt als u een mix van archiveert
transactionele en niet-transactionele opslagmotoren. De INSERT naar "--dest" en
DELETE van "--source" bevinden zich op afzonderlijke verbindingen, dus dat is in werkelijkheid niet het geval
deelnemen aan dezelfde transactie, zelfs als ze zich op dezelfde server bevinden. Echter, pt-
archiver implementeert eenvoudige gedistribueerde transacties in code, dus commits en rollbacks
zou naar wens moeten gebeuren over de twee verbindingen.

Op dit moment heb ik geen code geschreven om fouten met transactionele opslag af te handelen
andere motoren dan InnoDB. Vraag die functie aan als je deze nodig hebt.

--looptijd
typ: tijd

Tijd om te rennen voordat je weggaat.

Optioneel achtervoegsel s=seconden, m=minuten, h=uren, d=dagen; als er geen achtervoegsel is, wordt s gebruikt.

--[geen]safe-auto-increment
standaard: ja

Archief geen rij met max. AUTO_INCREMENT.

Voegt een extra WHERE-clausule toe om te voorkomen dat pt-archiver de nieuwste rij verwijdert wanneer
oplopend met een AUTO_INCREMENT-sleutel met één kolom. Dit beschermt tegen hergebruik
AUTO_INCREMENT waarden als de server opnieuw opstart, en is standaard ingeschakeld.

De extra WHERE-clausule bevat de maximale waarde van de auto-increment-kolom vanaf
het begin van de archiverings- of opschoontaak. Als er nieuwe rijen worden ingevoegd terwijl pt-archiver
loopt, zal hij ze niet zien.

-- schildwacht
type: tekenreeks; standaard: /tmp/pt-archiver-sentinel

Sluit af als dit bestand bestaat.

De aanwezigheid van het bestand gespecificeerd door "--sentinel" zal ervoor zorgen dat pt-archiver stopt
archiveren en afsluiten. De standaardwaarde is /tmp/pt-archiver-sentinel. Misschien vind je dit
handig om cronjobs indien nodig netjes te stoppen. Zie ook "--stop".

--set-vars
type: matrix

Stel de MySQL-variabelen in deze door komma's gescheiden lijst van "variabele=waarde"-paren in.

Standaard stelt de tool het volgende in:

wait_timeout=10000

Variabelen die op de opdrachtregel zijn opgegeven, overschrijven deze standaardwaarden. Bijvoorbeeld,
het specificeren van "--set-vars wait_timeout=500" overschrijft de standaardwaarde van 10000.

De tool drukt een waarschuwing af en gaat verder als een variabele niet kan worden ingesteld.

--share-lock
Voegt de LOCK IN SHARE MODE-modifier toe aan SELECT-instructies.

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

--skip-vreemde-sleutel-controles
Schakelt controles van externe sleutels uit met SET FOREIGN_KEY_CHECKS=0.

--slaap
typ: int

Slaaptijd tussen ophaalacties.

Specificeert hoe lang er moet worden geslapen tussen SELECT-instructies. Standaard is niet om in te slapen
alle. Transacties worden NIET eerder vastgelegd en het bestand "--file" wordt NIET leeggemaakt
slapen. Zie "--txn-size" om dat te regelen.

Als "--commit-each" is opgegeven, vindt het vastleggen en doorspoelen plaats vóór het slapengaan.

--slaap-coef
type: vlotter

Bereken "--sleep" als een veelvoud van de laatste SELECT-tijd.

Als deze optie is opgegeven, zal pt-archiver slapen gedurende de zoektijd van de laatste
SELECT vermenigvuldigd met de opgegeven coëfficiënt.

Dit is een iets geavanceerdere manier om de SELECTs te beperken: slaap afwisselend
hoeveelheid tijd tussen elke SELECT, afhankelijk van hoe lang de SELECTs duren.

--stopcontact
korte vorm: -S; type: tekenreeks

Socketbestand om te gebruiken voor verbinding.

--bron
type: DSN

DSN met vermelding van de tabel waaruit moet worden gearchiveerd (vereist). Dit argument is een DSN. Zien
"DSN-OPTIES" voor de syntaxis. De meeste opties bepalen hoe pt-archiver verbinding maakt met MySQL,
maar er zijn enkele uitgebreide DSN-opties in de syntaxis van deze tool. De D, t en ik
opties selecteer een tabel om te archiveren:

--source h=mijn_server,D=mijn_database,t=mijn_tbl

De optie a specificeert de database die moet worden ingesteld als de standaardverbinding voor de verbinding met USE. Als
de b-optie waar is, schakelt binaire logboekregistratie met SQL_LOG_BIN uit. De m-optie
specificeert inplugbare acties, die een externe Perl-module kan bieden. De enige
vereist onderdeel is de tafel; andere delen kunnen vanaf verschillende plaatsen in de tekst worden gelezen
omgeving (zoals optiebestanden).

Het 'i'-gedeelte verdient speciale vermelding. Dit vertelt pt-archiver welke index het moet hebben
scannen naar archief. Dit verschijnt in een FORCE INDEX- of USE INDEX-hint in de SELECT
instructies die worden gebruikt om archiveerbare rijen op te halen. Als u niets opgeeft, wordt pt-archiver
zal automatisch een goede index ontdekken, waarbij de voorkeur wordt gegeven aan een "PRIMARY KEY" als die bestaat. In mijn
ervaring dat dit meestal goed werkt, dus meestal kun je de optie waarschijnlijk gewoon achterwege laten
'ik'-deel.

De index wordt gebruikt om herhaalde toegang tot de tabel te optimaliseren; pt-archiver onthoudt
de laatste rij die het uit elke SELECT-instructie haalt, en gebruikt deze om een ​​WHERE te construeren
clausule, met behulp van de kolommen in de opgegeven index, waarmee MySQL het
volgende SELECTEER waar de laatste eindigde, in plaats van mogelijk te scannen vanaf de
begin van de tabel bij elke opeenvolgende SELECT. Als u extern gebruikt
plug-ins, zie "UITBREIDING" voor een bespreking van hoe deze omgaan met stijgend
indexen.

Met de opties 'a' en 'b' kunt u bepalen hoe instructies door het binaire bestand stromen
loggen. Als u de 'b'-optie opgeeft, wordt binaire logboekregistratie op de opgegeven locatie uitgeschakeld
verbinding. Als u de optie 'a' opgeeft, zal de verbinding de opgegeven verbinding "GEBRUIKEN".
database, die u kunt gebruiken om te voorkomen dat slaven de binaire loggebeurtenissen uitvoeren
met "--repliceer-negeer-db" opties. Deze twee opties kunnen als verschillend worden gebruikt
methoden om hetzelfde doel te bereiken: data archiveren buiten de master, maar deze op de master laten staan
slaaf. U kunt bijvoorbeeld een opschoontaak uitvoeren op de master en deze voorkomen
gebeurt op de slaaf met behulp van de door u gekozen methode.

WAARSCHUWING: Met behulp van een standaard optiebestand (F) DSN-optie die een socket definieert voor
"--source" zorgt ervoor dat pt-archiver verbinding maakt met "--dest" via die socket, tenzij een andere
socket voor "--dest" is opgegeven. Dit betekent dat pt-archiver mogelijk onjuist verbinding maakt
naar "--source" wanneer het de bedoeling is om verbinding te maken met "--dest". Bijvoorbeeld:

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

Wanneer pt-archiver verbinding maakt met "--dest", host2, zal deze verbinding maken via de "--source",
host1, socket gedefinieerd in host1.cnf.

--statistieken
Verzamel en print timingstatistieken.

Zorgt ervoor dat pt-archiver timingstatistieken verzamelt over wat het doet. Deze statistieken
zijn beschikbaar voor de plug-in gespecificeerd door "--plugin"

Tenzij u "--quiet" opgeeft, drukt "pt-archiver" de statistieken af ​​wanneer het afsluit. De
statistieken zien er als volgt uit:

Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
Bron: D=db,t=tabel
KIES 4
INVOEG 4
VERWIJDEREN 4
Actietellingstijd Pct
vastleggen 10 0.1079 88.27
selecteer 5 0.0047 3.87
verwijderen 4 0.0028 2.29
inbrengen 4 0.0028 2.28
overige 0 0.0040 3.29

De eerste twee (of drie) regels tonen tijden en de bron- en bestemmingstabellen. De
de volgende drie regels laten zien hoeveel rijen zijn opgehaald, ingevoegd en verwijderd.

De overige regels tonen tellingen en timing. De kolommen zijn de actie, het totaal
het aantal keren dat die actie werd getimed, de totale tijd die het kostte en het percentage van de actie
totale looptijd van het programma. De rijen worden gesorteerd in volgorde van aflopende totale tijd. De
laatste rij is de rest van de tijd die nergens expliciet aan wordt toegeschreven. Acties zullen
variëren afhankelijk van de opdrachtregelopties.

Als "--why-quit" wordt gegeven, wordt het gedrag enigszins gewijzigd. Deze optie zorgt ervoor dat dit gebeurt
druk de reden voor het afsluiten af, ook al is het alleen maar omdat er geen rijen meer zijn.

Deze optie vereist de standaard Time::HiRes-module, die deel uitmaakt van de kern van Perl on
redelijk nieuwe Perl-releases.

--stoppen
Stop met het uitvoeren van exemplaren door het Sentinel-bestand te maken.

Zorgt ervoor dat pt-archiver het Sentinel-bestand aanmaakt dat is opgegeven door "--sentinel" en afsluit.
Dit zou tot gevolg moeten hebben dat alle actieve instanties die de
hetzelfde Sentinel-bestand.

--txn-grootte
typ: int; standaard: 1

Aantal rijen per transactie.

Specificeert de grootte, in aantal rijen, van elke transactie. Nul schakelt transacties uit
allemaal samen. Nadat pt-archiver zoveel rijen heeft verwerkt, legt het zowel de
"--source" en de "--dest" indien opgegeven, en wist het bestand gegeven door "--file".

Deze parameter is van cruciaal belang voor de prestaties. Als u archiveert vanaf een live server,
waarbij je bijvoorbeeld zwaar OLTP-werk doet, daar moet je een goede balans tussen kiezen
transactiegrootte en commit-overhead. Grotere transacties creëren de mogelijkheid van
meer lock-conflicten en impasses, maar kleinere transacties veroorzaken vaker
overheadkosten, die aanzienlijk kunnen zijn. Om een ​​idee te geven, op een kleine testset I
waarmee ik werkte tijdens het schrijven van pt-archiver, zorgde een waarde van 500 ervoor dat het archiveren ongeveer 2 duurde
seconden per 1000 rijen op een verder stille MySQL-instantie op mijn desktopcomputer,
archiveren naar schijf en naar een andere tabel. Transacties met een waarde nul uitschakelen,
waarbij autocommit wordt ingeschakeld, daalde de prestatie naar 38 seconden per duizend rijen.

Als u niet archiveert van of naar een transactionele opslagengine, wilt u dat misschien wel doen
schakel transacties uit zodat pt-archiver niet probeert vast te leggen.

--gebruiker
korte vorm: -u; type: tekenreeks

Gebruiker om in te loggen indien niet huidige gebruiker.

--versie
Toon versie en sluit af.

--[no]versiecontrole
standaard: ja

Controleer op de nieuwste versie van Percona Toolkit, MySQL en andere programma's.

Dit is een standaard "controleer automatisch op updates", met twee extra
Kenmerken. Eerst controleert de tool de versie van andere programma's op het lokale systeem in
aanvulling op een eigen versie. Het controleert bijvoorbeeld de versie van elke MySQL-server
het maakt verbinding met Perl en de Perl-module DBD::mysql. Ten tweede, het controleert en waarschuwt
over versies met bekende problemen. MySQL 5.5.25 had bijvoorbeeld een kritieke bug en
werd opnieuw uitgebracht als 5.5.25a.

Alle updates of bekende problemen worden naar STDOUT afgedrukt voordat de normale uitvoer van het hulpprogramma wordt uitgevoerd.
Deze functie mag nooit interfereren met de normale werking van het gereedschap.

Voor meer informatie bezoek .

--waar
type: tekenreeks

WHERE-clausule om te beperken welke rijen moeten worden gearchiveerd (vereist).

Specificeert een WHERE-clausule om te beperken welke rijen worden gearchiveerd. Neem het woord niet op
WAAR. Mogelijk moet u het argument citeren om te voorkomen dat uw shell het interpreteert.
Bijvoorbeeld:

--waar 'ts < huidige_datum - interval 90 dagen'

Voor de veiligheid is "--where" vereist. Als u geen WHERE-clausule nodig heeft, gebruikt u
"--waar" 1=1.

--waarom-stoppen
Reden voor afsluiten afdrukken, tenzij de rijen uitgeput zijn.

Zorgt ervoor dat pt-archiver een bericht afdrukt als het om een ​​andere reden dan actief wordt afgesloten
uit rijen om te archiveren. Dit kan handig zijn als u een cronjob heeft met "--run-time"
opgegeven, bijvoorbeeld, en u wilt er zeker van zijn dat pt-archiver eerder klaar is
in tijdnood komen.

Als "--statistics" wordt opgegeven, wordt het gedrag enigszins gewijzigd. Het zal de
reden om af te sluiten, ook al is het alleen maar omdat er geen rijen meer zijn.

Deze uitvoer wordt afgedrukt, zelfs als "--quiet" wordt opgegeven. Dat is zodat je "pt-archiver" erin kunt plaatsen
een "cron"-taak en ontvang een e-mail als er een abnormale exit is.

DSN OPTIES


Deze DSN-opties worden gebruikt om een ​​DSN te maken. Elke optie wordt gegeven als "option=value".
De opties zijn hoofdlettergevoelig, dus P en p zijn niet dezelfde optie. Er kan niet zijn
witruimte voor of na de "=" en als de waarde witruimte bevat, moet deze tussen aanhalingstekens worden geplaatst.
DSN-opties zijn door komma's gescheiden. Zie de percona-toolkit manpage voor volledige details.

· A

kopie: nee

Database die u kunt gebruiken bij het uitvoeren van query's.

· EEN

dsn: tekenset; kopie: ja

Standaard tekenset.

· B

kopie: nee

Indien waar, schakel binlog uit met SQL_LOG_BIN.

· NS

dsn: databank; kopie: ja

Database die de tabel bevat.

F

dsn: mysql_read_default_file; kopie: ja

Lees alleen de standaardopties van het opgegeven bestand

· H

dsn: host; kopie: ja

Maak verbinding met host.

· l

kopiëren: ja

Indexering om te gebruiken.

· I

kopiëren: ja

Schakel LOAD DATA LOCAL INFILE expliciet in.

Om de een of andere reden compileren sommige leveranciers libmysql zonder --enable-local-infile
optie, die de instructie uitschakelt. Dit kan tot vreemde situaties leiden, zoals de
server staat LOCAL INFILE toe, maar de client genereert uitzonderingen als deze wordt gebruikt.

Zolang de server echter LOAD DATA toestaat, kunnen clients dit eenvoudig opnieuw inschakelen; Zien
En
<http://search.cpan.org/~capttofu/DBD-mysql/lib/DBD/mysql.pm>. Deze optie wel
precies dat.

Hoewel we geen geval hebben gevonden waarin het omzetten van deze optie tot fouten of meningsverschillen leidt
Voor de zekerheid is deze optie niet standaard ingeschakeld.

· M

kopie: nee

Naam van plug-inmodule.

· P

dsn: wachtwoord; kopie: ja

Wachtwoord om te gebruiken bij het verbinden. Als het wachtwoord komma's bevat, moeten deze worden ontsnapt
met een backslash: "exam\,ple"

· Blz

dsn: poort; kopie: ja

Poortnummer dat moet worden gebruikt voor verbinding.

· S

dsn: mysql_socket; kopie: ja

Socketbestand om te gebruiken voor verbinding.

· T

kopiëren: ja

Tabel om van/naar te archiveren.

· u

dsn: gebruiker; kopie: ja

Gebruiker om in te loggen indien niet huidige gebruiker.

VERLENGD


pt-archiver is uitbreidbaar door externe Perl-modules aan te sluiten om wat logica en/of te verwerken
acties. U kunt een module opgeven voor zowel de "--source" als de "--dest", met de 'm'
onderdeel van de specificatie. Bijvoorbeeld:

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

Dit zorgt ervoor dat pt-archiver de pakketten My::Module1 en My::Module2 laadt,
exemplaren ervan, en deze vervolgens aanroepen tijdens het archiveringsproces.

U kunt ook een plug-in opgeven met "--plugin".

De module moet deze interface bieden:

new(dbh => $dbh, db => $db_naam, tbl => $tbl_naam)
Aan de constructor van de plug-in wordt een verwijzing doorgegeven naar de database-ingang, de database
naam en tabelnaam. De plug-in wordt gemaakt net nadat pt-archiver het
verband, en voordat het de tabel in de argumenten onderzoekt. Dit geeft de
plug-in een kans om tijdelijke tabellen te maken en in te vullen, of ander installatiewerk uit te voeren.

before_begin(cols => \@cols, allcols => \@allecols)
Deze methode wordt aangeroepen net voordat pt-archiver begint met het doorlopen van rijen en
archiveren, maar nadat al het andere instellingswerk is gedaan (tabelstructuren onderzoeken,
het ontwerpen van SQL-query's, enzovoort). Dit is de enige keer dat pt-archiver de plug-in vertelt
kolomnamen voor de rijen die de plug-in zal doorgeven tijdens het archiveren.

Het argument "cols" bestaat uit de kolomnamen waarmee de gebruiker heeft verzocht te worden gearchiveerd
standaard of via de optie "--kolommen". Het argument "allcols" is de lijst met kolommen
namen voor elke rij die pt-archiver uit de brontabel haalt. Het kan meer opleveren
kolommen dan de gebruiker heeft aangevraagd, omdat deze enkele kolommen nodig heeft voor eigen gebruik. Wanneer
daaropvolgende plug-infuncties krijgen een rij, het is de volledige rij met alle extra's
eventuele kolommen worden aan het einde toegevoegd.

is_archiveerbaar(rij => \@rij)
Deze methode wordt voor elke rij aangeroepen om te bepalen of deze archiveerbaar is. Dit
is alleen van toepassing op "--source". Het argument is de rij zelf, als arrayref. Als de
methode retourneert true, de rij wordt gearchiveerd; anders wordt het overgeslagen.

Het overslaan van een rij voegt complicaties toe voor niet-unieke indexen. Normaal gesproken gebruikt pt-archiver een
WHERE-clausule die is ontworpen om de laatst verwerkte rij te targeten als de plaats om de scan te starten
voor de volgende SELECT-instructie. Als u de rij hebt overgeslagen door false from te retourneren
is_archiveerbaar(), kan pt-archiver in een oneindige lus terechtkomen omdat de rij stilstaat
bestaat. Wanneer u daarom een ​​plug-in opgeeft voor het argument "--source", wordt pt-archiver
zal de WHERE-clausule enigszins wijzigen. In plaats van te beginnen met 'groter dan of gelijk'
tot" de laatst verwerkte rij, begint het "strikt groter dan." Dit zal werken
prima voor unieke indexen, zoals primaire sleutels, maar er kunnen rijen worden overgeslagen (gaten achtergelaten).
niet-unieke indexen of bij het oplopen van alleen de eerste kolom van een index.

"pt-archiver" zal de clausule op dezelfde manier wijzigen als u "--no-delete" opgeeft,
omdat opnieuw een oneindige lus mogelijk is.

Als u de optie "--bulk-delete" opgeeft en met deze methode false retourneert,
"pt-archiver" doet mogelijk niet wat u wilt. De rij wordt niet gearchiveerd, maar dat zal wel zo zijn
verwijderd, omdat bulkverwijderingen werken op reeksen rijen en niet weten welke rijen het zijn
plug-in geselecteerd om te behouden.

Als u de optie "--bulk-insert" opgeeft, heeft de retourwaarde van deze methode invloed
of de rij naar het tijdelijke bestand voor de bulkinvoeging wordt geschreven, dus bulkinvoegingen
zal werken zoals verwacht. Bulkinvoegingen vereisen echter bulkverwijderingen.

before_delete(rij => \@rij)
Deze methode wordt voor elke rij aangeroepen vlak voordat deze wordt verwijderd. Dit geldt alleen voor
"--bron". Dit is een goede plek voor het afhandelen van afhankelijkheden, zoals verwijderen
dingen die een buitenlandse sleutel hebben voor de rij die u gaat verwijderen. Je zou ook kunnen gebruiken
dit om alle afhankelijke tabellen recursief te archiveren.

Deze plug-inmethode wordt zelfs aangeroepen als "--no-delete" wordt opgegeven, maar niet als
"--bulk-delete" wordt gegeven.

before_bulk_delete(eerste_rij => \@rij, laatste_rij => \@rij)
Deze methode wordt aangeroepen net voordat een bulkverwijdering wordt uitgevoerd. Het is vergelijkbaar met de
"before_delete" methode, behalve dat de argumenten de eerste en laatste rij van het bereik zijn
wordt verwijderd. Het wordt zelfs aangeroepen als "--no-delete" wordt opgegeven.

before_insert(rij => \@rij)
Deze methode wordt voor elke rij aangeroepen vlak voordat deze wordt ingevoegd. Dit geldt alleen voor
"--dest". U kunt dit gebruiken om de rij in meerdere tabellen in te voegen, misschien met een
ON DUPLICATE KEY UPDATE-clausule om samenvattende tabellen in een datawarehouse te bouwen.

Deze methode wordt niet aangeroepen als "--bulk-insert" wordt opgegeven.

before_bulk_insert(eerste_rij => \@row, last_row => \@row, bestandsnaam =>
bulk_insert_bestandsnaam)
Deze methode wordt aangeroepen net voordat een bulkinvoeging wordt uitgevoerd. Het is vergelijkbaar met de
"before_insert"-methode, behalve dat de argumenten de eerste en laatste rij van het bereik zijn
wordt verwijderd.

custom_sth(rij => \@rij, sql => $sql)
Deze methode wordt aangeroepen net vóór het invoegen van de rij, maar na "voor_insert()". Het
staat de plug-in toe om indien gewenst een andere "INSERT"-instructie op te geven. De terugkeer
waarde (indien aanwezig) moet een DBI-instructiehandle zijn. De parameter "sql" is de SQL-tekst
gebruikt om de standaard "INSERT" -instructie voor te bereiden. Deze methode wordt niet aangeroepen als u
specificeer "--bulk-insert".

Als er geen waarde wordt geretourneerd, wordt de standaardinstructiehandle "INSERT" gebruikt.

Deze methode is alleen van toepassing op de plug-in die is opgegeven voor "--dest", dus als uw plug-in dat niet is
Als u doet wat u verwacht, controleer dan of u dit voor de bestemming hebt opgegeven en niet voor de bestemming
bron.

custom_sth_bulk(eerste_rij => \@row, last_row => \@row, sql => $sql, bestandsnaam =>
$bulk_insert_bestandsnaam)
Als u "--bulk-insert" heeft opgegeven, wordt deze methode net vóór de bulk aangeroepen
invoegen, maar na "voor_bulk_insert()", en de argumenten zijn verschillend.

De retourwaarde van deze methode enz. is vergelijkbaar met de "aangepaste_sth()" methode.

after_finish()
Deze methode wordt aangeroepen nadat pt-archiver de archiveringslus heeft verlaten en alle databases heeft vastgelegd
handelt af, sluit "--file" en drukt de definitieve statistieken af, maar voordat pt-archiver wordt uitgevoerd
ANALYSEREN of OPTIMALISEREN (zie "--analyze" en "--optimize").

Als u een plug-in opgeeft voor zowel "--source" als "--dest", pt-archiver constructies, oproepen
voor_begin(), en belt after_finish() op de twee plug-ins in de volgorde "--source",
"--dest".

pt-archiver gaat ervan uit dat het transacties controleert, en dat de plug-in NIET zal committen of rollen
de database-handle terug. De databasehandle die aan de constructor van de plug-in wordt doorgegeven, is de
hetzelfde handvat dat pt-archiver zichzelf gebruikt. Houd er rekening mee dat "--source" en "--dest" gescheiden zijn
handvatten.

Een voorbeeldmodule kan er als volgt uitzien:

pakket Mijn::Module;

sub nieuw {
mijn ($class, %args ) = @_;
return zegen(\%args, $class);
}

sub voor_begin {
mijn ($self, %args ) = @_;
# Bewaar kolomnamen voor later
$self->{cols} = $args{cols};
}

sub is_archiveerbaar {
mijn ($self, %args ) = @_;
# Voer wat geavanceerde logica uit met $args{row}
1 terug;
}

sub before_delete {} # Onderneem geen actie
sub before_insert {} # Onderneem geen actie
sub custom_sth {} # Onderneem geen actie
sub after_finish {} # Onderneem geen actie

1;

MILIEU


De omgevingsvariabele "PTDEBUG" maakt uitgebreide foutopsporingsuitvoer naar STDERR mogelijk. In staat te stellen
debuggen en alle uitvoer vastleggen in een bestand, voer de tool uit als:

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

Wees voorzichtig: het debuggen van uitvoer is omvangrijk en kan enkele megabytes aan uitvoer genereren.

SYSTEM VEREISTEN


U hebt Perl, DBI, DBD::mysql en enkele kernpakketten nodig die in elk
redelijk nieuwe versie van Perl.

Gebruik pt-archiverp online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

  • 1
    DivKit
    DivKit
    DivKit is een open source servergestuurd programma
    UI (SDUI)-framework. Het staat je toe
    server-source updates uitrollen naar
    verschillende app-versies. Het kan ook zo zijn
    gebruikt voor...
    DivKit downloaden
  • 2
    subconverter
    subconverter
    Hulpprogramma om te converteren tussen verschillende
    abonnement formaat. Shadowrocket-gebruikers
    moet ss, ssr of v2ray als doel gebruiken.
    U kunt &opmerking= toevoegen aan
    Telegram-geliefde HT...
    Subconverter downloaden
  • 3
    SWASH
    SWASH
    SWASH is een numerieke waarde voor algemeen gebruik
    hulpmiddel voor het simuleren van instabiele,
    niet-hydrostatisch, vrij oppervlak,
    rotatiestroming en transportverschijnselen
    in kustwateren als ...
    SWASH downloaden
  • 4
    VBA-M (gearchiveerd - nu op Github)
    VBA-M (gearchiveerd - nu op Github)
    Project is verplaatst naar
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Functies:Cheat creaties opslaan van statenmulti
    systeem, ondersteunt gba, gbc, gb, sgb,
    sgb2Tu...
    VBA-M downloaden (gearchiveerd - nu op Github)
  • 5
    Stacer
    Stacer
    Linux-systeemoptimalisatie en -bewaking
    Github-opslagplaats:
    https://github.com/oguzhaninan/Stacer.
    Doelgroep: eindgebruikers/desktop. Gebruiker
    interface: Qt. Programmeerla...
    Stacer downloaden
  • 6
    oranjevos
    oranjevos
    Vork van TeamWinRecoveryProject (TWRP)
    met veel extra functies, herontwerp
    en meer Kenmerken: Ondersteunt Treble en
    niet-Treble ROM'sUp-to-date Oreo-kernel,
    gebouwd...
    OrangeFox downloaden
  • Meer "

Linux-commando's

Ad