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.