Jaka jest różnica między XtraBackup a rsync?

11

Tak, zamierzam uruchomić oboje na nich obu ... Chciałbym jednak wiedzieć ...

  • Co robi XtraBackup ponad rsync -ac src dest?
  • Co jest takiego specjalnego w XtraBbackup?
  • W jaki sposób XtraBackup wchodzi w interakcje z mysqld?
randomx
źródło
1
To jedno z tych „słyszałem o XtraBackup, ale boję się zadawać” pytania dotyczące łamaczy lodu. Uwielbiam tego rodzaju pytania !!! +1 !!!
RolandoMySQLDBA
1
@RolandoMySQLDBA: Lubię prowokować do myślenia i zachęcać ludzi do dzielenia się wiedzą. W ten sposób stajemy się lepsi, prawda? Bycie samotnym strażnikiem nie jest zbyt zabawne. :-)
randomx

Odpowiedzi:

16

rsync to po prostu bajtowa kopia danych bajt po bajcie z miejsca na miejsce. Wykonałbyś wiele rsync do ostatniego rsync, co jest bardzo szybkie. Następnie wykonasz pełne zamknięcie MySQL i wykonasz jeszcze jedno rsync.

XtraBackup to kompleksowe narzędzie, które zachowuje się jak rsync, ale ma cel w życiu. Można rozpocząć kopiowanie wszystkich danych i obszarów tabel InnoDB. Ma możliwość wewnętrznego tworzenia punktów kontrolnych i wykonywania odzyskiwania po awarii w miejscu InnoDB, aby uzyskać idealną kopię zapasową w czasie. XtraBackup posiada również dodatkową funkcję, która pozwala na tworzenie przyrostowych kopii zapasowych. Kolejną dodatkową funkcją jest tworzenie plików dziennika InnoDB, również zbudowanych przez lokalne odzyskiwanie po awarii. Istnieje również oprogramowanie do owijania, które umożliwia również zamrożone kopiowanie tabel MyISAM.

Obie metody są świetne. XtraBackup po prostu implementuje funkcje transakcyjne InnoDB do większości początkowego kopiowania. Xtrabackup tworzy pliki, które można upuścić do istniejącej infrastruktury MySQL. Można powiedzieć, że XtraBackup zapewnia instrumentalną kopię zapasową i zmaterializowane, bardzo użyteczne pliki InnoDB.

Użycie rsync zmusza do wielokrotnego zarządzania procesem kopiowania i zamykania go za pomocą zamykania mysql, aby wymagać jednej interwencji rsync.

Używanie jednego nad drugim może być osobistą preferencją. Należy pamiętać o jednej rzeczy: XtraBackup tworzy kopie zapasowe nieco większe niż dane, które zostały skopiowane. Wybór metody pozostawiam czytelnikowi tego pytania.

Wolę rsync, ponieważ ma prostotę użycia, mogę określić konkretny punkt w czasie przed rozpoczęciem procesu, mam również całkowitą kontrolę nad blokowaniem mysqld lub wyłączaniem go, gdy taka kontrola może być wykonana i w dowolnej kolejności, którą wyznaczam .

Oba style tworzenia kopii zapasowych mają jedną wspólną cechę : dzięki XtraBackup rzeczywisty punkt w czasie jest ruchomym celem do momentu zakończenia procesu tworzenia kopii zapasowej i musisz zaufać XtraBackup (do tej pory 200 000 pobrań. Facebook jest jednym z największych użytkowników to zyskało duże zaufanie). Innymi słowy, jeśli uruchomię XtraBackup o północy, a tworzenie kopii zapasowej potrwa do 02:20, to faktyczny moment kopii zapasowej to 02:20. Użycie rsync ma ten sam problem z ruchomym celem, ponieważ musisz ręcznie wykonać wiele rsyncs, a następnie określić, kiedy wydać „zatrzymanie mysql usługi” przed ostatnim rsync.

Metody te różnią się tym, że mysqld musi zostać zamknięty przy użyciu metody rsync, podczas gdy XtraBackup działa niezależnie od mysqld. W rzeczywistości XtraBackup w ogóle nie wchodzi w interakcje z mysqld, z wyjątkiem sytuacji, gdy ma się do czynienia z tabelami MyISAM za pomocą oprogramowania do pakowania. XtraBackup próbuje zbudować w pełni funkcjonalne dane i pliki dziennika InnoDB przy użyciu operacji silnika pamięci InnoDB oddzielnych i niezależnych od mysqld.

Wyłączenie mysql jest bardzo potrzebne dla metody rsync z bardzo ważnego powodu: Pula buforów InnoDB może przechowywać „brudne strony”, które są danymi i indeksami (1 strona = 16 KB), które nie zostały zapisane z powrotem na dysk. Użycie rsync nie łapie zmian danych oczekujących w puli buforów InnoDB. Aby przyspieszyć zamknięcie mysqld dla ostatniego rsync, uruchom następujące polecenie:

SET GLOBAL innodb_max_dirty_pages_pct = 0;

To polecenie ograniczy liczbę brudnych stron do absolutnego minimum. To polecenie powinno zostać uruchomione około godzinę przed wykonaniem metody tworzenia kopii zapasowych rsync. Może to nawet pomóc XtraBackup, chociaż XtraBackup nie wymaga zamknięcia mysql.

RolandoMySQLDBA
źródło