{"id":21299,"date":"2026-09-11T15:08:03","date_gmt":"2026-09-11T13:08:03","guid":{"rendered":"https:\/\/webhosting.de\/mariadb-binary-logs-performance-logik\/"},"modified":"2026-09-11T15:08:03","modified_gmt":"2026-09-11T13:08:03","slug":"logi-binarne-mariadb-logika-dzialania","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/mariadb-binary-logs-performance-logik\/","title":{"rendered":"Dzienniki binarne MariaDB: budowa, zastosowanie i wydajno\u015b\u0107"},"content":{"rendered":"<p><strong>Dzienniki binarne MariaDB<\/strong> Rejestruj\u0105 ka\u017cd\u0105 operacj\u0119 zapisu i steruj\u0105 replikacj\u0105, odzyskiwaniem danych oraz audytem w instancjach produkcyjnych. Poka\u017c\u0119, w jaki spos\u00f3b struktura, formaty i nowe dzienniki binarne InnoDB wsp\u00f3\u0142dzia\u0142aj\u0105 ze sob\u0105, gdzie przynosz\u0105 korzy\u015bci oraz jakie ustawienia wp\u0142ywaj\u0105 na wydajno\u015b\u0107 w rzeczywistych obci\u0105\u017ceniach.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<ul>\n  <li><strong>Struktura<\/strong>: pliki, indeks, zdarzenia; wy\u015bwietlanie w postaci zwyk\u0142ego tekstu za pomoc\u0105 mariadb-binlog<\/li>\n  <li><strong>Formaty<\/strong>: Statement, Row, Mixed \u2013 wybierz opcj\u0119 odpowiedni\u0105 do obci\u0105\u017cenia<\/li>\n  <li><strong>Replikacja<\/strong>: Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 na pozycj\u0119 w stosunku do GTID oraz na kompatybilno\u015b\u0107<\/li>\n  <li><strong>Wydajno\u015b\u0107<\/strong>: Group Commit, strategie flushingu, operacje wej\u015bcia\/wyj\u015bcia w pami\u0119ci masowej<\/li>\n  <li><strong>Administracja<\/strong>: Rotacja, przechowywanie, analiza i rozwi\u0105zywanie problem\u00f3w<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb-binarylogs-1293.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Struktura: pliki, indeks i zdarzenia<\/h2>\n\n<p>Binlog sk\u0142ada si\u0119 z plik\u00f3w binlog oraz indeksu, kt\u00f3ry zachowuje kolejno\u015b\u0107 i umo\u017cliwia selektywne odczytywanie; to <strong>Plik indeksowy<\/strong> umo\u017cliwia planowanie zarz\u0105dzania. Ka\u017cdy plik przechowuje zdarzenia odzwierciedlaj\u0105ce operacje DML i DDL, w tym granice transakcji i metadane dla ka\u017cdego zdarzenia. W razie potrzeby odczytuj\u0119 te informacje za pomoc\u0105 <strong>mariadb-binlog<\/strong> i w ten spos\u00f3b uzyskuj\u0119 tekst jawny, kt\u00f3ry mo\u017cna \u0142atwo analizowa\u0107. Same pliki binlog\u00f3w pozostaj\u0105 w formacie binarnym, dzi\u0119ki czemu wydajno\u015b\u0107 zapisu i zapotrzebowanie na pami\u0119\u0107 podczas codziennej eksploatacji pozostaj\u0105 na wysokim poziomie. Wa\u017cne: regularnie sprawdzam typy zdarze\u0144, poniewa\u017c wskazuj\u0105 one, czy aktualny format rejestrowania jest dostosowany do bie\u017c\u0105cego obci\u0105\u017cenia.<\/p>\n\n<h2>Formaty plik\u00f3w binlog: Statement, Row, Mixed<\/h2>\n\n<p>MariaDB obs\u0142uguje rejestrowanie instrukcji, wierszy oraz mieszane, a ja dokonuj\u0119 wyboru w zale\u017cno\u015bci od wzorca zapisu; to <strong>Format<\/strong> wp\u0142ywa na rozmiar pliku, bezpiecze\u0144stwo replikacji i wymagania sieciowe. Opcja \u201eStatement\u201d zapisuje instrukcj\u0119 SQL; jest cz\u0119sto bardziej zwi\u0119z\u0142a, ale w przypadku funkcji niedeterministycznych mo\u017ce prowadzi\u0107 do rozbie\u017cno\u015bci. Opcja \u201eRow\u201d rejestruje odpowiednie wiersze i utrzymuje repliki bardzo zbli\u017cone do orygina\u0142u, powoduj\u0105c jednak wi\u0119ksz\u0105 ilo\u015b\u0107 danych dziennika. Tryb \u201eMixed\u201d dokonuje wyboru dynamicznie i d\u0105\u017cy do osi\u0105gni\u0119cia najlepszego kompromisu mi\u0119dzy dok\u0142adno\u015bci\u0105 a obj\u0119to\u015bci\u0105. Aby zapewni\u0107 sp\u00f3jn\u0105 replikacj\u0119, w systemach wra\u017cliwych preferuj\u0119 tryb \u201eRow\u201d lub \u201eMixed\u201d, a nast\u0119pnie sprawdzam op\u00f3\u017anienie.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>Format<\/strong><\/th>\n      <th><strong>Pami\u0119\u0107<\/strong><\/th>\n      <th><strong>Dok\u0142adno\u015b\u0107<\/strong><\/th>\n      <th><strong>Typowe zastosowanie<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>O\u015bwiadczenie<\/td>\n      <td>Niski<\/td>\n      <td>\u015arodki (w zale\u017cno\u015bci od funkcji\/wyzwalaczy)<\/td>\n      <td>Wiele wierszy na jedn\u0105 instrukcj\u0119, niewielkie obci\u0105\u017cenie sieci<\/td>\n    <\/tr>\n    <tr>\n      <td>Wiersz<\/td>\n      <td>Wy\u017cszy<\/td>\n      <td>Wysoki (oparty na wierszach, deterministyczny)<\/td>\n      <td>Dane wra\u017cliwe, replikacja heterogeniczna<\/td>\n    <\/tr>\n    <tr>\n      <td>Mieszane<\/td>\n      <td>\u015aredni<\/td>\n      <td>Wysoki (w zale\u017cno\u015bci od sytuacji)<\/td>\n      <td>Zr\u00f3\u017cnicowane obci\u0105\u017cenia \u2013 standard w wielu konfiguracjach<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Dzienniki binarne oparte na InnoDB od wersji 12.3<\/h2>\n\n<p>Od wersji 12.3 MariaDB mo\u017ce zapisywa\u0107 zdarzenia z dziennika binarnego w plikach zarz\u0105dzanych przez InnoDB z rozszerzeniem .ibb, co zapewnia bli\u017cszy dost\u0119p do <strong>InnoDB<\/strong> zwi\u0119ksza si\u0119. Korzystam z \u015bcis\u0142ej integracji z dziennikami Redo oraz uproszczon\u0105 \u015bcie\u017ck\u0105 odzyskiwania po awarii. Dzi\u0119ki temu odczuwalnie zmniejsza si\u0119 obci\u0105\u017cenie zwi\u0105zane z dwufazowym zatwierdzaniem (Two-Phase Commit) mi\u0119dzy silnikiem przechowywania danych a klasycznym dziennikiem binarnym. Szczeg\u00f3lnie przy du\u017cym obci\u0105\u017ceniu zapisem zmniejsza to liczb\u0119 koniecznych operacji flushowania i stabilizuje czasy zatwierdzania w warunkach obci\u0105\u017cenia. Przed zmian\u0105 sprawdzam jednak narz\u0119dzia, system monitorowania i procesy tworzenia kopii zapasowych, poniewa\u017c model operacyjny zmienia niekt\u00f3re procedury w por\u00f3wnaniu z klasycznymi plikami.<\/p>\n\n<h2>Replikacja: pozycja, GTID i sp\u00f3jno\u015b\u0107<\/h2>\n\n<p>W ramach replikacji replika odczytuje zdarzenia z dziennika binarnego serwera g\u0142\u00f3wnego i wykonuje je w tej samej kolejno\u015bci, dzi\u0119ki czemu uzyskuj\u0119 sp\u00f3jne <strong>Dane<\/strong> w wielu w\u0119z\u0142ach. Zazwyczaj \u015bledz\u0119 nazw\u0119 pliku i pozycj\u0119; dzi\u0119ki GTID obs\u0142uga prze\u0142\u0105czania awaryjnego i wznowienie dzia\u0142ania po awariach staj\u0105 si\u0119 prostsze. W \u015brodowiskach mieszanych MariaDB\/MySQL zwracam uwag\u0119 na r\u00f3\u017cnice w zakresie identyfikator\u00f3w GTID i interpretacji zdarze\u0144. Aby zapewni\u0107 dost\u0119pno\u015b\u0107 w ca\u0142ym klastrze, \u015bwiadomie planuj\u0119 topologie i ch\u0119tnie korzystam z zwi\u0119z\u0142ych przegl\u0105d\u00f3w, takich jak <a href=\"https:\/\/webhosting.de\/pl\/topologie-replikacji-baz-danych-konfiguracja-klastra-hostingowego-skalowanie-bazy-danych\/\">Replikacja bazy danych<\/a>. Wa\u017cne: Dokumentuj\u0119 sloty replikacji i tworz\u0119 kopie zapasowe historii plik\u00f3w binlog w taki spos\u00f3b, aby \u017cadna replika nie \u201eg\u0142odowa\u0142a\u201c i w zwi\u0105zku z tym nie musia\u0142a by\u0107 ponownie uruchamiana.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb_binarylogs_meeting_3748.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kiedy dzienniki binarne przynosz\u0105 najwi\u0119ksze korzy\u015bci<\/h2>\n\n<p>Z log\u00f3w binarnych korzystam, gdy chc\u0119 prze\u015bledzi\u0107 zmiany, cofn\u0105\u0107 je lub przenie\u015b\u0107 na kilka serwer\u00f3w; te <strong>Przejrzysto\u015b\u0107<\/strong> wzmacnia dzia\u0142anie systemu i zgodno\u015b\u0107 z przepisami. Typowe scenariusze to wysoka dost\u0119pno\u015b\u0107 z replikami, przywracanie stanu z okre\u015blonego momentu (Point-in-Time Recovery) po b\u0142\u0119dnej operacji oraz analizy kryminalistyczne. W przypadku sklep\u00f3w internetowych o intensywnym zapisie danych regularnie archiwizuj\u0119 pliki binlog\u00f3w i planuj\u0119 okres przechowywania zgodnie z wytycznymi RPO\/RTO. Na potrzeby audyt\u00f3w eksportuj\u0119 wybrane przedzia\u0142y czasowe za pomoc\u0105 polecenia `mariadb-binlog` i osobno sprawdzam zdarzenia DDL. Osoby, kt\u00f3re zag\u0142\u0119biaj\u0105 si\u0119 w analizy wydajno\u015bci, mog\u0105 uzyska\u0107 z tych zdarze\u0144 cenne wskaz\u00f3wki dotycz\u0105ce \u201egor\u0105cych\u201d tabel i wzorc\u00f3w blokad.<\/p>\n\n<h2>Tworzenie kopii zapasowych i przywracanie stanu z okre\u015blonego momentu w czasie za pomoc\u0105 plik\u00f3w binlog<\/h2>\n\n<p>Aby zapewni\u0107 precyzyjne przywr\u00f3cenie danych, \u0142\u0105cz\u0119 sp\u00f3jn\u0105 pe\u0142n\u0105 kopi\u0119 zapasow\u0105 z kolejnymi plikami binlog; te <strong>Po\u0142\u0105czenie<\/strong> zapewnia stan bazy danych tu\u017c przed wyst\u0105pieniem incydentu. Procedura jest jasna: utworzy\u0107 kopi\u0119 zapasow\u0105, okre\u015bli\u0107 moment wyst\u0105pienia b\u0142\u0119du, a nast\u0119pnie wczyta\u0107 pliki binlog\u00f3w do tej sekundy. Regularnie testuj\u0119 ten proces na oddzielnych instancjach, aby unikn\u0105\u0107 niespodzianek w sytuacji awaryjnej. Kto chce pog\u0142\u0119bi\u0107 swoj\u0105 wiedz\u0119 na temat transakcji i strategii odzyskiwania danych, znajdzie szczeg\u00f3\u0142owe informacje na temat <a href=\"https:\/\/webhosting.de\/pl\/logi-transakcji-bazy-danych-procesy-odzyskiwania-ochrona-bazy-danych-bezpieczny\/\">Dzienniki transakcji i odzyskiwanie danych<\/a>. Podczas importowania zwr\u00f3\u0107 uwag\u0119 na format pliku binlog oraz ustawienie SQL_MODE, aby funkcje i wyzwalacze dzia\u0142a\u0142y identycznie.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb-binary-logs-performance-8472.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wp\u0142yw na wydajno\u015b\u0107 i obci\u0105\u017cenie systemowe<\/h2>\n\n<p>Aktywne rejestrowanie w formacie binarnym wi\u0105\u017ce si\u0119 z dodatkow\u0105 prac\u0105 zwi\u0105zan\u0105 z zapisywaniem danych, co zawsze uwzgl\u0119dniam w bud\u017cecie op\u00f3\u017anie\u0144; to <strong>Nadgodziny<\/strong> r\u00f3\u017cni si\u0119 w zale\u017cno\u015bci od pami\u0119ci masowej, formatu i wielko\u015bci transakcji. Funkcja Group Commit \u0142\u0105czy kilka transakcji w jednym operacji flush i zmniejsza liczb\u0119 operacji we\/wy na jedno zatwierdzenie. Mniejsza liczba, ale wi\u0119ksze operacje we\/wy cz\u0119sto zwi\u0119kszaj\u0105 przepustowo\u015b\u0107, o ile stos pami\u0119ci masowej nad\u0105\u017ca. Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 na strategie synchronizacji, takie jak sync_binlog, oraz zachowanie pami\u0119ci podr\u0119cznej systemu operacyjnego, poniewa\u017c zbyt restrykcyjne ustawienia operacji flush spowalniaj\u0105 dzia\u0142anie systemu. Je\u015bli obserwuje si\u0119 op\u00f3\u017anienia w replikacji, najlepiej jest stale optymalizowa\u0107 system pod k\u0105tem <a href=\"https:\/\/webhosting.de\/pl\/opoznienie-replikacji-mysql-optymalizacja-hostingu-opoznienie-serwera\/\">Op\u00f3\u017anienie replikacji<\/a> i mierzy zmiany w spos\u00f3b ukierunkowany.<\/p>\n\n<h2>Strategie Group Commit i Flush<\/h2>\n\n<p>Konfiguruj\u0119 funkcj\u0119 Group Commit tak, aby obci\u0105\u017cenie zapisem pojawia\u0142o si\u0119 falami, a pami\u0119\u0107 masowa dzia\u0142a\u0142a wydajnie; to <strong>Strojenie<\/strong> cz\u0119sto ma wi\u0119kszy wp\u0142yw ni\u017c optymalizacja procesora. Parametry takie jak binlog_group_commit_sync_delay oraz liczba buforowanych zdarze\u0144 reguluj\u0105 przedzia\u0142 czasowy grupowania. Opcje InnoDB, takie jak innodb_flush_log_at_trx_commit oraz wyb\u00f3r systemu plik\u00f3w, determinuj\u0105, jak kosztowne jest opr\u00f3\u017cnienie bufora. Na dyskach SSD\/NVMe z pami\u0119ci\u0105 podr\u0119czn\u0105 typu write-back mog\u0119 pozwoli\u0107 sobie na nieco wi\u0119kszy bufor, natomiast w przypadku wolnej pami\u0119ci masowej w sieci lepiej zachowa\u0107 ostro\u017cno\u015b\u0107. W celu przeprowadzenia pomiar\u00f3w kontrolnych zmieniam tylko jeden parametr na ka\u017cdy przebieg testu, utrzymuj\u0105c sta\u0142\u0105 wielko\u015b\u0107 transakcji.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/TechOfficeMariaDBNight_8491.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wyb\u00f3r formatu i wzorce obci\u0105\u017cenia<\/h2>\n\n<p>Wybieram opcj\u0119 \u201eStatement\u201d, gdy kilka instrukcji obejmuje bardzo wiele wierszy i zachowuje deterministyczny charakter; to <strong>Prowadzenie<\/strong> oszcz\u0119dza zasoby sieciowe i pami\u0119\u0107. W przypadku wyzwalaczy, identyfikator\u00f3w UUID, funkcji NOW() lub RAND() ustawiam opcj\u0119 \u201eRow\u201d, aby repliki osi\u0105ga\u0142y dok\u0142adnie ten sam stan. Opcja \u201eMixed\u201d dobrze sprawdza si\u0119 w mieszanych wzorcach, w kt\u00f3rych niekt\u00f3re instrukcje modyfikuj\u0105 wiele wierszy, a inne dzia\u0142aj\u0105 tylko punktowo. W przypadku zada\u0144 ETL z masowymi wstawieniami opcja \u201eStatement\u201d cz\u0119sto przekonuje niewielkimi rozmiarami log\u00f3w; w modelach event sourcingu opcja \u201eRow\u201d wygrywa dzi\u0119ki precyzyjnym zmianom w wierszach. Po ka\u017cdej zmianie obserwuj\u0119 rozmiar plik\u00f3w, czas zastosowania na replikach oraz ewentualne op\u00f3\u017anienia.<\/p>\n\n<h2>Zarz\u0105dzanie rotacj\u0105 i przechowywaniem log\u00f3w<\/h2>\n\n<p>Aby zapisy nie narasta\u0142y nadmiernie, aktywnie je usuwam i ustalam okres przechowywania; ten <strong>Dyscyplina<\/strong> oszcz\u0119dza miejsce na dysku i zapewnia kompletno\u015b\u0107 \u0142a\u0144cuch\u00f3w odtwarzania. Za pomoc\u0105 polecenia FLUSH BINARY LOGS inicjuj\u0119 tworzenie nowych plik\u00f3w, podczas gdy polecenia typu \u201epurge\u201d usuwaj\u0105 stare artefakty. Ustawienia oparte na czasie, takie jak binlog_expire_logs_seconds, u\u0142atwiaj\u0105 automatyczn\u0105 konserwacj\u0119. Wa\u017cne: nie usuwam niczego, dop\u00f3ki replika mo\u017ce jeszcze potrzebowa\u0107 tych plik\u00f3w. W przypadku w\u0105skich garde\u0142 przenosz\u0119 dzienniki binarne na szybsz\u0105 pami\u0119\u0107 lub rozdzielam woluminy danych i dziennik\u00f3w.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb_logs_desk_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rozwi\u0105zywanie problem\u00f3w za pomoc\u0105 mariadb-binlog<\/h2>\n\n<p>Gdy replikacja si\u0119 zawiesza, odczytuj\u0119 odpowiednie zdarzenia za pomoc\u0105 polecenia `mariadb-binlog` i sprawdzam sygnatury czasowe, identyfikatory XID oraz b\u0142\u0119dy; te <strong>Analiza<\/strong> cz\u0119sto wskazuje na brak uprawnie\u0144 DDL lub funkcje niedeterministyczne. Por\u00f3wnuj\u0119 stany GTID lub regu\u0142y filtrowania, aby znale\u017a\u0107 instrukcje powoduj\u0105ce blokady. W przypadku zduplikowanych kluczy szybko rozpoznaj\u0119, czy problem rozwi\u0105\u017ce ponowna pr\u00f3ba, czy te\u017c filtr. Istniej\u0105ce luki w \u0142a\u0144cuchu rozpoznaj\u0119 po skokach w indeksie lub nieoczekiwanych nazwach plik\u00f3w. Nast\u0119pnie dostosowuj\u0119 filtry i format, aby zapobiec pojawieniu si\u0119 kolejnych problem\u00f3w.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb-performance-log-8274.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Przewodnik praktyczny: ustawienia wed\u0142ug celu<\/h2>\n\n<p>Zaczynam od rejestrowania mieszanego i sprawdzam, czy rozmiar oraz czas replikacji s\u0105 odpowiednie; te <strong>Linia bazowa<\/strong> zapewnia rzeteln\u0105 podstaw\u0119 do por\u00f3wnania. Je\u015bli op\u00f3\u017anienie podczas zatwierdzania wzrasta, w pierwszej kolejno\u015bci sprawdzam parametry Group Commit i polityk\u0119 synchronizacji. Je\u015bli zapotrzebowanie na pami\u0119\u0107 ro\u015bnie zbyt szybko, testuj\u0119 instrukcje w partiach deterministycznych lub archiwizuj\u0119 dzienniki binarne w kr\u00f3tszych odst\u0119pach czasu. W przypadku wysokiego poziomu krytyczno\u015bci awarii zwracam uwag\u0119 na dzienniki binarne oparte na InnoDB, poniewa\u017c mniejsza liczba operacji flush pozwala utrzyma\u0107 bardziej stabilny czas zatwierdzania. Ka\u017cd\u0105 zmian\u0119 kr\u00f3tko dokumentuj\u0119, aby p\u00f3\u017aniejsze pomiary pozosta\u0142y jasno przypisane.<\/p>\n\n<h2>Bezpiecze\u0144stwo i zgodno\u015b\u0107 z przepisami: szyfrowanie, dost\u0119p, integralno\u015b\u0107<\/h2>\n<p>Tworz\u0119 kopie zapasowe plik\u00f3w binlog tak samo jak danych produkcyjnych: tylko uprawnione konta otrzymuj\u0105 uprawnienia do odczytu w systemie plik\u00f3w, a tak\u017ce \u2013 w zale\u017cno\u015bci od wersji \u2013 w\u0142\u0105czam szyfrowanie plik\u00f3w binlog. Dzi\u0119ki temu dane pozostaj\u0105 chronione w stanie spoczynku, nawet je\u015bli kopie zapasowe trafiaj\u0105 na no\u015bniki zewn\u0119trzne. Dodatkowo ustawia <strong>binlog_checksum<\/strong> (zazwyczaj CRC32) w celu sprawdzenia integralno\u015bci podczas przesy\u0142ania. Ka\u017cdy, kto przetwarza dane osobowe, okre\u015bla okresy przechowywania w koncepcji usuwania danych i regularnie sprawdza, czy rotacja faktycznie spe\u0142nia te wytyczne. Na potrzeby audyt\u00f3w przygotowuj\u0119 zdefiniowan\u0105 \u015bcie\u017ck\u0119 eksportu, w ramach kt\u00f3rej wyodr\u0119bniam odpowiednie przedzia\u0142y czasowe z dziennik\u00f3w binarnych i archiwizuj\u0119 je w spos\u00f3b zgodny z wymogami audytowymi.<\/p>\n\n<h2>Replikacja r\u00f3wnoleg\u0142a i optymalizacja modu\u0142u Applier<\/h2>\n<p>Aby przyspieszy\u0107 przetwarzanie danych na replikach, korzystam z replikacji r\u00f3wnoleg\u0142ej. W MariaDB steruj\u0119 tym g\u0142\u00f3wnie za pomoc\u0105 <strong>slave_parallel_threads<\/strong> oraz tryb <strong>tryb_r\u00f3wnoleg\u0142y_niewolnik\u00f3w<\/strong> (konserwatywne vs. optymistyczne). Wi\u0119ksza liczba w\u0105tk\u00f3w aplikacyjnych pomaga przede wszystkim w przypadku transakcji niezale\u017cnych lub oddzielnych <em>domain_id<\/em>\u2011obszary w GTID-ach. Obserwuj\u0119 przy tym wska\u017aniki konflikt\u00f3w i zakleszcze\u0144: je\u015bli rosn\u0105, zmniejszam liczb\u0119 w\u0105tk\u00f3w lub wybieram bardziej konserwatywny tryb. Po stronie pami\u0119ci masowej r\u00f3wnoleg\u0142e stosowanie wymaga wystarczaj\u0105cej rezerwy IOPS, w przeciwnym razie w\u0105skie gard\u0142o przeniesie si\u0119 z sieci na dyski. Wa\u017cne: liczba aplikator\u00f3w nie ma znaczenia, je\u015bli dziennik binarny zawiera g\u0142\u00f3wnie du\u017ce pojedyncze transakcje, kt\u00f3re i tak musz\u0105 by\u0107 przetwarzane szeregowo.<\/p>\n\n<h2>Regu\u0142y filtrowania, identyfikatory GTID i \u015brodowiska mieszane<\/h2>\n<p>Z <strong>binlog_do_db<\/strong> oraz <strong>binlog_ignore_db<\/strong> Ograniczam ilo\u015b\u0107 log\u00f3w ju\u017c na serwerze g\u0142\u00f3wnym, a za pomoc\u0105 filtr\u00f3w replikacji na replikach zaw\u0119\u017cam zakres stosowania. W przypadku rejestrowania instrukcji zwracam uwag\u0119, aby aktualna baza danych by\u0142a poprawnie ustawiona, w przeciwnym razie filtry b\u0119d\u0105 dzia\u0142a\u0107 inaczej ni\u017c oczekiwano. W konfiguracjach GTID dokumentuj\u0119 <em>domain_id<\/em>\u2011Korzystanie (specyficzne dla MariaDB), aby zapewni\u0107 kontrolowan\u0105 replikacj\u0119 z wielu \u017ar\u00f3de\u0142. W \u015brodowiskach mieszanych MariaDB\/MySQL sprawdzam z wyprzedzeniem zgodno\u015b\u0107 zdarze\u0144 i dialekty GTID; R\u00f3\u017cnice dotycz\u0105 nie tylko sk\u0142adni, ale tak\u017ce szczeg\u00f3\u0142owego zachowania (np. semantyki wyzwalaczy, obrazu wiersza). Dlatego planuj\u0119 migracje z wykorzystaniem test\u00f3w, w kt\u00f3rych rzeczywiste zdarzenia produkcyjne s\u0105 przesy\u0142ane przez stos docelowy.<\/p>\n\n<h2>Zdarzenia DDL, zmiany online i blokady<\/h2>\n<p>DDL r\u00f3wnie\u017c zapisuje dane w dzienniku binarnym i mo\u017ce na d\u0142ugo blokowa\u0107 repliki \u2013 zw\u0142aszcza w przypadku zmian schematu w du\u017cych tabelach. Tam, gdzie to mo\u017cliwe, stosuj\u0119 aktualizacje online z minimalnym blokowaniem oraz ograniczam czasowo operacje obarczone ryzykiem do okien konserwacyjnych. Monitoruj\u0119 blokady metadanych (MDL) i sprawdzam, czy zdarzenia DDL na replikach blokuj\u0105 inne instrukcje poprzez filtry lub kolejno\u015b\u0107. Przed wi\u0119kszymi przebudowami celowo rotuj\u0119 dziennik binarny, aby uzyska\u0107 wyra\u017any punkt odci\u0119cia dla kopii zapasowych lub cofania zmian. Na potrzeby audyt\u00f3w rozdzielam analizy DDL i DML, poniewa\u017c zmiany schematu s\u0105 cz\u0119sto przyczyn\u0105 pozornie \u201ebrakuj\u0105cych\u201c danych, kt\u00f3re w rzeczywisto\u015bci zosta\u0142y jedynie przeniesione do nowych struktur.<\/p>\n\n<h2>Precyzyjna regulacja obraz\u00f3w wierszowych, pami\u0119ci podr\u0119cznej i zapotrzebowania na pami\u0119\u0107<\/h2>\n<p>W trybie wierszowym ograniczam g\u0142o\u015bno\u015b\u0107 za pomoc\u0105 <strong>binlog_row_image<\/strong> (w zale\u017cno\u015bci od wersji: FULL lub MINIMAL). Wersja MINIMAL pomija niezmienione kolumny i pozwala znacznie zaoszcz\u0119dzi\u0107 miejsce, nie zagra\u017caj\u0105c przy tym replikacji. Dodatkowo kalibruj\u0119 <strong>binlog_cache_size<\/strong> oraz maksymalny rozmiar pami\u0119ci podr\u0119cznej, aby du\u017ce transakcje rzadziej musia\u0142y by\u0107 przenoszone na dysk. Obserwuj\u0119 wska\u017aniki, takie jak trafienia i przepe\u0142nienia pami\u0119ci podr\u0119cznej binlogu, aby realistycznie dostosowa\u0107 te parametry. W przypadku du\u017cych p\u00f3l BLOB\/TEXT starannie planuj\u0119 bufory i sie\u0107 oraz sprawdzam, czy istnieje \u015bcie\u017cka instrukcji odpowiednia do importu masowego, aby dziennik binarny pozosta\u0142 przejrzysty.<\/p>\n\n<h2>Monitorowanie, alarmy i procedury operacyjne<\/h2>\n<p>Do pracy ci\u0105g\u0142ej potrzebuj\u0119 wyra\u017anych sygna\u0142\u00f3w: monitoruj\u0119 aktualn\u0105 <strong>Pozycja w pliku binlog<\/strong>, <strong>Liczba zapisanych bajt\u00f3w<\/strong>, liczba otwartych plik\u00f3w, lokalny pozosta\u0142y czas do <strong>Wygasanie<\/strong>\u2011pr\u00f3g, a tak\u017ce wska\u017aniki replikacji, takie jak <strong>Seconds_Behind<\/strong> oraz kody b\u0142\u0119d\u00f3w aplikatora. W przypadku narastaj\u0105cych zaleg\u0142o\u015bci na replikach najpierw sprawdzam sie\u0107, nast\u0119pnie operacje wej\u015bcia\/wyj\u015bcia, a na ko\u0144cu w\u0105tki aplikatora. W instrukcjach post\u0119powania zapisuj\u0119: jak prawid\u0142owo przeprowadza\u0107 rotacj\u0119, co sprawdzam przed czyszczeniem (SHOW SLAVE\/REPLICA STATUS), jak ponownie uruchomi\u0107 replik\u0119 (kopia zapasowa + pozycja startowa\/GTID) oraz jak w sytuacjach awaryjnych importowa\u0107 binlogi z dok\u0142adno\u015bci\u0105 co do \u017c\u0105danego znacznika czasu. Te listy kontrolne pozwalaj\u0105 zaoszcz\u0119dzi\u0107 cenne minuty w sytuacjach stresowych.<\/p>\n\n<h2>Uk\u0142ad pami\u0119ci, system plik\u00f3w i dzia\u0142anie<\/h2>\n<p>Dzienniki binarne konkuruj\u0105 pod wzgl\u0119dem operacji wej\u015bcia\/wyj\u015bcia z dziennikami danych i dziennikami ponownego wykonania. Dlatego przenosz\u0119 je na oddzielny wolumin, mierz\u0119 wydajno\u015b\u0107 w trybie burst i aktywuj\u0119 bariery zapisu zgodnie z wymaganiami systemu plik\u00f3w. W przypadku dysk\u00f3w NVMe przepustowo\u015b\u0107 dobrze skaluje si\u0119 wraz z wi\u0119kszymi oknami Group Commit; w przypadku pami\u0119ci masowej w sieci ograniczam r\u00f3wnoleg\u0142e strumienie, aby unikn\u0105\u0107 szczyt\u00f3w op\u00f3\u017anie\u0144. Utrzymuj\u0119 umiarkowan\u0105 wielko\u015b\u0107 pliku na jeden dziennik binarny, aby operacje czyszczenia i transfery nie trwa\u0142y zbyt d\u0142ugo, oraz regularnie sprawdzam sp\u00f3jno\u015b\u0107 indeksu. Przed instalacj\u0105 poprawek lub aktualizacji przeprowadzam rotacj\u0119, tworz\u0119 kopi\u0119 zapasow\u0105 indeksu i upewniam si\u0119, \u017ce agenci monitoruj\u0105cy oraz agenci tworzenia kopii zapasowych poprawnie rejestruj\u0105 nowy dziennik.<\/p>\n\n<h2>Kompatybilno\u015b\u0107 i zmiana wersji<\/h2>\n<p>Nie ka\u017cda wersja pos\u0142uguje si\u0119 dok\u0142adnie tym samym \u201es\u0142ownictwem\u201c Binlog. Przed aktualizacj\u0105 sprawdzam, czy repliki starszej generacji potrafi\u0105 odczyta\u0107 zestaw zdarze\u0144, czy te\u017c najpierw trzeba zaktualizowa\u0107 repliki, a dopiero potem serwer g\u0142\u00f3wny. R\u00f3\u017cnice wyst\u0119puj\u0105 r\u00f3wnie\u017c w nazwach parametr\u00f3w: w zale\u017cno\u015bci od wersji spotykam na przyk\u0142ad <strong>binlog_group_commit_sync_delay<\/strong> lub r\u00f3wnowa\u017cne parametry oczekiwania (<em>binlog_commit_wait_*<\/em>) oraz nieznacznie odbiegaj\u0105ce warto\u015bci domy\u015blne w przypadku sum kontrolnych lub obraz\u00f3w wierszy. Planuj\u0119 zatem stworzy\u0107 matryc\u0119 kompatybilno\u015bci oraz przetestowa\u0107 prze\u0142\u0105czanie awaryjne i PITR na rzeczywistych dziennikach binarnych ze \u015brodowiska produkcyjnego. Wraz z wprowadzeniem dziennik\u00f3w binarnych opartych na InnoDB sprawdz\u0119 dodatkowo, jak narz\u0119dzia do odzyskiwania danych i kopie zapasowe radz\u0105 sobie z tym formatem, oraz przygotuj\u0119 opcj\u0119 awaryjn\u0105 na czas przej\u015bcia.<\/p>\n\n<h2>Wzorce b\u0142\u0119d\u00f3w z praktyki i szybkie \u015brodki zaradcze<\/h2>\n<p>Cz\u0119st\u0105 przeszkod\u0105 s\u0105 przestarza\u0142e filtry replikacji, kt\u00f3re po zmianach schematu nagle wykluczaj\u0105 ca\u0142e tabele. Dlatego sprawdzam filtry po ka\u017cdym wydaniu. Drugi typowy problem: op\u00f3\u017anienie replikacji spowodowane zbyt ma\u0142ymi pami\u0119ciami podr\u0119cznymi binlog\u00f3w w przypadku du\u017cych transakcji \u2013 w tym przypadku pomocne jest zwi\u0119kszenie rozmiar\u00f3w pami\u0119ci podr\u0119cznych lub podzielenie transakcji. Po trzecie: nieoczekiwanie du\u017ce pliki binlog po aktywacji wyzwalaczy; w trybie wierszowym cz\u0119sto zwi\u0119kszam wtedy wydajno\u015b\u0107 za pomoc\u0105 MINIMAL Row Image i ustalam dedykowane okna konserwacyjne na masowe zmiany. A je\u015bli liczba commit\u00f3w ulega wahaniom, por\u00f3wnuj\u0119 polityk\u0119 synchronizacji (sync_binlog, innodb_flush_log_at_trx_commit) z rzeczywist\u0105 cz\u0119stotliwo\u015bci\u0105 opr\u00f3\u017cniania w trakcie pracy.<\/p>\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>Dzienniki binarne porz\u0105dkuj\u0105 zmiany, umo\u017cliwiaj\u0105 replikacj\u0119 i zapewniaj\u0105 mo\u017cliwo\u015b\u0107 przywr\u00f3cenia danych; te <strong>Funkcja<\/strong> co czyni j\u0105 kluczowym elementem steruj\u0105cym w MariaDB. Wybieram format w zale\u017cno\u015bci od obci\u0105\u017cenia, zwracam uwag\u0119 na Group Commit i z wyczuciem dostosowuj\u0119 strategie flushingu. W celu odzyskiwania danych \u0142\u0105cz\u0119 pe\u0142n\u0105 kopi\u0119 zapasow\u0105 z dziennikami binarnymi i dbam o kompletno\u015b\u0107 archiwizacji. Replikacj\u0119 planuj\u0119 w spos\u00f3b przejrzysty, monitoruj\u0119 op\u00f3\u017anienia i dostosowuj\u0119 filtry, zanim pojawi\u0105 si\u0119 sytuacje krytyczne. Kto opanuje zasady konfiguracji, wdra\u017cania i narz\u0119dzi wp\u0142ywaj\u0105cych na wydajno\u015b\u0107, b\u0119dzie korzysta\u0142 z MariaDB w spos\u00f3b bardziej niezawodny i z wi\u0119ksz\u0105 \u015bwiadomo\u015bci\u0105 ryzyka.<\/p>","protected":false},"excerpt":{"rendered":"<p>Wyja\u015bnienie dziennik\u00f3w binarnych MariaDB: przejrzyste podsumowanie dotycz\u0105ce struktury, zastosowania, replikacji i wydajno\u015bci.<\/p>","protected":false},"author":1,"featured_media":21292,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-21299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"26","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"MariaDB Binary Logs","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21292","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=21299"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21299\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21292"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}