Puncte:0

Mysql scrie constant în binlog, utilizând rapid spațiul pe disc

drapel in
jla

Serverul meu Ubuntu a început să ruleze o cantitate mare de operațiuni IO. Serverul are câteva site-uri WordPress pe el, dar primesc cel mult câteva zeci de vizualizări pe zi. În câteva zile a fost folosit 30 GB de spațiu pe disc.

Control iotop

Alergare iotop a arătat că mysql scria constant pe disc. O ieșire tipică a fost astfel:

CITIRE TOTALĂ DISK: 0,00 B/s | Total DISK SCRIERE: 390,38 K/s
Citirea curentă a discului: 0,00 B/s | SCRIERE CU DISC: 664,80 K/s
    TID PRIO UTILIZATOR DISK CITEȘTE DISK SCRIERE SWAPIN IO> COMANDĂ                                                                        
    298 be/3 root 0,00 B/s 0,00 B/s 0,00 % 4,79 % [jbd2/vda1-8]
    981 be/4 mysql 0,00 B/s 0,00 B/s 0,00 % 0,55 % mysqld [ib_log_flush]
    960 be/4 mysql 0,00 B/s 0,00 B/s 0,00 % 0,42 % mysqld [ib_io_wr-1]
  63310 be/4 mysql 0,00 B/s 30,92 K/s 0,00 % 0,17 % mysqld [conexiune]
  62908 be/4 mysql 0,00 B/s 34,79 K/s 0,00 % 0,09 % mysqld [conexiune]
  64165 be/4 mysql 0,00 B/s 34,79 K/s 0,00 % 0,07 % mysqld [conexiune]
    964 be/4 mysql 0,00 B/s 185,52 K/s 0,00 % 0,05 % mysqld [ib_pg_flush_co]
    983 be/4 mysql 0,00 B/s 100,49 K/s 0,00 % 0,00 % mysqld [ib_log_writer]
  71067 be/4 www-data 0,00 B/s 3,87 K/s 0,00 % 0,00 % apache2 -k start

Într-adevăr, verificând /var/lib/mysql directorul a arătat sute de fișiere binlog, însumând o dimensiune de aproximativ 30 GB. Marcajele temporale indicau că mysql scria în binlog-uri cu o rată apropiată de 1 GB pe oră, fără niciun semn de încetinire.

Verificarea proceselor mysql

Alergare mysql -p -e „afișează lista de procese” pentru a vizualiza procesele mysql nu a arătat nimic.

+--------+------+-----------+------+---------+---- --+-------+------------------+
| Id | Utilizator | Gazdă | db | Comanda | Timp | Stat | Info |
+--------+------+-----------+------+---------+---- --+-------+------------------+
| 627525 | rădăcină | localhost | NULL | Interogare | 0 | init | arata lista proceselor |
+--------+------+-----------+------+---------+---- --+-------+------------------+

Verificarea fișierelor binlog

Folosind mysqlbinlog pentru a vizualiza fișierele binlog au arătat că erau pline de un fel de hash. Un fișier tipic arăta astfel:

# Termenul potrivit este pseudo_replica_mode, dar folosim acest alias de compatibilitate
# pentru a face declarația utilizabilă pe versiunile de server 8.0.24 și mai vechi.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITOR /*!*/;
# la 4
#220515 4:09:54 server id 1 end_log_pos 126 CRC32 0x070b8f09 Start: binlog v 4, server v 8.0.29-0ubuntu0.20.04.3 creat 220515 4:09:54
BINLOG '
En2AYg8BAAAAegAAAH4AAAAAAAQAOC4wLjI5LTB1YnVudHUwLjIwLjA0LjMAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEwANAAgAAAAABAAEAAAAYgAEGggAAAAICAgCAAAACgoKKioAEjQA
CigAAQmPCwc=
'/*!*/;
# la 126
#220515 4:09:54 ID server 1 end_log_pos 157 CRC32 0x433aa4c9 GTID-uri anterioare
# [gol]
# la 157
#220515 4:09:54 server id 1 end_log_pos 236 CRC32 0x671d08bc Anonymous_GTID last_committed=0 sequence_number=1 rbr_only=da original_committed_timestamp=16525877794663587779464635877794646358777946358777946463587779463587779463586094635860946358609463636004
/*!50718 SETARE NIVEL DE IZOLARE A TRANZACȚIEI CITIT COMIT*//*!*/;
# original_commit_timestamp=1652587794635604 (2022-05-15 04:09:54.635604 UTC)
# immediate_commit_timestamp=1652587794635604 (2022-05-15 04:09:54.635604 UTC)
/*!80001 SET @@session.original_commit_timestamp=1652587794635604*//*!*/;
/*!80014 SET @@session.original_server_version=80029*//*!*/;
/*!80014 SET @@session.immediate_server_version=80029*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONIM'/*!*/;
# la 236
#220515 4:09:54 ID server 1 end_log_pos 334 CRC32 0x71a6c06f Interogare thread_id=614826 exec_time=0 error_code=0
SETARE TIMESTAMP=1652587794/*!*/;
SET @@session.pseudo_thread_id=614826/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1149239296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=246,@@session.collation_connection=246,@@session.collation_server=255/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
ÎNCEPE
/*!*/;
# la 334
#220515 4:09:54 server id 1 end_log_pos 415 CRC32 0x6976a620 Table_map: `wordpress-jessjohn`.`wp_options` mapat la numărul 81
# la 415
#220515 4:09:54 ID server 1 end_log_pos 14218 CRC32 0x8cd2158b Update_rows: ID tabel 81 steaguri: STMT_END_F

BINLOG '
En2AYhMBAAAAUQAAAJ8BAAAAAFEAAAAAAAEAEndvcmRwcmVzcy1qZXNzam9obgAKd3Bfb3B0aW9u
cwAECA/8DwX8AgRQAAABAYACAfYgpnZp
En2AYh8BAAAA6zUAAIo3AAAAAFEAAAAAAAEAAgAE//8AHQAAAAAAAAANAHJld3JpdGVfcnVsZXMA
AAAAA3llcwAdAAAAAAAAAA0AcmV3cml0ZV9ydWxlc4c1AABhOjE0MDp7czoxMToiXndwLWpzb24v
PyQiO3M6MjI6ImluZGV4LnBocD9yZXN0X3JvdXRlPS8iO3M6MTQ6Il53cC1qc29uLyguKik/Ijtz
OjMzOiJpbmRleC5waHA/cmVzdF9yb3V0ZT0vJG1hdGNoZXNbMV0iO3M6MjE6Il5pbmRleC5waHAv
d3AtanNvbi8/JCI7czoyMjoiaW5kZXgucGhwP3Jlc3Rfcm91dGU9LyI7czoyNDoiXmluZGV4LnBo
cC93cC1qc29uLyguKik/IjtzOjMzOiJpbmRleC5waHA/cmVzdF9yb3V0ZT0vJG1hdGNoZXNbMV0i
O3M6MTc6Il53cC1zaXRlbWFwXC54bWwkIjtzOjIzOiJpbmRleC5waHA/c2l0ZW1hcD1pbmRleCI7

... 245 de linii din acest...

dD0kbWF0Y2hlc1sxXSZjcGFnZT0kbWF0Y2hlc1syXSI7czoyMjoiW14vXSsvKFteL10rKS9lbWJl
ZC8/JCI7czo0MzoiaW5kZXgucGhwP2F0dGFjaG1lbnQ9JG1hdGNoZXNbMV0mZW1iZWQ9dHJ1ZSI7
fQN5ZXOLFdKM
'/*!*/;
# la 14218
#220515 4:09:54 ID server 1 end_log_pos 14249 CRC32 0x322d3658 Xid = 18716628
COMMIT/*!*/;
# la 14249
#220515 4:09:54 id-ul serverului 1 end_log_pos 14329 CRC32 0xc4b6c15a Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=da original_committed_timestamp=1652587794716525877947016525877947016525877947016525877947050257947050257947470_579474701_579474
/*!50718 SETARE NIVEL DE IZOLARE A TRANZACȚIEI CITIT COMIT*//*!*/;
# original_commit_timestamp=1652587794702570 (2022-05-15 04:09:54.702570 UTC)
# immediate_commit_timestamp=1652587794702570 (2022-05-15 04:09:54.702570 UTC)
/*!80001 SET @@session.original_commit_timestamp=1652587794702570*//*!*/;
/*!80014 SET @@session.original_server_version=80029*//*!*/;
/*!80014 SET @@session.immediate_server_version=80029*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONIM'/*!*/;
# la 14329
#220515 4:09:54 ID server 1 end_log_pos 14427 CRC32 0x1328bf8c Interogare thread_id=614825 exec_time=0 error_code=0
SETARE TIMESTAMP=1652587794/*!*/;
ÎNCEPE
/*!*/;
# la 14427
#220515 4:09:54 server id 1 end_log_pos 14507 CRC32 0x64436ee3 Table_map: `wordpress-jessjohn`.`wp_usermeta` mapat la numărul 95
# la 14507
#220515 4:09:54 ID server 1 end_log_pos 114362 CRC32 0xec16092b Update_rows: ID tabel 95 flags: STMT_END_F

BINLOG '
En2AYhMBAAAAUAAAAKs4AAAAAF8AAAAAAAEAEndvcmRwcmVzcy1qZXNzam9obgALd3BfdXNlcm1l
dGEABAgID/wD/AMEDAEBwAIB9uNuQ2Q=
En2AYh8BAAAAD4YBALq+AQAAAF8AAAAAAAEAAgAE//8ANwAAAAAAAAABAAAAAAAAAA4Ac2Vzc2lv

... și așa mai departe pentru alte >200 de linii

Ce cauzează toată această înregistrare?

Nu sunt foarte familiarizat cu mysql logging, așa că nu sunt sigur unde să merg de aici. Presupun că o soluție rapidă ar fi să dezactivați deconectarea. Nu înțeleg ce spun fișierele binlog sau ce ar putea cauza atât de mult să fie înregistrate.

Wilson Hauck avatar
drapel jp
Cerere informatii suplimentare, va rog. Dimensiunea RAM, # nuclee, orice dispozitiv SSD sau NVME pe serverul MySQL Host? Postați pe pastebin.com și distribuiți linkurile. Din rădăcina dvs. de conectare SSH, rezultă textul: A) SELECT COUNT(*) FROM information_schema.tables; B) AFIȚI STARE GLOBALĂ; după minim 24 de ore UPTIME C) AFIȘARE VARIABILELE GLOBALE; D) AFIȚI LISTA COMPLETĂ DE PROCES; ȘI informații foarte utile despre sistemul de operare, includ - htop SAU top pentru cele mai multe aplicații active, ulimit -a pentru lista de limite, iostat -xm 5 3 pentru IOPS în funcție de dispozitiv și număr de core/cpu, pentru analiza de reglare a serverului binlog pentru a oferi sugestii.
drapel ua
Ai o replică? Care este „server_id”-ul său?
Puncte:1
drapel in

Binlogurile în MySQL sunt folosite pentru replicarea între master și slave(i). Dacă nu utilizați o astfel de arhitectură, o puteți dezactiva executând acest lucru:

SET sql_log_bin = 0;

Dacă aveți o astfel de structură, puteți elimina înregistrările vechi (deja replicate) utilizând o comandă ca:

ȘURGĂ Jurnalele BINARE ÎNAINTE DE '2019-04-02 22:46:26';

sau

ȘURGĂ Jurnalele BINARE ÎN „mysql-bin.010”;

Pentru mai multe informații puteți folosi acest raspuns.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.