Jest to polecenie pt-online-schema-changep, które można uruchomić u dostawcy bezpłatnego 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-online-schema-change — ZMIEŃ tabele bez ich blokowania.
STRESZCZENIE
Zastosowanie: pt-online-schema-change [OPCJE] DSN
pt-online-schema-change zmienia strukturę tabeli bez blokowania odczytu i zapisu.
Określ bazę danych i tabelę w DSN. Nie używaj tego narzędzia przed przeczytaniem jego
dokumentację i dokładnie sprawdzaj swoje kopie zapasowe.
Dodaj kolumnę do sakila.actor:
pt-online-schema-change --alter "DODAJ KOLUMNĘ c1 INT" D=sakila,t=aktor
Zmień sakila.actor na InnoDB, skutecznie wykonując OPTYMALIZUJ TABELĘ w trybie nieblokującym
fashion, ponieważ jest to już tabela InnoDB:
pt-online-schema-change --alter "ENGINE=InnoDB" D=sakila,t=aktor
RYZYKO
Percona Toolkit jest dojrzały, sprawdzony w prawdziwym świecie i dobrze przetestowany, ale cała baza danych
narzędzia mogą stanowić zagrożenie dla systemu i serwera bazy danych. Przed użyciem tego narzędzia
Proszę:
· 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
OPIS
pt-online-schema-change emuluje sposób, w jaki MySQL zmienia wewnętrznie tabele, ale działa
na kopii tabeli, którą chcesz zmienić. Oznacza to, że oryginalna tabela nie jest
zablokowany, a klienci mogą w dalszym ciągu czytać i zmieniać w nim dane.
pt-online-schema-change działa poprzez utworzenie pustej kopii tabeli, którą można zmieniać i modyfikować
według potrzeb, a następnie kopiuj wiersze z oryginalnej tabeli do nowej tabeli. Kiedy
kopia jest kompletna, usuwa oryginalną tabelę i zastępuje ją nową. Przez
domyślnie usuwa także oryginalną tabelę.
Proces kopiowania danych jest wykonywany na małych porcjach danych, których próba może być zróżnicowana
spraw, aby były wykonywane w określonym czasie (patrz „--chunk-time”). Ten proces jest bardzo
podobnie jak inne narzędzia, takie jak suma kontrolna pt-table. Wszelkie zmiany danych w
oryginalne tabele podczas kopiowania zostaną odzwierciedlone w nowej tabeli, ponieważ narzędzie
tworzy wyzwalacze w oryginalnej tabeli, aby zaktualizować odpowiednie wiersze w nowej tabeli.
Użycie wyzwalaczy oznacza, że narzędzie nie będzie działać, jeśli jakieś wyzwalacze są już zdefiniowane
na stole.
Kiedy narzędzie zakończy kopiowanie danych do nowej tabeli, użyje niepodzielnej operacji „ZMIEŃ NAZWĘ TABELI”
operacja jednoczesnej zmiany nazw oryginalnych i nowych tabel. Po zakończeniu tego
narzędzie upuszcza oryginalną tabelę.
Klucze obce komplikują działanie narzędzia i wprowadzają dodatkowe ryzyko. Technika
atomowej zmiany nazw oryginalnych i nowych tabel nie działa, gdy odnoszą się klucze obce
na stół. Narzędzie musi zaktualizować klucze obce, aby odnosiły się do nowej tabeli po schemacie
zmiana została zakończona. Narzędzie obsługuje dwie metody osiągnięcia tego celu. Możesz czytać
więcej na ten temat w dokumentacji „--alter-foreign-keys-method”.
Klucze obce powodują również pewne skutki uboczne. Stół finałowy będzie miał te same klucze obce
i indeksy jak w oryginalnej tabeli (chyba że określisz inaczej w pliku ALTER
instrukcja), ale nazwy obiektów można nieznacznie zmienić, aby uniknąć nazwy obiektu
kolizje w MySQL i InnoDB.
Ze względów bezpieczeństwa narzędzie nie modyfikuje tabeli, chyba że określisz opcję „--execute”,
która nie jest domyślnie włączona. Narzędzie obsługuje szereg innych środków zapobiegawczych
niechciane obciążenie lub inne problemy, w tym automatyczne wykrywanie replik, łączenie się
je i stosując następujące kontrole bezpieczeństwa:
· W większości przypadków narzędzie odmówi działania, chyba że zostanie podany KLUCZ PODSTAWOWY lub UNIKALNY INDEKS
obecne w tabeli. Aby uzyskać szczegółowe informacje, zobacz „--alter”.
· Narzędzie odmawia działania, jeśli wykryje filtry replikacyjne. Widzieć
„--[no]sprawdź filtry-replikacji”, aby uzyskać szczegółowe informacje.
· Narzędzie wstrzymuje operację kopiowania danych w przypadku wykrycia opóźnionych replik
w replikacji. Aby uzyskać szczegółowe informacje, zobacz „--max-lag”.
· Narzędzie wstrzymuje lub przerywa działanie w przypadku wykrycia zbyt dużego obciążenia serwera. Widzieć
„--max-load” i „--critical-load”, aby uzyskać szczegółowe informacje.
· Narzędzie ustawia „innodb_lock_wait_timeout=1” i (dla MySQL 5.5 i nowszych)
„lock_wait_timeout=60”, dzięki czemu istnieje większe prawdopodobieństwo, że stanie się ofiarą jakiejkolwiek blokady
sporu i jest mniej prawdopodobne, że zakłóci inne transakcje. Wartości te mogą być
zmienić, określając „--set-vars”.
· Narzędzie odmawia zmiany tabeli, jeśli odwołują się do niej ograniczenia klucza obcego, chyba że
podajesz „--alter-metoda-kluczy obcych”.
· Narzędzie nie może zmieniać tabel MyISAM w węzłach „Percona XtraDB Cluster”.
Perkona XtraDB Grupa
pt-online-schema-change działa z klastrem Percona XtraDB Cluster (PXC) 5.5.28-23.7 i nowszymi, ale
istnieją dwa ograniczenia: można zmieniać tylko tabele InnoDB i należy zastosować metodę „wsrep_OSU_method”
ustawić na „TOI” (całkowita izolacja zamówienia). Narzędzie kończy działanie z błędem, jeśli hostem jest a
węzeł klastra, a tabela to MyISAM lub jest konwertowana do MyISAM („ENGINE=MyISAM”), lub
jeśli „wsrep_OSU_method” nie jest „TOI”. Nie ma możliwości wyłączenia tych kontroli.
WYDAJNOŚĆ
Narzędzie wypisuje informacje o swoich działaniach na STDOUT, dzięki czemu możesz zobaczyć, co to jest
czyn. Podczas fazy kopiowania danych drukuje raporty „--progress” do STDERR. Możesz dostać
dodatkowe informacje, określając „--print”.
Jeśli określono „--statistics”, drukowany jest raport z licznikiem różnych zdarzeń wewnętrznych
koniec, jak:
# Liczba zdarzeń
# ====== =====
# WSTAW 1
OPCJE
„--dry-run” i „--execute” wzajemnie się wykluczają.
To narzędzie akceptuje dodatkowe argumenty wiersza poleceń. Zapoznaj się z „SKŁADNIĄ” i zastosowaniem
informacje o szczegóły.
--zmieniać
typ: ciąg
Modyfikacja schematu bez słów kluczowych ALTER TABLE. Możesz wykonać wiele
modyfikacje tabeli, określając je przecinkami. Proszę zapoznać się z MySQL
podręcznik dotyczący składni ALTER TABLE.
Obowiązują następujące ograniczenia, których próba spowoduje awarię narzędzia
nieprzewidywalne sposoby:
· W prawie wszystkich przypadkach KLUCZ PODSTAWOWY lub UNIKALNY INDEKS musi być obecny w pliku
tabela. Jest to konieczne, ponieważ narzędzie tworzy wyzwalacz DELETE, aby zachować plik
nowa tabela zaktualizowana podczas działania procesu.
Godnym uwagi wyjątkiem jest sytuacja, w której tworzony jest KLUCZ PODSTAWOWY lub UNIKALNY INDEX
Przede wszystkim system został opracowany kolumny jako część klauzuli ALTER; w takim przypadku użyje ich
kolumny dla wyzwalacza DELETE.
· Klauzuli „RENAME” nie można użyć do zmiany nazwy tabeli.
· Nazwy kolumn nie można zmieniać poprzez upuszczenie i ponowne dodanie z nową nazwą. Narzędzie
nie skopiuje danych z oryginalnej kolumny do nowej kolumny.
· Jeśli dodasz kolumnę bez wartości domyślnej i ustawisz ją na NIE NULL, narzędzie to zrobi
nie powiedzie się, ponieważ nie będzie próbował odgadnąć domyślnej wartości; Należy określić
domyślna.
· „UPUŚĆ KLUCZ OGRANICZNY nazwa_ograniczenia” wymaga raczej określenia „nazwa_ograniczenia”
niż prawdziwa „nazwa_ograniczenia”. Ze względu na ograniczenia w MySQL, pt-online-schema-
zmiana dodaje początkowe podkreślenie do nazw ograniczeń klucza obcego podczas tworzenia
nowy stół. Na przykład, aby usunąć to ograniczenie:
OGRANICZENIE `fk_foo` KLUCZ OBCY (`foo_id`) REFERENCJE `bar` (`foo_id`)
Musisz określić „--alter „UPUŚĆ KLUCZ ZAGRANICZNY _fk_foo””.
· Narzędzie nie korzysta z opcji „BLOKADA W TRYBIE UDOSTĘPNIANIA” w MySQL 5.0, ponieważ może to spowodować:
błąd slave, który przerywa replikację:
Zapytanie spowodowało różne błędy na urządzeniu głównym i urządzeniu podrzędnym. Błąd na masterze:
'Znaleziono zakleszczenie podczas próby uzyskania blokady; spróbuj ponownie uruchomić transakcję” (1213),
Błąd na urządzeniu podrzędnym: „brak błędu” (0). Domyślna baza danych: 'pt_osc'.
Zapytanie: „INSERT INTO pt_osc.t (id, c) VALUES („730”, „nowy wiersz”)”
Błąd występuje podczas konwersji tabeli MyISAM do InnoDB, ponieważ MyISAM nie jest
transakcyjne, ale InnoDB jest transakcyjne. MySQL 5.1 i nowsze obsługują ten przypadek
poprawnie, ale testowanie odtwarza błąd w 5% przypadków w przypadku MySQL 5.0.
Jest to błąd MySQL, podobny dohttp://bugs.mysql.com/bug.php?id=45694>, ale
w MySQL 5.0 nie ma poprawki ani obejścia. Bez „LOCK IN SHARE MODE”, testy
przechodzą przez 100% czasu, więc ryzyko utraty danych lub przerwania replikacji powinno być
nieistotny.
Be pewnie do zweryfikować dotychczasowy nowych stół if za pomocą MySQL 5.0 oraz 轉換 od MyISAM do
InnoDB!
--alter-metoda-kluczy obcych
typ: ciąg
Jak zmodyfikować klucze obce, aby odwoływały się do nowej tabeli. Klucze obce to
odniesienia do tabeli, które mają zostać zmienione, muszą być traktowane specjalnie, aby zapewnić, że zostaną one zmienione
nadal odwołuj się do właściwej tabeli. Gdy narzędzie zmieni nazwę oryginalnej tabeli na
niech nowy zajmie jego miejsce, klucze obce „podążają” za tabelą o zmienionej nazwie i muszą
zostać zmieniony tak, aby zamiast tego odwoływał się do nowej tabeli.
Narzędzie obsługuje dwie techniki umożliwiające osiągnięcie tego celu. Automatycznie znajduje plik „child
tabele”, które odwołują się do tabeli, która ma zostać zmieniona.
samochód
Automatycznie określ, która metoda jest najlepsza. Narzędzie wykorzystuje „rebuild_constraints”
jeśli to możliwe (szczegóły w opisie tej metody), a jeśli nie, to
używa „drop_swap”.
ograniczenia_odbudowy
Ta metoda wykorzystuje „ALTER TABLE” do usuwania i ponownego dodawania ograniczeń klucza obcego
odwołaj się do nowej tabeli. Jest to preferowana technika, chyba że istnieje jedna lub więcej z nich
tabele „podrzędne” są tak duże, że operacja „ALTER” zajęłaby zbyt dużo czasu. Narzędzie
określa to poprzez porównanie liczby wierszy w tabeli podrzędnej ze stawką at
którym narzędzie jest w stanie skopiować wiersze ze starej tabeli do nowej tabeli. Jeśli
narzędzie szacuje, że tabelę podrzędną można zmienić w krótszym czasie niż w przypadku
„--chunk-time”, wówczas zastosuje tę technikę. Na potrzeby oszacowania
czas potrzebny na modyfikację tabeli podrzędnej, narzędzie zwielokrotnia szybkość kopiowania wierszy
przez „--chunk-size-limit”, ponieważ „ALTER TABLE” MySQL jest zazwyczaj znacznie szybsza
niż zewnętrzny proces kopiowania wierszy.
Ze względu na ograniczenia w MySQL, klucze obce nie będą miały takich samych nazw po
ZMIEŃ to, co zrobili wcześniej. Narzędzie musi zmienić nazwę klucza obcego, gdy jest on używany
redefiniuje to, co dodaje do nazwy podkreślenie wiodące. W niektórych przypadkach MySQL
automatycznie zmienia również nazwy indeksów wymaganych dla klucza obcego.
drop_swap
Wyłącz sprawdzanie klucza obcego (FOREIGN_KEY_CHECKS=0), a następnie usuń oryginalną tabelę
przed zmianą nazwy nowej tabeli na jej miejsce. To różni się od normalnego
metoda zamiany starej i nowej tabeli, która wykorzystuje atomowe „ZMIEŃ NAZWĘ”.
niewykrywalne dla aplikacji klienckich.
Ta metoda jest szybsza i nie blokuje, ale jest bardziej ryzykowna z dwóch powodów.
Po pierwsze, przez krótki czas między usunięciem oryginalnej tabeli a zmianą nazwy pliku
tabela tymczasowa, tabela, która ma zostać zmieniona, po prostu nie istnieje, i zapytania
przeciwko niemu, spowoduje to błąd. Po drugie, jeśli wystąpi błąd i nowy
nie można zmienić nazwy tabeli na miejsce starej, wtedy jest na to za późno
przerwij, ponieważ stary stół zniknął na stałe.
Ta metoda wymusza „--no-swap-tables” i „--no-drop-old-table”.
Żaden
Ta metoda przypomina „drop_swap” bez „swap”. Wszelkie klucze obce
odniesienie do oryginalnej tabeli będzie teraz odnosić się do nieistniejącej tabeli. To będzie
zazwyczaj powodują naruszenia klucza obcego, które są widoczne w „SHOW ENGINE INNODB
STATUS”, podobny do następującego:
Próbuję dodać do indeksu krotkę `idx_fk_staff_id`:
KRÓTKA DANYCH: 2 pola;
0: długość 1; szesnastkowy 05; rosnąco ;;
1: długość 4; szesnastkowy 80000001; rosnąco ;;
Ale tabela nadrzędna `sakila`.`staff_old`
lub jego plik .ibd obecnie nie istnieje!
Dzieje się tak, ponieważ nazwa oryginalnej tabeli (w tym przypadku sakila.staff) została zmieniona na
sakila.staff_old i następnie upuszczony. Ta metoda obsługi ograniczeń klucza obcego
jest udostępniany, aby administrator bazy danych mógł wyłączyć wbudowane narzędzie
funkcjonalność, jeśli jest taka potrzeba.
--[nie]analizuj-przed-wymianą
domyślnie: tak
Wykonaj ANALYZE TABLE na nowej tabeli przed zamianą na starą. Domyślnie,
dzieje się tak tylko przy uruchomieniu MySQL 5.6 i nowszych, a „innodb_stats_persistent” jest
włączony. Określ opcję jawnie, aby ją włączyć lub wyłączyć niezależnie od MySQL
wersja i „innodb_stats_persistent”.
Pozwala to uniknąć potencjalnie poważnego problemu związanego ze statystykami optymalizatora InnoDB.
Jeśli alarmowana tabela jest zajęta, a narzędzie szybko się zakończy, nowa tabela to zrobi
nie mają statystyk optymalizatora po wymianie. Może to spowodować szybkie użycie indeksu
kwerendy wykonujące pełne skanowanie tabeli do czasu aktualizacji statystyk optymalizatora (zwykle po
10 sekund). Jeśli stół jest duży, a serwer bardzo zajęty, może to spowodować awarię.
--zapytaj-przepustka
Pytaj o hasło podczas łączenia się z MySQL.
--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ź-zmień
domyślnie: tak
Analizuje określony parametr „--alter” i próbuje ostrzec o możliwym niezamierzonym zachowaniu.
Obecnie sprawdza:
Zmiana nazwy kolumny
W poprzednich wersjach narzędzia zmiana nazwy kolumny na „ZMIEŃ NAZWĘ KOLUMNY
nowa_nazwa” doprowadziłaby do utraty danych w tej kolumnie. Narzędzie analizuje teraz plik
alter i próbuje wychwycić te przypadki, więc kolumny o zmienionych nazwach powinny mieć
te same dane co oryginały. Jednak kod, który to robi, nie jest pełnym kodem
przepalony parser SQL, więc powinieneś najpierw uruchomić narzędzie z „--dry-run” i „--print”
i sprawdź, czy poprawnie wykrywa kolumny o zmienionych nazwach.
UPUŚĆ KLUCZ PODSTAWOWY
Jeśli „--alter” zawiera „DROP PRIMARY KEY” (wielkość liter i spacje nie są uwzględniane), pojawi się ostrzeżenie
jest drukowane i narzędzie kończy działanie, chyba że określono „--dry-run”. Zmiana
klucz podstawowy może być niebezpieczny, ale narzędzie sobie z nim poradzi. wyzwalacze narzędzia,
szczególnie wyzwalacz DELETE, są najbardziej podatne na zmianę klucza podstawowego
ponieważ narzędzie woli używać klucza podstawowego do swoich wyzwalaczy. Powinieneś
najpierw uruchom narzędzie za pomocą „--dry-run” i „--print” i sprawdź, czy wyzwalacze są
skorygować.
--interwał sprawdzania
typ: czas; domyślnie: 1
Czas uśpienia między sprawdzaniem „--max-lag”.
--[nie]plan kontrolny
domyślnie: tak
Sprawdź plany wykonania zapytań pod kątem bezpieczeństwa. Domyślnie ta opcja powoduje uruchomienie narzędzia
WYJAŚNIJ przed uruchomieniem zapytań, których celem jest uzyskanie dostępu do niewielkiej ilości danych, ale
który mógłby uzyskać dostęp do wielu wierszy, jeśli MySQL wybierze zły plan wykonania. Należą do nich
zapytania w celu określenia granic porcji i samych zapytań dotyczących porcji. Jeśli się pojawi
że MySQL użyje złego planu wykonania zapytania, narzędzie pominie fragment pliku
tabela.
Narzędzie wykorzystuje kilka heurystyk do określenia, czy plan wykonania jest zły. The
po pierwsze, czy EXPLAIN informuje, że MySQL zamierza użyć żądanego indeksu w celu uzyskania dostępu
rzędy. Jeśli MySQL wybierze inny indeks, narzędzie uzna zapytanie za niebezpieczne.
Narzędzie sprawdza również, ile indeksu raportuje MySQL, który wykorzysta do
zapytanie. Dane wyjściowe EXPLAIN pokazują to w kolumnie key_len. Narzędzie zapamiętuje
największy widziany key_len i pomija fragmenty, w których MySQL zgłasza, że użyje mniejszego
przedrostek indeksu. Ta heurystyka może być rozumiana jako pomijanie fragmentów, które mają a
gorszy plan wykonania niż inne kawałki.
Narzędzie wyświetla ostrzeżenie przy pierwszym pominięciu fragmentu z powodu złego wykonania
plan w każdym stole. Kolejne fragmenty są pomijane po cichu, chociaż można je zobaczyć
liczbę pominiętych porcji w kolumnie POMINIĘTE w danych wyjściowych narzędzia.
Ta opcja dodaje trochę pracy konfiguracyjnej do każdej tabeli i porcji. Chociaż praca nie
uciążliwe dla MySQL, powoduje więcej podróży w obie strony do serwera, co zużywa
czas. Tworzenie zbyt małych kawałków spowoduje, że koszty ogólne staną się stosunkowo większe. To
Dlatego zaleca się, aby nie robić zbyt małych kawałków, ponieważ narzędzie może zająć
bardzo długi czas na ukończenie, jeśli to zrobisz.
--[nie]sprawdzanie-filtrów-replikacji
domyślnie: tak
Przerwij, jeśli na dowolnym serwerze ustawiono jakikolwiek filtr replikacji. Narzędzie szuka serwera
opcje filtrujące replikację, takie jak binlog_ignore_db i Replicate_do_db. Jeśli to
znajdzie taki filtr, przerywa działanie z błędem.
Jeśli repliki są skonfigurowane z jakimikolwiek opcjami filtrowania, należy uważać, aby tego nie robić
modyfikować dowolne bazy danych lub tabele istniejące na płycie głównej, a nie na replikach,
ponieważ może to spowodować niepowodzenie replikacji. Aby uzyskać więcej informacji na temat replikacji
zasady, zobaczhttp://dev.mysql.com/doc/en/replication-rules.html>.
--check-slave-lag
typ: ciąg
Wstrzymaj kopiowanie danych, aż opóźnienie tej repliki będzie mniejsze niż „--max-lag”. Wartość to A
DSN, który dziedziczy właściwości z opcji połączenia („--port”, „--user”,
itp.). Ta opcja zastępuje normalne zachowanie wyszukiwania i ciągłego
monitorowanie opóźnienia replikacji we WSZYSTKICH podłączonych replikach. Jeśli nie chcesz monitorować
WSZYSTKIE repliki, ale chcesz monitorować więcej niż jedną replikę, użyj opcji
DSN na opcję „--recursion-method” zamiast tej opcji.
--indeks-fragmentu
typ: ciąg
Preferuj ten indeks w przypadku tabel fragmentacyjnych. Domyślnie narzędzie wybiera najwięcej
odpowiedni indeks do porcjowania. Ta opcja umożliwia określenie indeksu, który ty
woleć. Jeśli indeks nie istnieje, narzędzie powróci do ustawień domyślnych
zachowanie przy wyborze indeksu. Narzędzie dodaje indeks do instrukcji SQL w pliku a
Klauzula „FORCE INDEX”. Zachowaj ostrożność podczas korzystania z tej opcji; może to spowodować zły wybór indeksu
powodować złe działanie.
--kolumny indeksu fragmentów
typ: wewn
Użyj tylko tylu skrajnych lewych kolumn „--chunk-index”. To działa tylko dla
indeksy złożone i jest przydatne w przypadkach, gdy błąd w optymalizatorze zapytań MySQL
(planner) powoduje, że skanuje duży zakres wierszy zamiast używać indeksu do lokalizacji
dokładnie punkt początkowy i końcowy. Ten problem czasami występuje w przypadku indeksów z
wiele kolumn, na przykład 4 lub więcej. W takim przypadku narzędzie może wydrukować ostrzeżenie
związane z opcją „--[no]check-plan”. Poinstruowanie narzędzia, aby używało tylko pierwszego
N kolumn indeksu to w niektórych przypadkach obejście błędu.
--rozmiar-fragmentu
typ: rozmiar; domyślnie: 1000
Liczba wierszy do wybrania dla każdego skopiowanego fragmentu. Dopuszczalne przyrostki to k, M, G.
Ta opcja może zastąpić domyślne zachowanie, które polega na dostosowaniu rozmiaru porcji
dynamicznie, aby spróbować sprawić, by fragmenty działały dokładnie w sekundach „--chunk-time”. Kiedy to
opcja nie jest ustawiona jawnie, jej wartość domyślna jest używana jako punkt wyjścia, ale później
że narzędzie ignoruje wartość tej opcji. Jeśli ustawisz tę opcję jawnie,
jednak wtedy wyłącza dynamiczne zachowanie dopasowania i próbuje utworzyć wszystkie porcje
dokładnie określoną liczbę wierszy.
Jest pewna subtelność: jeśli indeks porcji nie jest unikalny, to możliwe, że chunki
będzie większy od pożądanego. Na przykład, jeśli tabela jest podzielona przez indeks, który
zawiera 10,000 XNUMX danej wartości, nie ma możliwości napisania pasującej klauzuli WHERE
tylko 1,000 wartości, a ten fragment będzie miał co najmniej 10,000 XNUMX wierszy. taki
fragment prawdopodobnie zostanie pominięty z powodu „--chunk-size-limit”.
--granica-wielkości-fragmentu
typ: pływak; domyślnie: 4.0
Nie kopiuj fragmentów znacznie większych niż żądany rozmiar fragmentu.
Gdy tabela nie ma unikatowych indeksów, rozmiary porcji mogą być niedokładne. Ta opcja
określa maksymalny dopuszczalny limit niedokładności. Narzędzie używa Do
oszacuj, ile wierszy znajduje się w porcji. Jeśli to oszacowanie przekracza żądaną porcję
rozmiar razy limit, a następnie narzędzie pomija fragment.
Minimalna wartość tej opcji to 1, co oznacza, że żadna porcja nie może być większa niż
"--rozmiar-kawałka". Prawdopodobnie nie chcesz podawać 1, ponieważ wiersze zgłoszone przez
EXPLAIN to wartości szacunkowe, które mogą różnić się od rzeczywistej liczby wierszy w pliku
kawałek. Można wyłączyć sprawdzanie dużych porcji, podając wartość 0.
Narzędzie używa tej opcji również do określenia sposobu obsługi kluczy obcych, które się odwołują
tabela do zmiany. Aby uzyskać szczegółowe informacje, zobacz „--alter-foreign-keys-method”.
--kawałek-czas
typ: pływak; domyślnie: 0.5
Dostosuj dynamicznie rozmiar porcji, aby wykonanie każdego zapytania dotyczącego kopiowania danych trwało tak długo.
Narzędzie śledzi szybkość kopiowania (wiersze na sekundę) i dostosowuje rozmiar fragmentu po każdym
zapytanie kopiujące dane, tak że następne zapytanie zajmie tyle czasu (w sekundach).
wykonać. Utrzymuje wykładniczo malejącą średnią ruchomą zapytań na sekundę, więc
że jeśli wydajność serwera zmieni się z powodu zmian w obciążeniu serwera, narzędzie
szybko się dostosowuje.
Jeśli ta opcja jest ustawiona na zero, rozmiar porcji nie jest dostosowywany automatycznie, więc będzie to dotyczyło czasu wykonywania zapytań
będą się różnić, ale rozmiary fragmentów zapytań nie będą. Innym sposobem osiągnięcia tego samego jest określenie a
wartość „--chunk-size” jawnie, zamiast pozostawiać wartość domyślną.
--konfig
typ: Tablica
Przeczytaj tę oddzieloną przecinkami listę plików konfiguracyjnych; jeśli jest określony, musi to być pierwszy
opcja w wierszu poleceń.
--obciążenie krytyczne
typ: tablica; domyślnie: Threads_running=50
Sprawdź POKAŻ STATUS GLOBALNY po każdym fragmencie i przerwij, jeśli obciążenie jest zbyt duże. The
opcja akceptuje rozdzieloną przecinkami listę zmiennych stanu MySQL i progów. Jakiś
opcjonalnie po każdej zmiennej może następować „=MAX_VALUE” (lub „:MAX_VALUE”). Jeśli nie zostanie podany,
Narzędzie określa próg, sprawdzając bieżącą wartość przy uruchomieniu i podwajając ją.
Dalsze szczegóły znajdziesz w sekcji „--max-load”. Opcje te działają podobnie, z tą różnicą, że to
opcja spowoduje przerwanie działania narzędzia zamiast jego wstrzymania, a wartością domyślną jest
obliczane inaczej, jeśli nie zostanie określony żaden próg. Powodem tej opcji jest:
sprawdzenie bezpieczeństwa na wypadek, gdyby wyzwalacze na oryginalnej tabeli zwiększały obciążenie serwera
że powoduje to przestoje. Prawdopodobnie nie ma jednej wartości Threads_running
źle dla każdego serwera, ale domyślna wartość 50 wydaje się prawdopodobnie niedopuszczalnie wysoka
większości serwerów, wskazując, że operację należy natychmiast anulować.
--Baza danych
krótka forma: -D; typ: ciąg
Połącz się z tą bazą danych.
--domyślny silnik
Usuń „ENGINE” z nowej tabeli.
Domyślnie nowa tabela jest tworzona z tymi samymi opcjami tabeli, co tabela oryginalna,
więc jeśli oryginalna tabela używa InnoDB, nowa tabela będzie używać InnoDB. W niektórych
przypadkach związanych z replikacją, może to spowodować niezamierzone zmiany w replikach korzystających z a
inny silnik dla tej samej tabeli. Określenie tej opcji powoduje, że nowa tabela
zostać utworzone przy użyciu domyślnego silnika systemu.
--domyślny-plik
krótka forma: -F; typ: ciąg
Odczytaj tylko opcje mysql z podanego pliku. Musisz podać bezwzględną nazwę ścieżki.
--[nie]upuść-nową-tabelę
domyślnie: tak
Usuń nową tabelę, jeśli kopiowanie oryginalnej tabeli nie powiedzie się.
Określenie „--no-drop-new-table” i „--no-swap-tables” pozostawia nową, zmienioną kopię
tabeli bez modyfikowania oryginalnej tabeli. Zobacz „--nowa nazwa-tabeli”.
--no-drop-new-table nie działa z metodą zmiany kluczy obcych drop_swap.
--[nie]upuść-stary-stół
domyślnie: tak
Po zmianie nazwy usuń oryginalną tabelę. Po oryginalnym stole został
nazwa została pomyślnie zmieniona, aby nowa tabela zajęła jej miejsce, a jeśli nie ma błędów,
narzędzie domyślnie usuwa oryginalną tabelę. Jeśli pojawią się jakieś błędy, narzędzie opuści program
oryginalny stół na swoim miejscu.
Jeśli określono opcję „--no-swap-tables”, oznacza to, że nie ma żadnej starej tabeli do usunięcia.
--[nie]wyzwalacze upuszczenia
domyślnie: tak
Upuść wyzwalacze na starym stole. „--no-drop-triggers” wymusza „--no-drop-old-table”.
--próba
Utwórz i zmień nową tabelę, ale nie twórz wyzwalaczy, nie kopiuj danych ani nie zastępuj
oryginalny stół.
--wykonać
Wskaż, że przeczytałeś dokumentację i chcesz zmienić tabelę. Musisz
określ tę opcję, aby zmienić tabelę. Jeśli tego nie zrobisz, narzędzie będzie działać
kilka kontroli bezpieczeństwa i wyjście. Dzięki temu będziesz mieć pewność, że przeczytałeś dokumentację
i zrozumieć, jak korzystać z tego narzędzia. Jeśli nie przeczytałeś dokumentacji, zrób to
nie określaj tej opcji.
--siła
Opcja ta pomija potwierdzenie w przypadku użycia alter-foreign-keys-method = none ,
co mogłoby złamać ograniczenia klucza obcego.
--help
Pokaż pomoc i wyjdź.
--gospodarz
krótka forma: -h; typ: ciąg
Połącz się z hostem.
--max-przepływ-ctl
typ: float
Nieco podobne do --max-lag, ale dla klastrów PXC. Sprawdź średni czas spędzony w klastrze
pauzę dla kontroli przepływu i zatrzymaj narzędzie, jeśli przekroczy wskazaną wartość procentową
w opcji. Wartość 0 spowoduje wstrzymanie narzędzia w przypadku *dowolnej* kontroli przepływu
zostanie wykryta aktywność. Wartość domyślna to brak sprawdzania kontroli przepływu. Ta opcja jest dostępna
dla wersji PXC 5.6 lub wyższej.
--maksymalne opóźnienie
typ: czas; domyślnie: 1s
Wstrzymaj kopiowanie danych, aż opóźnienie wszystkich replik będzie mniejsze niż ta wartość. Po każdej dacie-
kopiuj zapytanie (każdy fragment), narzędzie sprawdza opóźnienie replikacji wszystkich replik do
z którym się łączy, używając Seconds_Behind_Master. Jeśli jakakolwiek replika jest opóźniona bardziej niż
wartość tej opcji, wówczas narzędzie przejdzie w stan uśpienia na „--check-interval” sekundy,
następnie sprawdź ponownie wszystkie repliki. Jeśli określisz „--check-slave-lag”, to tylko narzędzie
sprawdza ten serwer pod kątem opóźnień, a nie wszystkie serwery. Jeśli chcesz dokładnie kontrolować, które
serwerów monitorowanych przez narzędzie, użyj wartości DSN do „--recursion-method”.
Narzędzie czeka w nieskończoność, aż repliki przestaną się opóźniać. Jeśli jakakolwiek replika zostanie zatrzymana, plik
narzędzie czeka wiecznie, aż replika zostanie uruchomiona. Kopiowanie danych jest kontynuowane, gdy wszystkie
repliki działają i nie mają zbyt dużych opóźnień.
Narzędzie drukuje raporty z postępów w oczekiwaniu. Jeśli replika zostanie zatrzymana, drukuje a
raport z postępów natychmiast, a następnie ponownie w każdym interwale raportów z postępów.
--maksymalne obciążenie
typ: tablica; domyślnie: Threads_running=25
Sprawdź POKAŻ GLOBALNY STATUS po każdym kawałku i wstrzymaj, jeśli są jakieś zmienne statusu
wyższe niż ich progi. Opcja akceptuje listę MySQL rozdzieloną przecinkami
zmienne stanu. Po każdym może następować opcjonalny ciąg „=MAX_VALUE” (lub „:MAX_VALUE”)
zmienny. Jeśli nie zostanie podany, narzędzie określa próg na podstawie pomiaru prądu
wartości i zwiększenie jej o 20%.
Na przykład, jeśli chcesz, aby narzędzie wstrzymywało się, gdy Threads_connected osiągnie zbyt wysoki poziom, ty
można określić „Threads_connected”, a narzędzie sprawdzi bieżącą wartość, gdy to nastąpi
zaczyna działać i dodaj 20% do tej wartości. Jeśli bieżąca wartość wynosi 100, to narzędzie
zatrzyma się, gdy Threads_connected przekroczy 120 i wznowi pracę, gdy spadnie poniżej 120
Ponownie. Jeśli chcesz określić jawny próg, na przykład 110, możesz użyć dowolnego z nich
„Połączone_wątki:110” lub „Połączone_wątki=110”.
Celem tej opcji jest zapobieganie nadmiernemu obciążaniu narzędzia przez narzędzie
serwer. Jeśli zapytania dotyczące kopiowania danych są uciążliwe lub powodują oczekiwanie na blokadę, wtedy
inne zapytania na serwerze będą miały tendencję do blokowania się i ustawiania w kolejce. Zwykle powoduje to
Threads_running wzrośnie, a narzędzie może to wykryć, uruchamiając SHOW GLOBAL
STATUS natychmiast po zakończeniu każdego zapytania. Jeśli określisz dla tego próg
zmienną, możesz poinstruować narzędzie, aby czekało, aż zapytania będą działać normalnie
Ponownie. Nie zapobiegnie to jednak tworzeniu się kolejek; to tylko da serwerowi szansę
odpocząć od kolejki. Jeśli zauważysz kolejkę, najlepiej ją zmniejszyć
czas kawałka.
--nowa nazwa-tabeli
typ: ciąg; domyślnie: %T_nowy
Nowa nazwa tabeli przed jej zamianą. %T zostaje zastąpione oryginalną nazwą tabeli.
Gdy używane jest ustawienie domyślne, narzędzie dodaje do nazwy maksymalnie 10 „_” (podkreślenie), aby
znajdź unikalną nazwę tabeli. Jeśli określono nazwę tabeli, narzędzie nie dodaje jej przedrostka
z „_”, zatem tabela nie może istnieć.
--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.
--podłącz
typ: ciąg
Plik modułu Perla, który definiuje klasę „pt_online_schema_change_plugin”. Wtyczka
pozwala na napisanie modułu Perla, który może podłączyć się do wielu części pt-online-schema-
zmiana. Wymaga to dobrej znajomości konwencji Perla i Percona Toolkit, które
wykraczają poza zakres tej dokumentacji. Jeśli tak, skontaktuj się z firmą Percona
pytania lub potrzebujesz pomocy.
Więcej informacji można znaleźć w sekcji „WTYCZKA”.
--Port
krótka forma: -P; typ: wewn
Numer portu używany do połączenia.
--wydrukować
Wydrukuj instrukcje SQL na STDOUT. Określenie tej opcji pozwala zobaczyć większość
instrukcje, które narzędzie wykonuje. Możesz użyć tej opcji z "--dry-run", dla
przykład.
--postęp
typ: tablica; domyślnie: czas, 30
Drukuj raporty postępu do STDERR podczas kopiowania wierszy. Wartość jest oddzielona przecinkiem
lista składająca się z dwóch części. Pierwszą częścią może być wartość procentowa, czas lub iteracje; the
druga część określa jak często ma być drukowana aktualizacja, w procentach, sekundach,
lub liczba iteracji.
--cichy
skrócona forma: -q
Nie drukuj wiadomości na STDOUT (wyłącza „--progress”). Błędy i ostrzeżenia są
nadal drukowane do STDERR.
--rekurencja
typ: wewn
Liczba poziomów do powtórzenia w hierarchii podczas odnajdywania replik. Wartość domyślna to
nieskończony. Zobacz także „--metoda-rekurencji”.
--metoda-rekurencji
typ: tablica; domyślnie: lista procesów, hosty
Preferowana metoda rekurencji do wykrywania replik. Możliwe metody to:
ZASTOSOWANIA METOD
=========== ==================
lista procesów POKAŻ LISTA PROCESÓW
hosty POKAŻ HOSTÓW NIEWOLNYCH
dsn=DSN DSN z tabeli
brak Nie znajduj niewolników
Metoda Processlist jest domyślna, ponieważ SHOW SLAVE HOSTS nie jest niezawodna.
Jednak metoda hosts może działać lepiej, jeśli serwer używa niestandardowego portu (nie
3306). Narzędzie zwykle postępuje właściwie i znajduje wszystkie repliki, ale możesz dać
preferowaną metodą i zostanie ona zastosowana w pierwszej kolejności.
Metoda hosts wymaga skonfigurowania replik z parametrami report_host, report_port,
itd.
Metoda dsn jest szczególna: określa tabelę, z której odczytywane są inne ciągi DSN.
Określone DSN musi określać D i t lub t kwalifikowane przez bazę danych. Tabela DSN
powinien mieć następującą strukturę:
UTWÓRZ TABELĘ `dsns` (
`Id` int(11) NIE NULL AUTO_INCREMENT,
`identyfikator_rodzica` int(11) DOMYŚLNIE NULL,
`dsn` Varchar(255) NIE NULL,
KLUCZ PODSTAWOWY („id”)
);
Aby narzędzie monitorowało tylko hosty 10.10.1.16 i 10.10.1.17 pod kątem opóźnień replikacji,
wstaw do tabeli wartości „h=10.10.1.16” i „h=10.10.1.17”. Obecnie,
Nazwy DSN są uporządkowane według identyfikatora, ale w przeciwnym razie identyfikatory i identyfikator_rodzica są ignorowane.
--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
innodb_lock_wait_timeout=1
lock_wait_timeout=60
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.
--spać
typ: pływak; domyślnie: 0
Jak długo spać (w sekundach) po skopiowaniu każdego fragmentu. Ta opcja jest przydatna, gdy
dławienie przez „--max-lag” i „--max-load” nie jest możliwe. Mała, ułamkowa sekunda
należy użyć wartości, np. 0.1, w przeciwnym razie kopiowanie narzędzia może zająć bardzo dużo czasu
duże stoły.
--gniazdo elektryczne
krótkie formy; typ: ciąg
Plik gniazda używany do połączenia.
--Statystyka
Drukuj statystyki dotyczące liczników wewnętrznych. Jest to przydatne, aby zobaczyć, ile ostrzeżeń
zostały pominięte w porównaniu z liczbą INSERT.
--[no]tabele wymiany
domyślnie: tak
Zamień oryginalną tabelę z nową, zmienioną tabelą. Ten krok kończy proces online
proces zmiany schematu poprzez zastąpienie tabeli z nowym schematem
oryginalny stół. Oryginalna tabela staje się „starą tabelą”, a narzędzie ją usuwa
chyba że wyłączysz opcję „--[no]drop-old-table”.
--próbuje
typ: tablica
Ile razy należy próbować operacji krytycznych. Jeśli niektóre operacje nie powiodą się z powodu braku
błędów krytycznych, możliwych do naprawienia, narzędzie czeka i podejmuje ponowną próbę wykonania operacji. To są
operacje, które są ponawiane, z domyślną liczbą prób i czasem oczekiwania
pomiędzy próbami (w sekundach):
OPERACJA PRÓBUJE CZEKAĆ
=================== ===== ====
utwórz_wyzwalacze 10 1
drop_triggers 10 1
copy_rows 10 0.25
swap_tables 10 1
aktualizacja_zagranicznych_kluczy 10 1
analiza_tabela 10 1
Aby zmienić ustawienia domyślne, określ nowe wartości, takie jak:
--tries create_triggers:5:0.5,drop_triggers:5:0.5
To sprawia, że narzędzie spróbuje „create_triggers” i „drop_triggers” 5 razy z 0.5
drugie oczekiwanie pomiędzy próbami. Zatem format jest następujący:
operacja:próby:czekaj [,operacja:próby:czekaj]
Należy określić wszystkie trzy wartości.
Należy pamiętać, że na większość operacji wpływa tylko MySQL 5.5 i nowsze wersje
„lock_wait_timeout” (patrz „--set-vars”) z powodu blokad metadanych. „wiersze kopii”
Na operację wpływa w dowolnej wersji MySQL „innodb_lock_wait_timeout”.
W przypadku tworzenia i usuwania wyzwalaczy liczba prób dotyczy każdego „CREATE
TRIGGER” i „DROP TRIGGER” dla każdego wyzwalacza. W przypadku kopiowania wierszy liczba
prób dotyczy każdego fragmentu, a nie całej tabeli. Do zamiany tabel, liczba
prób zwykle ma zastosowanie raz, ponieważ zwykle jest tylko jedna „ZMIANA NAZWY TABELI”
oświadczenie. W przypadku odbudowy ograniczeń klucza obcego obowiązuje liczba prób
każda instrukcja („ALTER” dla „rebuild_constraints”
"--alter-metoda-kluczy-obcych"; inne instrukcje dla metody „drop_swap”).
Narzędzie ponawia każdą operację, jeśli wystąpią następujące błędy:
Limit czasu oczekiwania na blokadę (innodb_lock_wait_timeout i lock_wait_timeout)
Znaleziono zakleszczenie
Zapytanie zostało zakończone (KILL QUERY )
Połączenie zostało przerwane (KILL CONNECTION )
Utracono połączenie z MySQL
W przypadku utraconych i zerwanych połączeń narzędzie automatycznie połączy się ponownie.
Niepowodzenia i ponowne próby są rejestrowane w „--statystykach”.
--użytkownik
krótka forma: -u; typ: ciąg
Użytkownik do logowania, jeśli nie jest aktualnym użytkownikiem.
--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ź .
PODŁĄCZ
Plik określony przez "--plugin" musi definiować wywoływaną klasę (tzn. pakiet).
„pt_online_schema_change_plugin” z podprogramem „new()”. Narzędzie utworzy plik
instancję tej klasy i wywołaj wszystkie zdefiniowane przez nią hooki. Żadne haki nie są wymagane, ale a
Bez nich wtyczka nie jest zbyt użyteczna.
Te haki, w tej kolejności, są nazywane, jeśli są zdefiniowane:
startowych
przed_tworzeniem_nowej_tabeli
po_utworzeniu_nowej_tabeli
before_alter_new_table
after_alter_new_table
before_create_triggers
after_create_triggers
przed_kopią_wierszy
po_kopii_wierszach
before_swap_tables
after_swap_tables
before_update_foreign_keys
after_update_foreign_keys
before_drop_old_table
after_drop_old_table
before_drop_triggers
przed_wyjściem
get_slave_lag
Do każdego haka przekazywane są inne argumenty. Aby zobaczyć, które argumenty są przekazywane do haka,
wyszukaj nazwę haka w kodzie źródłowym narzędzia, na przykład:
# --hak wtyczki
if ( $plugin && $plugin->can('init') ) {
$plugin->init(
orig_tbl => $orig_tbl,
child_tables => $child_tables,
renamed_cols => $renamed_cols,
niewolnicy => $niewolnicy,
slave_lag_cxns => $ slave_lag_cxns,
);
}
Komentarz "# --plugin hook" poprzedza każde wywołanie hooka.
Jeśli masz pytania lub potrzebujesz pomocy, skontaktuj się z firmą Percona.
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 dla starej i nowej tabeli.
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
dsn: tabela; kopia: nie
Tabela do zmiany.
· 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 pt-zmiana-schematu-online... > 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.
To narzędzie działa tylko na MySQL 5.0.2 i nowszych wersjach, ponieważ wcześniejsze wersje tego nie robią
wsparcie wyzwalacze.
Skorzystaj z pt-online-schema-changep online, korzystając z usług onworks.net