Angielskifrancuskihiszpański

Ulubiona usługa OnWorks

pt-table-syncp — Online w chmurze

Uruchom pt-table-syncp w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To jest polecenie pt-table-syncp, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


pt-table-sync - Efektywna synchronizacja danych w tabeli MySQL.

STRESZCZENIE


Użycie: pt-table-sync [OPCJE] DSN [DSN]

pt-table-sync skutecznie synchronizuje dane pomiędzy tabelami MySQL.

To narzędzie zmienia dane, dlatego dla maksymalnego bezpieczeństwa należy wykonać kopię zapasową danych przed użyciem
To. Podczas synchronizacji serwera będącego urządzeniem podrzędnym replikacji za pomocą polecenia „--replicate” lub
Metody „--sync-to-master”, to zawsze wprowadza zmiany na wzorcu replikacji, nigdy
bezpośrednio urządzenie podrzędne replikacji. Jest to w zasadzie jedyny bezpieczny sposób na przyniesienie repliki
ponownie zsynchronizowany ze swoim panem; zmiany w replice są zazwyczaj źródłem problemu
przede wszystkim problemy. Jednak zmiany, które wprowadza na urządzeniu głównym, nie powinny być skuteczne
zmiany, które ustawiają dane na ich bieżące wartości i faktycznie wpływają tylko na replikę.

Zsynchronizuj plik db.tbl na hoście1 z hostem2:

pt-table-sync --execute h=host1,D=db,t=tbl h=host2

Zsynchronizuj wszystkie tabele na hoście 1 z hostem 2 i hostem 3:

pt-table-sync --wykonaj host1 host2 host3

Spraw, aby slave1 miał te same dane, co jego master replikacji:

pt-table-sync --execute --sync-to-master slave1

Rozwiąż różnice w sumie kontrolnej pt-table znalezionej na wszystkich urządzeniach slave master1:

pt-table-sync --execute --replikacja test.suma kontrolna master1

To samo co powyżej, ale rozwiązuje tylko różnice na urządzeniu slave1:

pt-table-sync --execute --replicate test.suma kontrolna \
--sync-to-master slave1

Synchronizuj master2 w konfiguracji replikacji master-master, gdzie kopia pliku db.tbl z master2
wiadomo lub podejrzewa się, że jest nieprawidłowy:

pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl

Pamiętaj, że w konfiguracji master-master poniższe NIE zrobią tego, co chcesz,
ponieważ dokona zmian bezpośrednio w master2, które następnie przejdą przez replikację
i zmień dane master1:

# Nie rób tego w konfiguracji master-master!
pt-table-sync --execute h=master1,D=db,t=tbl master2

RYZYKO


OSTRZEŻENIE: pt-table-sync zmienia dane! Przed użyciem tego narzędzia należy:

· Przeczytaj dokumentację narzędzia

· Przejrzyj znane „BŁĘDY” narzędzia

· Przetestuj narzędzie na serwerze nieprodukcyjnym

· Wykonaj kopię zapasową serwera produkcyjnego i weryfikuj kopie zapasowe

pt-table-sync jest dojrzały, sprawdzony w prawdziwym świecie i dobrze przetestowany, ale jeśli jest używany
niewłaściwie może to mieć niekorzystne skutki. Zawsze najpierw przetestuj synchronizację za pomocą
„--dry-run” i „--print”.

OPIS


pt-table-sync wykonuje jednokierunkową i dwukierunkową synchronizację danych tabeli. To robi nie
synchronizować struktury tabel, indeksy lub inne obiekty schematu. Następujące
opisuje synchronizację jednokierunkową. „SYNCHRONIZACJA DWUKIERUNKOWA” została opisana później.

To narzędzie jest złożone i działa na kilka różnych sposobów. Aby móc z niego bezpiecznie korzystać i
w praktyce powinieneś zrozumieć trzy rzeczy: cel „--replikacji”, znajdowanie
różnice i określanie hostów. Te trzy pojęcia są ze sobą ściśle powiązane i determinują
jak narzędzie będzie działać. Poniżej znajduje się skrócona logika:

jeśli DSN ma częściowo, zsynchronizuj tylko tę tabelę:
jeśli 1 DSN:
if --sync-to-master:
DSN jest niewolnikiem. Połącz się ze swoim urządzeniem głównym i zsynchronizuj.
jeżeli więcej niż 1 DSN:
Źródłem jest pierwszy numer DSN. Synchronizuj po kolei każde DSN.
else if --replikacja:
if --sync-to-master:
DSN jest niewolnikiem. Połącz się z jego mistrzem, znajdź zapisy
różnic i napraw.
jeszcze:
DSN jest mistrzem. Znajdź niewolników i połącz się z każdym,
znajdź zapisy różnic i napraw.
jeszcze:
jeśli tylko 1 DSN i --sync-to-master:
DSN jest niewolnikiem. Połącz się z jego mistrzem, znajdź stoły i
filtruj za pomocą --databases itp. i synchronizuj każdą tabelę z tabelą główną.
jeszcze:
znajdź tabele, filtruj za pomocą --databases itp. i zsynchronizuj je
DSN do pierwszego.

pt-table-sync można uruchomić na jeden z dwóch sposobów: z opcją „--replicate” lub bez. Wartość domyślna to
działać bez „--replicate”, co powoduje, że pt-table-sync automatycznie znajduje różnice
efektywnie za pomocą jednego z kilku algorytmów (patrz „ALGORYTMY”). Alternatywnie wartość
opcji „--replicate”, jeśli jest określona, ​​powoduje, że pt-table-sync użyje już znalezionych różnic
poprzez wcześniejsze uruchomienie sumy kontrolnej pt-table z własną opcją „--replicate”. Rygorystycznie
mówiąc, nie musisz używać „--replicate”, ponieważ pt-table-sync może znaleźć różnice,
ale wiele osób używa „--replikacji”, jeśli na przykład regularnie sumuje sumę kontrolną, używając pt-table-
sumę kontrolną, a następnie napraw różnice w razie potrzeby za pomocą pt-table-sync. Jeśli nie jesteś pewien, przeczytaj każdy z nich
dokładnie zapoznaj się z dokumentacją narzędzia i podejmij decyzję samodzielnie lub skonsultuj się ze specjalistą.

Niezależnie od tego, czy użyto opcji „--replicate”, czy nie, musisz określić, do których hostów chcesz się udać
synchronizacja. Istnieją dwa sposoby: z „--sync-to-master” lub bez. Określanie
„--sync-to-master” powoduje, że pt-table-sync oczekuje jednego i jedynego podrzędnego DSN w wierszu poleceń.
Narzędzie automatycznie wykryje mastera slave'a i zsynchronizuje go tak, aby zawierał dane
taki sam jak jego mistrz. Osiąga się to poprzez dokonanie zmian w pliku głównym, a następnie
przejść przez replikację i zaktualizować urządzenie podrzędne, aby usunąć różnice. Be ostrożny
chociaż: chociaż ta opcja określa i synchronizuje jednego urządzenia podrzędnego, jeśli istnieją inne urządzenia podrzędne
na tym samym urządzeniu głównym, otrzymają poprzez replikację zmiany przeznaczone dla urządzenia podrzędnego
które próbujesz zsynchronizować.

Alternatywnie, jeśli nie określisz „--sync-to-master”, pierwszy numer DSN podany w pliku
wiersz poleceń jest hostem źródłowym. Zawsze jest tylko jeden host źródłowy. Jeśli ty też tego nie robisz
określ „--replicate”, musisz określić co najmniej jedno inne DSN jako miejsce docelowe
gospodarz. Może istnieć jeden lub więcej hostów docelowych. Hosty źródłowe i docelowe muszą być
niezależny; nie mogą znajdować się w tej samej topologii replikacji. pt-table-sync umrze
błąd, jeśli wykryje, że host docelowy jest urządzeniem podrzędnym, ponieważ zapisano zmiany
bezpośrednio do hostów docelowych (a pisanie bezpośrednio do urządzeń slave nie jest bezpieczne). Lub, jeśli ty
określ „--replicate” (ale nie „--sync-to-master”), a następnie pt-table-sync oczekuje jednego i tylko
jedno główne DSN w wierszu poleceń. Narzędzie automatycznie odkryje wszystkich mistrzów
slave i zsynchronizować je z masterem. Jest to jedyny sposób na synchronizację kilku (wszystkich) urządzeń podrzędnych
raz (ponieważ „--sync-to-master” określa tylko jednego urządzenie podrzędne).

Każdy host w wierszu poleceń jest określony jako DSN. Pierwszy DSN (lub tylko DSN w przypadku przypadków
jak „--sync-to-master”) zapewnia wartości domyślne dla innych DSN, niezależnie od tego, czy są to inne DSN
są określone w wierszu poleceń lub automatycznie wykrywane przez narzędzie. Zatem w tym przykładzie

pt-table-sync --execute h=host1,u=msandbox,p=msandbox h=host2

DSN hosta 2 dziedziczy części DSN „u” i „p” od DSN hosta 1. Użyj
opcję „--explain-hosts”, aby zobaczyć, jak pt-table-sync zinterpretuje numery DSN podane na serwerze
wiersz poleceń.

WYDAJNOŚĆ


Jeśli określisz opcję „--verbose”, zobaczysz informacje o różnicach
pomiędzy stołami. Na każdą tabelę przypada jeden wiersz. Każdy serwer drukowany jest osobno. Dla
przykład,

# Synchronizacja h=host1,D=test,t=test1
# USUŃ ZAMIEŃ WSTAW AKTUALIZUJ ALGORYTM START KONIEC WYJDŹ BAZA DANYCH.TABELA
# 0 0 3 0 Kawałek 13:00:00 13:00:17 2 test.test1

Tabela test.test1 na hoście1 wymagała 3 instrukcji „INSERT” do synchronizacji i użyła metody
Algorytm fragmentów (patrz „ALGORYTMY”). Operacja synchronizacji tej tabeli rozpoczęła się o godzinie 13:00:00
i zakończył się 17 sekund później (czasy wzięte z „TERAZ()” na hoście źródłowym). Ponieważ
znaleziono różnice, jego „STATUS WYJŚCIA” wynosił 2.

Jeśli określisz opcję „--print”, zobaczysz rzeczywiste instrukcje SQL, które skrypt
używa do synchronizacji tabeli, jeśli określono również „--execute”.

Jeśli chcesz zobaczyć instrukcje SQL używane przez pt-table-sync do wybierania fragmentów,
półbajty, wiersze itp., a następnie określ „--print” raz i „--verbose” dwa razy. Bądź ostrożny
chociaż: może to wydrukować wiele instrukcji SQL.

Istnieją przypadki, w których nie można zastosować żadnej kombinacji instrukcji „INSERT”, „UPDATE” lub „DELETE”.
rozwiązuj różnice bez naruszania jakiegoś unikalnego klucza. Załóżmy na przykład, że istnieje
klucz podstawowy w kolumnie a i klucz unikalny w kolumnie b. W takim razie nie ma możliwości ich zsynchronizowania
dwie tabele z prostymi instrukcjami UPDATE:

+---+---+ +---+---+
| | b | | | b |
+---+---+ +---+---+
| 1 | 2 | | 1 | 1 |
| 2 | 1 | | 2 | 2 |
+---+---+ +---+---+

Narzędzie w tym przypadku przepisuje zapytania na „DELETE” i „REPLACE”. Dzieje się to automatycznie
obsługiwane po pierwszym naruszeniu indeksu, więc nie musisz się tym martwić.

Zachowaj ostrożność podczas używania pt-table-sync w dowolnej konfiguracji master-master. Replikacja mistrz-mistrz
jest z natury trudne i łatwo o pomyłkę. Musisz mieć pewność, że używasz
narzędzie prawidłowo do replikacji master-master. Zobacz „SYNOPSIS”, aby zapoznać się z przeglądem
prawidłowe użycie.

Należy także zachować ostrożność w przypadku tabel, które mają ograniczenia klucza obcego z opcją „ON DELETE” lub „ON
UPDATE”, ponieważ mogą one powodować niezamierzone zmiany w tabelach podrzędnych. Zobacz
„--[nie]sprawdź tabele-podrzędne”.

Ogólnie rzecz biorąc, to narzędzie najlepiej sprawdza się, gdy tabele mają klucz podstawowy lub unikalny indeks.
Chociaż może synchronizować dane w tabelach pozbawionych klucza podstawowego lub unikalnego indeksu, może to zrobić
najlepiej zsynchronizować te dane w inny sposób.

REPLIKACJA BEZPIECZEŃSTWO


Ogólnie rzecz biorąc, bezpieczna synchronizacja replikacji master i slave jest nietrywialnym problemem.
Należy przemyśleć wiele różnych kwestii, takich jak inne procesy zmieniające dane,
próbujesz zmienić dane na urządzeniu podrzędnym, niezależnie od tego, czy miejscem docelowym i źródłem jest master-master
para i wiele więcej.

Ogólnie rzecz biorąc, bezpiecznym sposobem jest zmiana danych na urządzeniu głównym i pozostawienie zmian
przepływają przez replikację do urządzenia podrzędnego, tak jak inne zmiany. Działa to jednak tylko wtedy, gdy
istnieje możliwość WYMIANY na stół na masterze. REPLACE działa tylko wtedy, gdy istnieje
unikalny indeks w tabeli (w przeciwnym razie działa jak zwykły INSERT).

Jeśli Twoja tabela ma unikalne klucze, powinieneś użyć „--sync-to-master” i/lub „--replicate”
opcje synchronizacji urządzenia podrzędnego z jego urządzeniem głównym. To na ogół będzie działać właściwie. Gdy
na stole nie ma unikalnego klucza, nie ma innego wyjścia, jak tylko zmienić dane na stole
slave, a pt-table-sync wykryje, że próbujesz to zrobić. Będzie narzekać i
die, chyba że określisz „--no-check-slave” (zobacz „--[no]check-slave”).

Jeśli synchronizujesz tabelę bez klucza podstawowego lub unikalnego w parze master-master, ty
musi zmienić dane na serwerze docelowym. Dlatego musisz określić
„--no-bin-log” dla bezpieczeństwa (zobacz „--[no]bin-log”). Jeśli tego nie zrobisz, zmiany, których dokonasz
serwer docelowy zreplikuje się z powrotem do serwera źródłowego i zmieni tam dane!

Ogólnie bezpieczną rzeczą do zrobienia w przypadku pary master-master jest użycie opcji „--sync-to-master”
opcję, aby nie zmieniać danych na serwerze docelowym. Będziesz także musiał
określ „--no-check-slave”, aby zapobiec narzekaniu przez pt-table-sync, że zmienia dane
na niewolniku.

ALGORYTMY


pt-table-sync ma ogólną strukturę synchronizacji danych, która wykorzystuje różne algorytmy do wyszukiwania
różnice. Narzędzie automatycznie wybiera najlepszy algorytm dla każdej tabeli na podstawie
indeksy, typy kolumn i preferencje algorytmów określone przez „--algorithms”. The
dostępne są następujące algorytmy, wymienione w domyślnej kolejności preferencji:

Kawałek
Znajduje indeks, którego pierwsza kolumna jest liczbowa (w tym typy daty i godziny) oraz
dzieli zakres wartości kolumny na fragmenty wierszy w przybliżeniu „--chunk-size”.
Synchronizuje fragment na raz poprzez sumę kontrolną całego fragmentu. Jeśli fragment różni się na
source i miejsce docelowe, sumuje wiersze każdego fragmentu z osobna, aby znaleźć wiersze, które
różnić się.

Jest to efektywne, gdy kolumna ma wystarczającą liczność, aby fragmenty się skończyły
o właściwym rozmiarze.

Początkowa suma kontrolna na porcję jest dość mała i powoduje minimalny ruch w sieci
i zużycie pamięci. Jeśli konieczne jest sprawdzenie wierszy fragmentu, tylko klucz podstawowy
kolumny i suma kontrolna są przesyłane przez sieć, a nie cały wiersz. Jeśli jest rząd
okaże się inny, cały wiersz zostanie pobrany, ale nie wcześniej.

Należy pamiętać, że ten algorytm nie będzie działał w przypadku dzielenia kolumny znaków, w której znajdują się wszystkie wartości
zacznij od tego samego znaku. W takim przypadku narzędzie zakończy działanie i zasugeruje wybranie pliku
inny algorytm.

Skubać
Znajduje indeks i podnosi go w kawałkach o stałym rozmiarze w wierszach „--chunk-size”,
przy użyciu algorytmu bez cofania (więcej informacji na temat tego algorytmu można znaleźć w pt-archiver). To
jest bardzo podobny do „Chunk”, ale zamiast wstępnego obliczania granic każdego z nich
fragmentu tabeli w oparciu o liczebność indeksu, używa „LIMIT” do zdefiniowania każdego półbajtu
górny limit i górny limit poprzedniego półbajtu, aby zdefiniować dolny limit.

Działa to etapowo: jedno zapytanie znajduje wiersz, który zdefiniuje górną część następnego półbajtu
granicy, a następne zapytanie sumuje cały półbajt. Jeśli skubanie jest inne
pomiędzy źródłem a miejscem docelowym, bada skubanie rząd po rzędzie, tak jak „Kawałek”
robi.

Grupuj według
Wybiera całą tabelę pogrupowaną według wszystkich kolumn z dodaną kolumną COUNT(*).
Porównuje wszystkie kolumny i jeśli są takie same, porównuje wartość kolumny COUNT(*) z wartością
określić, ile wierszy należy wstawić lub usunąć w miejscu docelowym. Działa na stołach
bez klucza podstawowego ani unikalnego indeksu.

Strumień
Wybiera całą tabelę w jednym dużym strumieniu i porównuje wszystkie kolumny. Zaznacza wszystko
kolumny. Znacznie mniej wydajny niż inne algorytmy, ale działa, gdy ich nie ma
odpowiedni dla nich indeks.

Plany na przyszłość
Możliwości dla przyszłych algorytmów to TempTable (co pierwotnie nazywałem oddolnym
we wcześniejszych wersjach tego narzędzia), DrillDown (co pierwotnie nazywałem odgórnym) oraz
GroupByPrefix (podobnie jak działa SqlYOG Job Agent). Każdy algorytm ma mocne strony
i słabości. Jeśli chcesz wdrożyć swoją ulubioną technikę wyszukiwania
Zgadzam się, że istnieją różnice między dwoma źródłami danych na możliwie różnych serwerach
pomoc. Algorytmy opierają się na prostym interfejsie, dzięki czemu pisanie jest dość łatwe
Twój własny.

DWUKIERUNKOWE SYNCHRONIZOWANIE


Synchronizacja dwukierunkowa to nowa, eksperymentalna funkcja. Aby działało niezawodnie, istnieją
szereg rygorystycznych ograniczeń:

* działa tylko podczas synchronizacji jednego serwera z innymi niezależnymi serwerami
* nie działa w żaden sposób z replikacją
* wymaga, aby tabele można było podzielić na fragmenty za pomocą algorytmu Chunk
* nie jest siecią N-kierunkową, tylko dwukierunkową pomiędzy dwoma serwerami jednocześnie
* nie obsługuje zmian DELETE

Załóżmy na przykład, że mamy trzy serwery: c1, r1, r2. c1 jest serwerem centralnym, a
pseudo-master do innych serwerów (tj. r1 i r2 nie są urządzeniami podrzędnymi c1). r1 i r2 są
zdalne serwery. Wiersze w tabeli foo są aktualizowane i wstawiane na wszystkich trzech serwerach oraz we
chcesz zsynchronizować wszystkie zmiany pomiędzy wszystkimi serwerami. Tabela foo ma kolumny:

id int KLUCZ PODSTAWOWY
Automatyczna aktualizacja sygnatury czasowej ts
imię Varchar

Stosowane są przesunięcia automatycznego przyrostu, aby nowe wiersze z dowolnego serwera nie powodowały konfliktów
Wartości klucza podstawowego (id). Ogólnie rzecz biorąc, pobierane są nowsze wiersze, określone w kolumnie ts
pierwszeństwo w przypadku znalezienia tego samego, ale innego wiersza podczas synchronizacji dwukierunkowej. "To samo
ale różne” oznacza, że ​​dwa wiersze mają tę samą wartość klucza podstawowego (id), ale inną
wartości dla innej kolumny, na przykład kolumny nazwy w tym przykładzie. Takie same, ale inne
konflikty rozwiązuje się poprzez „konflikt”. Konflikt porównuje jakąś kolumnę konkurujących
wiersze, aby wyłonić „zwycięzcę”. Zwycięski wiersz staje się źródłem i wykorzystywane są jego wartości
aby zaktualizować drugi wiersz.

Istnieją subtelne różnice między trzema kolumnami używanymi do osiągnięcia synchronizacji dwukierunkowej
które powinieneś znać: kolumna fragmentów („--chunk-column”), kolumna(y) porównawcza(e)
(„--kolumny”) i kolumnę konfliktu („--kolumna-konfliktu”). Używana jest tylko kolumna fragment
porcjować stół; np. „GDZIE id >= 5 ORAZ id < 10”. Kawałki są sumowane i kiedy
sumy kontrolne fragmentu ujawniają różnicę, narzędzie wybiera wiersze w tym fragmencie i sumy kontrolne
„-kolumny” dla każdego wiersza. Jeśli suma kontrolna kolumny jest różna, wiersze mają jedną lub więcej
sprzeczne wartości kolumn. W tradycyjnej synchronizacji jednokierunkowej konflikt jest kwestią dyskusyjną
punkt, ponieważ można go rozwiązać po prostu aktualizując cały wiersz docelowy za pomocą
wartości wiersza źródłowego. Jednak w przypadku synchronizacji dwukierunkowej kolumna „--conflikt” (w
zgodnie z inną listą opcji „--conflikt-*” poniżej) jest porównywany w celu ustalenia, które
wiersz jest „poprawny” lub „miarodajny”; ten wiersz staje się „źródłem”.

Aby całkowicie zsynchronizować wszystkie trzy serwery, wymagane są dwa przebiegi synchronizacji pt-table. Pierwszy
run synchronizuje c1 i r1, następnie synchronizuje c1 i r2, łącznie ze wszystkimi zmianami z r1. W tym momencie c1
i r2 są całkowicie zsynchronizowane, ale r1 nie ma żadnych zmian w stosunku do r2, ponieważ c1 tego nie zrobiło
mieć te zmiany po zsynchronizowaniu go i r1. Dlatego potrzebny jest drugi przebieg, który synchronizuje
serwery w tej samej kolejności, ale tym razem, gdy c1 i r1 są zsynchronizowane, r1 otrzymuje zmiany r2.

Narzędzie nie synchronizuje N-kierunkowo, tylko dwukierunkowo pomiędzy pierwszym numerem DSN podanym na stronie
wiersz poleceń i każdy kolejny DSN po kolei. Zatem narzędzie w tym przykładzie zostanie uruchomione
dwa razy jak:

pt-table-sync --dwukierunkowy h=c1 h=r1 h=r2

Opcja „--bilateral” włącza tę funkcję i powoduje przeprowadzanie różnych kontroli poprawności
wykonane. Musisz określić inne opcje, które informują pt-table-sync, jak rozwiązać problem
konflikty dla tych samych, ale różnych wierszy. Te opcje to:

* --kolumna-konfliktu
* --porównanie konfliktów
* --wartość-konfliktu
* --próg konfliktu
* --błąd-konfliktu"> (opcjonalnie)

Użyj „--print”, aby przetestować tę opcję przed „--execute”. Wydrukowane instrukcje SQL będą
dodaj komentarze informujące, na którym hoście instrukcja zostanie wykonana, jeśli jej użyjesz
"--wykonać".

Uwaga techniczna: pierwszy DSN jest zawsze serwerem „pozostawionym”, podobnie jak pozostałe DSN
zawsze „właściwy” serwer. Ponieważ każdy serwer może stać się źródłem lub miejscem docelowym, tak jest
mylące jest myśleć o nich jako o „src” i „dst”. Dlatego też określa się je ogólnie
jak lewy i prawy. Łatwo to zapamiętać, ponieważ pierwszy numer DSN znajduje się zawsze po lewej stronie
nazw DSN innych serwerów w wierszu poleceń.

EXIT STATUS


Poniżej znajdują się statusy wyjścia (zwane także wartościami zwrotnymi lub kodami powrotu), gdy pt-
synchronizacja tabeli kończy się i kończy.

ZNACZENIE STATUSU
====== ============================================ ===========
0 Sukces.
1 Błąd wewnętrzny.
2 Co najmniej jeden stół różnił się miejscem docelowym.
3 Połączenie 1 i 2.

OPCJE


Określ co najmniej jedną z opcji „--print”, „--execute” lub „--dry-run”.

„--gdzie” i „--replikacja” wzajemnie się wykluczają.

To narzędzie akceptuje dodatkowe argumenty wiersza poleceń. Zapoznaj się z „SKŁADNIĄ” i zastosowaniem
informacje o szczegóły.

--algorytmy
typ: ciąg; domyślnie: Kawałek, Nibble, GroupBy, Strumień

Algorytm używany przy porównywaniu tabel, w preferowanej kolejności.

Dla każdej tabeli pt-table-sync sprawdzi, czy tabelę można zsynchronizować z podanym
algorytmy w podanej kolejności. Pierwszy algorytm, który może zsynchronizować
stół jest używany. Patrz „ALGORYTMY”.

--zapytaj-przepustka
Pytaj o hasło podczas łączenia się z MySQL.

--dwukierunkowy
Włącz synchronizację dwukierunkową pomiędzy pierwszym i kolejnymi hostami.

Aby uzyskać więcej informacji, zobacz „SYNCHRONIZACJA DWUKIERUNKOWA”.

--[nie]log-bin
domyślnie: tak

Zaloguj się do dziennika binarnego („SET SQL_LOG_BIN=1”).

Określenie „--no-bin-log” spowoduje „SET SQL_LOG_BIN=0”.

--bufor-w-mysql
Poinstruuj MySQL, aby buforował zapytania w swojej pamięci.

Ta opcja dodaje opcję „SQL_BUFFER_RESULT” do zapytań porównawczych. Ten
powoduje, że MySQL wykonuje zapytania i umieszcza je wewnętrznie w tabeli tymczasowej
przed wysłaniem wyników z powrotem do pt-table-sync. Zaletą tej strategii jest
że pt-table-sync może pobierać żądane wiersze bez zużywania dużej ilości pamięci wewnątrz
Proces Perla, zwalniając blokady w tabeli MySQL (aby zmniejszyć rywalizację z
inne zapytania). Wadą jest to, że zużywa więcej pamięci na serwerze MySQL
zamiast.

Prawdopodobnie chcesz także pozostawić opcję „--[no]buffer-to-client” włączoną, ponieważ buforowanie
do tabeli tymczasowej, a następnie pobranie tego wszystkiego do pamięci Perla jest prawdopodobnie głupie
rzecz do zrobienia. Ta opcja jest najbardziej przydatna w przypadku algorytmów GroupBy i Stream, które
może pobrać dużo danych z serwera.

--[nie]bufor do klienta
domyślnie: tak

Pobieraj wiersze jeden po drugim z MySQL podczas porównywania.

Ta opcja włącza opcję „mysql_use_result”, która powoduje, że MySQL przechowuje wybrane wiersze
serwer, dopóki narzędzie ich nie pobierze. Dzięki temu narzędzie zużywa mniej pamięci, ale
może dłużej blokować wiersze na serwerze.

Jeśli ta opcja zostanie wyłączona poprzez określenie „--no-buffer-to-client”, wówczas
Stosowane jest „mysql_store_result”, co powoduje, że MySQL wysyła wszystkie wybrane wiersze do narzędzia
natychmiast. Może to spowodować, że „kursor” wyników będzie otwarty przez krótszy czas
na serwerze, ale jeśli tabele są duże, i tak może to zająć dużo czasu i używać
cała twoja pamięć.

W przypadku większości nietrywialnych rozmiarów danych warto pozostawić tę opcję włączoną.

Ta opcja jest wyłączona, gdy używana jest opcja „--dwukierunkowa”.

--zestaw znaków
krótka forma: -A; typ: ciąg

Domyślny zestaw znaków. Jeśli wartość to utf8, ustawia tryb bin Perla na STDOUT na utf8,
przekazuje opcję mysql_enable_utf8 do DBD::mysql i uruchamia SET NAMES UTF8 po
połączenie z MySQL. Każda inna wartość ustawia binmode na STDOUT bez warstwy utf8,
i uruchamia SET NAMES po połączeniu z MySQL.

--[nie]sprawdź tabele-podrzędne
domyślnie: tak

Sprawdź, czy „--execute” nie wpłynie niekorzystnie na tabele podrzędne. Kiedy „--zamień”,
określono „--replicate” lub „--sync-to-master”, narzędzie może synchronizować tabele za pomocą
Instrukcje „ZAMIEŃ”. Jeśli synchronizowana tabela ma tabele podrzędne z opcją „ON DELETE
CASCADE”, „ON UPDATE CASCADE” lub „ON UPDATE SET NULL”, narzędzie wypisuje błąd i
pomija tabelę, ponieważ „REPLACE” zmienia się na „DELETE”, a następnie „INSERT”, więc „DELETE” zostanie
kaskadowo do tabeli podrzędnej i usuń jej wiersze. W najgorszym przypadku może to zostać usunięte
wszystkie wiersze w tabelach podrzędnych!

Określ „--no-check-child-tables”, aby wyłączyć tę kontrolę. Aby całkowicie uniknąć
wpływające na tabele podrzędne, określ także „--no-foreign-key-checks”, aby MySQL tego nie zrobił
kaskaduj wszelkie operacje z tabel nadrzędnych do tabel podrzędnych.

To sprawdzenie jest wykonywane tylko wtedy, gdy „--execute” i jedna z opcji „--replace”, „--replicate” lub
Określono „--sync-to-master”. „--print” nie sprawdza tabel podrzędnych.

Komunikat o błędzie drukuje tylko pierwszą znalezioną tabelę podrzędną z komunikatem „ON DELETE CASCADE”,
Ograniczenie klucza obcego „ON UPDATE CASCADE” lub „ON UPDATE SET NULL”. Może być
inne tabele podrzędne, których dotyczy problem.

--[nie]kontroler
domyślnie: tak

Za pomocą polecenia „--sync-to-master” spróbuj sprawdzić, czy wykryty element główny jest prawdziwym wzorcem.

--[nie]check-slave
domyślnie: tak

Sprawdź, czy serwer docelowy jest serwerem podrzędnym.

Jeśli serwer docelowy jest serwerem podrzędnym, wprowadzanie na nim zmian jest generalnie niebezpieczne.
Czasami jednak trzeba; „--replace” nie zadziała, jeśli nie istnieje unikalny indeks,
na przykład, więc w tym scenariuszu nie można wprowadzać zmian na serwerze głównym. Domyślnie pt-
table-sync będzie narzekał, jeśli spróbujesz zmienić dane na urządzeniu podrzędnym. Sprecyzować
„--no-check-slave”, aby wyłączyć tę kontrolę. Używaj go na własne ryzyko.

--[nie]wyzwalacze sprawdzające
domyślnie: tak

Sprawdź, czy w tabeli docelowej nie zdefiniowano żadnych wyzwalaczy.

Wyzwalacze zostały wprowadzone w MySQL v5.0.2, dlatego w starszych wersjach tej opcji nie ma
efekt, ponieważ wyzwalacze nie będą sprawdzane.

--kolumna-kawałek
typ: ciąg

Podziel tabelę na tę kolumnę.

--indeks-fragmentu
typ: ciąg

Podziel tabelę za pomocą tego indeksu.

--rozmiar-fragmentu
typ: ciąg; domyślnie: 1000

Liczba wierszy lub rozmiar danych na porcję.

Rozmiar każdego fragmentu wierszy dla algorytmów „Chunk” i „Nibble”. Rozmiar może
może być liczbą wierszy lub rozmiarem danych. Rozmiary danych są określone przyrostkiem
k=kibibajty, M=mebibajty, G=gibibajty. Rozmiary danych są konwertowane na liczbę wierszy
dzieląc przez średnią długość wiersza.

--kolumny
krótka forma: -c; typ: tablica

Porównaj tę listę kolumn rozdzielonych przecinkami.

--konfig
typ: Tablica

Przeczytaj tę oddzieloną przecinkami listę plików konfiguracyjnych; jeśli jest określony, musi to być pierwszy
opcja w wierszu poleceń.

--kolumna-konfliktu
typ: ciąg

Porównaj tę kolumnę, jeśli wiersze powodują konflikt podczas synchronizacji „--dwukierunkowej”.

Gdy zostanie znaleziony ten sam, ale inny wiersz, wartość tej kolumny w każdym wierszu wynosi
porównywane według „--confliktu-porównania”, „--konfliktu-wartości” i
„--conflikt-threshold”, aby określić, który wiersz zawiera prawidłowe dane i staje się
źródło. Kolumna może być dowolnego typu, dla którego istnieje odpowiedni
„--conflikt-porównanie” (dotyczy to prawie wszystkich typów z wyjątkiem na przykład obiektów BLOB).

Ta opcja działa tylko z opcją „--dwukierunkową”. Aby uzyskać więcej informacji, zobacz „SYNCHRONIZACJA DWUKIERUNKOWA”.
informacje.

--porównanie konfliktów
typ: ciąg

Wybierz kolumnę „--conflikt” z tą właściwością jako źródłem.

Ta opcja wpływa na sposób wyświetlania wartości „--conflikt-kolumny” w wierszach będących w konflikcie
porównane. Możliwe porównania to jedno z poniższych MAGIC_comparisons:

najnowsze|najstarsze|największe|najmniejsze|równe|dopasowania

PORÓWNANIE WYBIERA WIERSZ Z
========== ======================================== =================
najnowszy Najnowsza tymczasowa wartość kolumny-konfliktu
najstarsza Najstarsza tymczasowa wartość kolumny-konfliktu
największa Największa wartość liczbowa „--konfliktu-kolumny
najmniej Najmniejsza liczbowa --konfliktowa wartość kolumny
równa się --konfliktowi wartość kolumny równa --konfliktowi wartość
pasuje do wartości kolumny-konfliktu pasującej do wzorca wyrażenia regularnego Perla
--wartość-konfliktu

Ta opcja działa tylko z opcją „--dwukierunkową”. Aby uzyskać więcej informacji, zobacz „SYNCHRONIZACJA DWUKIERUNKOWA”.
informacje.

--błąd-konfliktu
typ: ciąg; domyślnie: ostrzegaj

Jak zgłaszać nierozwiązywalne konflikty i błędy konfliktowe

Ta opcja zmienia sposób powiadamiania użytkownika, gdy nie można rozwiązać konfliktu lub
powoduje jakiś błąd. Możliwe wartości to:

* ostrzegaj: Wydrukuj ostrzeżenie dla STDERR o nierozwiązywalnym konflikcie
* die: Giń, zatrzymaj synchronizację i wydrukuj ostrzeżenie do STDERR

Ta opcja działa tylko z opcją „--dwukierunkową”. Aby uzyskać więcej informacji, zobacz „SYNCHRONIZACJA DWUKIERUNKOWA”.
informacje.

--próg konfliktu
typ: ciąg

Kwota, o jaką jedna „kolumna--konfliktu” musi przekraczać drugą.

„Próg--konfliktu” zapobiega rozwiązaniu konfliktu, jeśli jest on absolutny
różnica między dwiema wartościami „--conflikt-kolumny” jest mniejsza niż ta wartość. Dla
na przykład, jeśli dwie kolumny „--konfliktu” mają wartości znaczników czasu „2009-12-01 12:00:00” i
„2009-12-01 12:05:00” różnica wynosi 5 minut. Jeśli ustawiono „--conflikt-threshold”.
do „5m” konflikt zostanie rozwiązany, ale jeśli „--conflash-threshold” zostanie ustawiony na „6m”
konflikt nie zostanie rozwiązany, ponieważ różnica nie jest większa lub równa
do 6 minut. W tym drugim przypadku „--conflikt-error” zgłosi awarię.

Ta opcja działa tylko z opcją „--dwukierunkową”. Aby uzyskać więcej informacji, zobacz „SYNCHRONIZACJA DWUKIERUNKOWA”.
informacje.

--wartość-konfliktu
typ: ciąg

Użyj tej wartości do pewnego „--confliktu-porównania”.

Ta opcja podaje wartość „równa się” i „dopasowuje” „--conflikt-porównanie”.

Ta opcja działa tylko z opcją „--dwukierunkową”. Aby uzyskać więcej informacji, zobacz „SYNCHRONIZACJA DWUKIERUNKOWA”.
informacje.

--bazy danych
krótka forma: -d; typ: hasz

Synchronizuj tylko tę listę baz danych rozdzielonych przecinkami.

Częstym żądaniem jest synchronizacja tabel z jednej bazy danych z tabelami z innej bazy danych
na tym samym lub innym serwerze. Nie jest to jeszcze możliwe. „--databases” nie wystarczy
to i nie można tego zrobić z częścią D DSN, ponieważ w przypadku braku a
table name zakłada, że ​​cały serwer powinien być zsynchronizowany i tylko część D będzie sterowana
domyślna baza danych połączenia.

--domyślny-plik
krótka forma: -F; typ: ciąg

Odczytaj tylko opcje mysql z podanego pliku. Musisz podać bezwzględną nazwę ścieżki.

--próba
Przeanalizuj, wybierz algorytm synchronizacji, którego chcesz użyć, wydrukuj i wyjdź.

Oznacza „--verbose”, dzięki czemu można zobaczyć wyniki. Wyniki znajdują się na tym samym wyjściu
format, który zobaczysz po uruchomieniu narzędzia, ale będą tam zera
dotyczy wierszy. Dzieje się tak, ponieważ narzędzie faktycznie wykonuje działanie, ale zatrzymuje się przed nim
porównuje dowolne dane i zwraca tylko zera. Zera nie oznaczają braku zmian
być zrobionym.

--silniki
krótka forma: -e; typ: hasz

Synchronizuj tylko tę rozdzieloną przecinkami listę silników pamięci masowej.

--wykonać
Wykonuj zapytania, aby tabele zawierały identyczne dane.

Ta opcja powoduje, że pt-table-sync faktycznie synchronizuje dane tabeli, wykonując wszystkie zapytania
utworzony w celu rozwiązania różnic w tabelach. Dlatego, dotychczasowy stoły będzie be zmieniony!
Jeśli nie określisz także „--verbose”, zmiany zostaną wprowadzone po cichu. Jeśli to
nie jest tym, czego chcesz, zobacz „--print” lub „--dry-run”.

--wyjaśnij-gospodarzy
Wydrukuj informacje o połączeniu i wyjdź.

Wydrukuj listę hostów, z którymi połączy się pt-table-sync, wraz ze wszystkimi różnymi
opcje połączenia i wyjdź.

--float-precyzja
typ: wewn

Precyzja dla konwersji liczb na ciągi „FLOAT” i „DOUBLE”. Powoduje FLOAT i
wartości DOUBLE należy zaokrąglić do określonej liczby cyfr po przecinku,
z OKRĄGŁY() funkcja w MySQL. Może to pomóc uniknąć niezgodności sum kontrolnych z powodu
różne reprezentacje zmiennoprzecinkowe tych samych wartości w różnych MySQL
wersje i sprzęt. Domyślnie nie ma zaokrągleń; wartości są konwertowane na
struny wg ZŁĄCZ() funkcji, a MySQL wybiera reprezentację łańcuchową. Jeśli ty
podaj np. wartość 2, to wartości 1.008 i 1.009 zostaną zaokrąglone do
1.01, a suma kontrolna będzie równa.

--[nie]sprawdzanie kluczy obcych
domyślnie: tak

Włącz sprawdzanie klucza obcego („SET FOREIGN_KEY_CHECKS=1”).

Określenie „--no-foreign-key-checks” spowoduje „SET FOREIGN_KEY_CHECKS=0”.

--funkcjonować
typ: ciąg

Której funkcji skrótu chcesz używać do sum kontrolnych.

Wartość domyślna to „CRC32”. Inne dobre opcje to „MD5” i „SHA1”. Jeśli masz
zainstalował funkcję zdefiniowaną przez użytkownika „FNV_64”, „pt-table-sync” wykryje ją i
wolę go używać, ponieważ jest znacznie szybszy niż wbudowane. Możesz także użyć
MURMUR_HASH, jeśli zainstalowałeś tę funkcję zdefiniowaną przez użytkownika. Jedno i drugie
dystrybuowany za pomocą Maatkit. Zobacz sumę kontrolną pt-table, aby uzyskać więcej informacji i testów porównawczych.

--help
Pokaż pomoc i wyjdź.

--[nie]hex-blob
domyślnie: tak

Kolumny „HEX()”, „BLOB”, „TEKST” i „BINARY”.

Kiedy pobierane są dane wierszy ze źródła w celu utworzenia zapytań w celu synchronizacji danych (tj
zapytania widziane z „--print” i wykonywane przez „--execute”), kolumny binarne są zawijane
in KLĄTWA() więc dane binarne nie generują nieprawidłowej instrukcji SQL. Możesz
wyłącz tę opcję, ale prawdopodobnie nie powinieneś.

--gospodarz
krótka forma: -h; typ: ciąg

Połącz się z hostem.

--ignore-kolumny
typ: Hash

Ignoruj ​​tę rozdzieloną przecinkami listę nazw kolumn w porównaniach.

Ta opcja powoduje, że kolumny nie będą porównywane. Jeśli jednak określony zostanie wiersz
różnią się między tabelami, wszystkie kolumny w tym wierszu zostaną zsynchronizowane, niezależnie od tego. (Nie jest
obecnie możliwe jest wykluczenie kolumn z samego procesu synchronizacji, tylko z
porównanie.)

--ignore-bazy danych
typ: Hash

Zignoruj ​​tę rozdzielaną przecinkami listę baz danych.

(systemowe bazy danych takie jak schemat_informacyjny i schemat_wydajności są ignorowane przez
domyślna)

--ignore-silniki
typ: Hash; domyślnie: FEDERATED, MRG_MyISAM

Zignoruj ​​​​tę oddzieloną przecinkami listę silników pamięci masowej.

--ignore-tables
typ: Hash

Zignoruj ​​tę listę tabel rozdzielonych przecinkami.

Nazwy tabel mogą być poprzedzone nazwą bazy danych.

--ignore-tables-regex
typ: ciąg znaków; grupa: filtr

Ignoruj ​​tabele, których nazwy pasują do wyrażenia regularnego Perla.

--[nie]wskazówka do indeksu
domyślnie: tak

Dodaj wskazówki FORCE/USE INDEX do zapytań dotyczących fragmentów i wierszy.

Domyślnie „pt-table-sync” dodaje wskazówkę FORCE/USE INDEX do każdej instrukcji SQL w celu wymuszenia
MySQL do korzystania z indeksu wybranego przez algorytm synchronizacji lub określonego przez
„--indeks-porcji”. Zwykle jest to dobra rzecz, ale w rzadkich przypadkach indeks może nie być
najlepsze dla zapytania, dzięki czemu można pominąć wskazówkę dotyczącą indeksu, określając
„--no-index-hint” i pozwól MySQL wybrać indeks.

Nie ma to wpływu na zapytania drukowane przez „--print”; wpływa tylko na fragment i
zapytania wierszowe używane przez „pt-table-sync” do wybierania i porównywania wierszy.

--Zamek
typ: wewn

Blokuj tabele: 0=brak, 1=na cykl synchronizacji, 2=na tabelę lub 3=globalnie.

Używa to „BLOKOWANIA TABEL”. Może to zapobiec zmianie stołów w trakcie Twojej obecności
badając je. Możliwe wartości są następujące:

WARTOŚĆ ZNACZENIE
===== ============================================= ==========
0 Nigdy nie zamykaj stołów.
1 Zablokuj i odblokuj raz na cykl synchronizacji (zgodnie z implementacją
przez algorytm synchronizacji). To jest najbardziej szczegółowe
dostępny poziom blokady. Na przykład Kawałek
algorytm zablokuje każdy fragment C rzędy, a potem
odblokuj je, jeśli są takie same w źródle i pliku
miejsce docelowe, zanim przejdziesz do następnego fragmentu.
2 Zablokuj i odblokuj przed i po każdym stole.
3 Zablokuj i odblokuj raz dla każdego zsynchronizowanego serwera (DSN).
C .

Urządzenie podrzędne replikacji nigdy nie jest blokowane, jeśli jest ustawione „--replicate” lub „--sync-to-master”.
określone, ponieważ teoretycznie zablokowanie tabeli na serwerze głównym powinno uniemożliwić jakiekolwiek zmiany
od odbywania się. (Nie zmieniasz danych na swoim urządzeniu slave, prawda?) Jeśli „--wait” jest
podane, urządzenie główne (źródło) jest zablokowane, a następnie narzędzie czeka, aż urządzenie podrzędne nadrobi zaległości
do mistrza przed kontynuowaniem.

Jeśli określono „--transaction”, „BLOKADA TABEL” nie jest używana. Zamiast tego zablokuj i odblokuj
realizowane są poprzez rozpoczynanie i zatwierdzanie transakcji. Wyjątkiem jest jeśli
„--blokada” to 3.

Jeśli określono „--no-transaction”, wówczas dla dowolnej wartości zostanie użyte „BLOKADA TABEL”.
"--zamek". Zobacz „--[brak]transakcji”.

--zablokuj i zmień nazwę
Zablokuj tabelę źródłową i docelową, zsynchronizuj, a następnie zamień nazwy. Jest to przydatne jako
mniej blokujące ALTER TABLE, gdy tabele są ze sobą w miarę zsynchronizowane
(które możesz wykonać na wiele sposobów, w tym zrzucić i przeładować
lub nawet coś takiego jak pt-archiver). Wymaga dokładnie dwóch DSN i zakłada, że ​​są one dostępne
znajdują się na tym samym serwerze, więc nie czeka na replikację itp. Stoły są
zablokowane za pomocą LOCK TABLES.

--hasło
krótka forma: -p; typ: ciąg

Hasło do użycia podczas łączenia. Jeśli hasło zawiera przecinki, należy je zmienić
z odwrotnym ukośnikiem: "egzamin\,ple"

--pid
typ: ciąg

Utwórz podany plik PID. Narzędzie nie uruchomi się, jeśli plik PID już istnieje i
PID, który zawiera, jest inny niż aktualny PID. Jeśli jednak plik PID
istnieje, a PID, który zawiera, już nie działa, narzędzie nadpisze PID
plik z aktualnym PID. Plik PID jest usuwany automatycznie po zamknięciu narzędzia.

--Port
krótka forma: -P; typ: wewn

Numer portu używany do połączenia.

--wydrukować
Wydrukuj zapytania, które rozwiążą różnice.

Jeśli nie ufasz „pt-table-sync” lub po prostu chcesz zobaczyć, co zrobi, jest to
dobry sposób na bezpieczeństwo. Te zapytania są prawidłowym kodem SQL i możesz je uruchomić samodzielnie, jeśli chcesz
chcesz ręcznie zsynchronizować tabele.

--metoda-rekurencji
typ: tablica; domyślnie: lista procesów, hosty

Preferowana metoda rekurencji używana do znajdowania niewolników.

Możliwe metody to:

ZASTOSOWANIA METOD
=========== ==================
lista procesów POKAŻ LISTA PROCESÓW
hosty POKAŻ HOSTÓW NIEWOLNYCH
brak Nie znajduj niewolników

Preferowana jest metoda listy procesów, ponieważ metoda SHOW SLAVE HOSTS nie jest niezawodna.
Jednak metoda hosts jest wymagana, jeśli serwer używa niestandardowego portu (nie
3306). Zwykle pt-table-sync postępuje właściwie i znajduje niewolników, ale możesz to zrobić
podaj preferowaną metodę, która zostanie zastosowana w pierwszej kolejności. Jeśli nie znajdzie żadnych niewolników,
zostaną wypróbowane inne metody.

--wymienić
Zapisz wszystkie instrukcje „INSERT” i „UPDATE” jako „REPLACE”.

Jest to automatycznie włączane w razie potrzeby, gdy występują unikalne naruszenia indeksu.

--replika
typ: ciąg

Synchronizuj tabele wymienione w tej tabeli jako różne.

Określa, że ​​„pt-table-sync” powinien sprawdzić określoną tabelę w celu znalezienia danych
różni się. Tabela jest dokładnie taka sama jak argument o tej samej nazwie dla pt-table-
suma kontrolna Oznacza to, że zawiera rekordy, które różnią się tabelami (i zakresami wartości).
pomiędzy panem i niewolnikiem.

Dla każdej tabeli i zakresu wartości, które pokazują różnice między wzorcem a
slave, „pt-table-checksum” zsynchronizuje tę tabelę z odpowiednią klauzulą ​​„WHERE”,
swojemu panu.

To automatycznie ustawia „--wait” na 60 i powoduje wprowadzenie zmian na urządzeniu głównym
zamiast niewolnika.

Jeśli określono „--sync-to-master”, narzędzie przyjmie, że jest to serwer, który podałeś
urządzenie podrzędne i jak zwykle połącz się z urządzeniem głównym w celu synchronizacji.

W przeciwnym razie spróbuje użyć „POKAŻ LISTĘ PROCESÓW”, aby znaleźć urządzenia podrzędne na Twoim serwerze
określony. Jeśli nie będzie w stanie znaleźć żadnych urządzeń podrzędnych poprzez „POKAŻ LISTĘ PROCESÓW”, sprawdzi to
Zamiast tego „POKAŻ HOSTĘ PODRZĘDNĄ”. Musisz skonfigurować „hosta raportu” każdego urządzenia podrzędnego,
„port-report” i inne opcje, aby to działało poprawnie. Po znalezieniu niewolników tak się stanie
sprawdź określoną tabelę na każdym urządzeniu podrzędnym, aby znaleźć dane, które wymagają synchronizacji, oraz
zsynchronizować.

Narzędzie najpierw sprawdza kopię wzorcową tabeli, zakładając, że jest nią kopia główna
potencjalnie także niewolnikiem. Każda tabela pokazująca różnice będzie NIE be
zsynchronizowane na urządzeniach podrzędnych. Załóżmy na przykład, że replikacja jest skonfigurowana jako A->B,
B->C, B->D. Załóżmy, że użyjesz tego argumentu i określisz serwer B. Narzędzie to zrobi
sprawdź kopię tabeli serwera B. Jeśli wygląda na to, że dane serwera B są w tabeli
„test.tbl1” różni się od kopii serwera A, narzędzie nie zsynchronizuje tej tabeli
serwery C i D.

--set-vars
typ: Tablica

Ustaw zmienne MySQL na tej rozdzielonej przecinkami liście par „zmienna=wartość”.

Domyślnie zestawy narzędzi:

oczekiwanie_czasu oczekiwania = 10000

Zmienne określone w wierszu poleceń zastępują te wartości domyślne. Na przykład,
określenie „--set-vars wait_timeout=500” zastępuje domyślną wartość 10000.

Narzędzie drukuje ostrzeżenie i kontynuuje pracę, jeśli nie można ustawić zmiennej.

--gniazdo elektryczne
krótkie formy; typ: ciąg

Plik gniazda używany do połączenia.

--sync-to-master
Traktuj DSN jako urządzenie podrzędne i synchronizuj je z urządzeniem głównym.

Traktuj określony serwer jako serwer podrzędny. Sprawdź „POKAŻ STATUS SLAVE”, połącz się z
master serwera i traktuj mastera jako źródło, a slave jako
miejsce docelowe. Powoduje wprowadzenie zmian w pliku głównym. Ustawia „--wait” na 60 by
domyślnie ustawia „--lock” na 1 i domyślnie wyłącza „--[no]transaction”.
Zobacz także „--replicate”, które zmienia zachowanie tej opcji.

--tabele
krótka forma: -t; typ: hasz

Synchronizuj tylko tę listę tabel rozdzielonych przecinkami.

Nazwy tabel mogą być poprzedzone nazwą bazy danych.

--przekroczenie limitu czasu-ok
Kontynuuj, jeśli „--wait” nie powiedzie się.

Jeśli określisz „--wait”, a urządzenie podrzędne nie dogoni wcześniej pozycji urządzenia głównego
upłynie limit czasu oczekiwania, domyślnym zachowaniem jest przerwanie. Ta opcja powoduje, że narzędzie zostaje zachowane
i tak idę. Ostrzeżenie: jeśli próbujesz uzyskać spójne porównanie między
dwóch serwerów, prawdopodobnie nie chcesz kontynuować pracy po przekroczeniu limitu czasu.

--[nie]transakcja
Używaj transakcji zamiast „BLOKUJ TABELE”.

Szczegółowość rozpoczynania i zatwierdzania transakcji jest kontrolowana przez „--lock”.
Opcja ta jest domyślnie włączona, ale ponieważ opcja „--lock” jest domyślnie wyłączona, nie ma takiej opcji
efekt.

Większość opcji włączających blokowanie domyślnie wyłącza również transakcje, więc jeśli chcesz
aby korzystać z blokowania transakcyjnego (poprzez „BLOKADA W TRYBIE UDOSTĘPNIANIA” i „FOR AKTUALIZACJA”, musisz
określ wyraźnie „--transakcję”.

Jeśli nie określisz wyraźnie „--transaction”, „pt-table-sync” podejmie decyzję o per-
podstawie tabeli, czy używać transakcji, czy blokad tabel. Obecnie korzysta
transakcje w tabelach InnoDB i blokady tabel we wszystkich innych.

Jeśli określono „--no-transaction”, wówczas „pt-table-sync” nie będzie używać transakcji w
all (nawet dla tabel InnoDB), a blokowanie jest kontrolowane przez „--lock”.

Jeśli ta opcja jest włączona, jawnie lub niejawnie, ustawiany jest poziom izolacji transakcji
„POWTARZALNY ODCZYT” i transakcje rozpoczynają się „ZE SPÓJNĄ MIGAWKĄ”.

--przycinać
Kolumny „TRIM()” „VARCHAR” w trybach „BIT_XOR” i „ACCUM”. Pomaga przy porównywaniu MySQL
4.1 do >= 5.0.

Jest to przydatne, gdy nie przejmujesz się różnicami spacji końcowych między MySQL
wersje, które różnią się obsługą końcowych spacji. MySQL 5.0 i nowsze wszystkie
zachowują końcowe spacje w „VARCHAR”, podczas gdy poprzednie wersje je usuwały.

--[nie]unikalne kontrole
domyślnie: tak

Włącz unikalne sprawdzanie kluczy („SET UNIQUE_CHECKS=1”).

Określenie „--no-unique-checks” spowoduje „SET UNIQUE_CHECKS=0”.

--użytkownik
krótka forma: -u; typ: ciąg

Użytkownik do logowania, jeśli nie jest aktualnym użytkownikiem.

--gadatliwy
krótka forma: -v; kumulacyjne: tak

Wydrukuj wyniki operacji synchronizacji.

Aby uzyskać więcej informacji na temat wyników, zobacz „WYJŚCIE”.

--wersja
Pokaż wersję i wyjdź.

--[nie]sprawdzanie wersji
domyślnie: tak

Sprawdź najnowszą wersję Percona Toolkit, MySQL i innych programów.

Jest to standardowa funkcja „automatycznego sprawdzania aktualizacji” z dwoma dodatkowymi
cechy. Najpierw narzędzie sprawdza wersję innych programów w systemie lokalnym w
dodatek do własnej wersji. Na przykład sprawdza wersję każdego serwera MySQL
łączy się z Perlem i modułem Perla DBD::mysql. Po drugie, sprawdza i ostrzega
o wersjach ze znanymi problemami. Na przykład MySQL 5.5.25 miał krytyczny błąd i
został ponownie wydany jako 5.5.25a.

Wszelkie aktualizacje lub znane problemy są drukowane na STDOUT przed normalnym wyjściem narzędzia.
Ta funkcja nigdy nie powinna zakłócać normalnej pracy narzędzia.

Po więcej informacji odwiedź .

--czekać
krótka forma: -w; typ: czas

Jak długo trzeba czekać, aż niewolnicy dogonią swego pana.

Przed porównaniem spraw, aby urządzenie główne poczekało, aż urządzenie podrzędne nadrobi zaległości w replikacji
stoły. Wartość to liczba sekund oczekiwania przed upływem limitu czasu (patrz także
„--przekroczenie limitu czasu OK”). Domyślnie ustawia „--lock” na 1 i „--[no]transaction” na 0. Jeśli ty
zobaczyć błąd taki jak następujący,

MASTER_POS_WAIT zwrócił -1

Oznacza to, że limit czasu został przekroczony i należy go zwiększyć.

Na domyślną wartość tej opcji mają wpływ inne opcje. Aby zobaczyć, jaka jest wartość
w efekcie uruchom z „--help”.

Aby całkowicie wyłączyć oczekiwanie (z wyjątkiem blokad), określ „--wait” 0. Pomaga to, kiedy
urządzenie podrzędne ma opóźnienia w tabelach, które nie są synchronizowane.

--gdzie
typ: ciąg

Klauzula „WHERE” ograniczająca synchronizację do części tabeli.

--[nie]porcja zerowa
domyślnie: tak

Dodaj fragment dla wierszy zawierających wartości zerowe lub równoważne zerom. Wpływ ma tylko wtedy, gdy
Określono „--chunk-size”. Celem fragmentu zerowego jest przechwycenie
potencjalnie duża liczba wartości zerowych, które mogłyby zrównoważyć wielkość pierwszej
kawałek. Na przykład, jeśli do znaku bez znaku wstawiono wiele liczb ujemnych
integer, powodując zapisanie ich jako zer, a następnie te wartości zerowe są przechwytywane
przez fragment zerowy zamiast pierwszego fragmentu i wszystkie jego niezerowe wartości.

dsn OPCJE


Te opcje DSN są używane do tworzenia DSN. Każda opcja ma postać „opcja=wartość”.
W opcjach rozróżniana jest wielkość liter, więc P i p nie są tą samą opcją. Nie może być
spacja przed lub po znaku „=”, a jeśli wartość zawiera spację, należy ją umieścić w cudzysłowie.
Opcje DSN są oddzielone przecinkami. Zobacz stronę podręcznika percona-toolkit, aby uzyskać szczegółowe informacje.

· MA

dsn: zestaw znaków; kopia: tak

Domyślny zestaw znaków.

· D

dsn: baza danych; kopia: tak

Baza danych zawierająca tabelę do synchronizacji.

F

dsn: mysql_read_default_file; kopia: tak

Odczytaj tylko domyślne opcje z podanego pliku

· H

dsn: gospodarz; kopia: tak

Połącz się z hostem.

· P

dsn: hasło; kopia: tak

Hasło do użycia podczas łączenia. Jeśli hasło zawiera przecinki, należy je zmienić
z odwrotnym ukośnikiem: "egzamin\,ple"

· P

dsn: port; kopia: tak

Numer portu używany do połączenia.

· S

dsn: mysql_socket; kopia: tak

Plik gniazda używany do połączenia.

· T

kopia: tak

Tabela do synchronizacji.

· u

dsn: użytkownik; kopia: tak

Użytkownik do logowania, jeśli nie jest aktualnym użytkownikiem.

ŚRODOWISKO


Zmienna środowiskowa „PTDEBUG” umożliwia szczegółowe wyjście debugowania do STDERR. Umożliwić
debugowanie i przechwytywanie wszystkich danych wyjściowych do pliku, uruchom narzędzie takie jak:

PTDEBUG=1 synchronizacja-tabeli pt... > PLIK 2>&1

Uważaj: dane wyjściowe debugowania są obszerne i mogą wygenerować kilka megabajtów danych wyjściowych.

SYSTEM WYMAGANIA


Potrzebujesz Perla, DBI, DBD::mysql i kilku podstawowych pakietów, które powinny być zainstalowane w dowolnym
rozsądnie nowa wersja Perla.

Użyj pt-table-syncp online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad