mysqldump visszatöltés nagyon lassú

Sziasztok!

Van egy 1,6 GB-os mysqldump állomány ami az egyik "fejlesztői" gépen iszonyú lassan töltődik vissza.

Ha egy time parancsot elé teszek a következő kimenetet kapom:

real    27m45,435s
user    0m25,539s
sys     0m0,912s

Viszonyításkép az egyik VPS-en 27 perc helyett 4 perc ugyan ez. Igaz ebben a "fejlesztői" gépben SATA SSD van, a VPS-ben meg valószínűleg sokkal gyorsabb MVMe SSD, de ekkora eltérésnek azért gondolom nem kellene lenni. 

SMART információkból nekem úgy tűnik nincs baja az SSD-nek, ennek ellenére én azt sejtem a szűk keretmetszetnek. De ötletem sincs hol kezdjem a hibakeresést, mit nézzek és mivel. Tudnátok valamit tanácsolni? Én fejlesztő vagyok, ezekhez a dolgokhoz annyira nem értek.

Hozzászólások

Van-e a mysql szerver konfigokban eltérés? Illetve oprendszer/MySQL verzió eltérés van-e?

Több fajta sqldump létezhet, az egyiknél minden egyes sor külön insert-et kap, van ahol sok-sok sor van egy insert-ben. Ha külön insert-ek vannak, akkor jelentős különbség adódhat betöltéseknél. Az ilyen eseteknél a CPU és IO kapacitás ami még más lehet a két gépnél.

Elsődlegesen szerintem az innodb paramétereit nézném meg. Ha tudod, dobd be a my.cnf-et.

A fejlesztőin.

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
skip-grant-tables
#innodb_force_recovery = 4

default-time-zone='+00:00'

A VPS-en:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
skip-grant-tables

Itt van egy mysqldump.cnf állomány is:

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

+ egy mysqld.conf is ami nincs a fejlesztőin (vagy csak én nem találom)

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
key_buffer_size         = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
myisam-recover-options  = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
log_error = /var/log/mysql/error.log
expire_logs_days        = 10
max_binlog_size   = 100M

 

5.7.38-as verzió a fejlesztőin 5.7.26 a VPS-en. 

Az szándékos a VPS-en? 

[mysqld]

skip-grant-tables

Remelem a 3306 port nem elerhető bárhonnan. :)

 

A memoria a VPS-en mekkora és mekkora a fejlesztői gépen? (buffer sokat segít, aszinkron io-ban, a VPS-en szerintem alapbol az van)

 

Bonusz: Ha windows az OS és van viruskergető (alapbol is van win defender), az nagyon szereti az on fly megfogni a servicek i/o-it hiszen minden rányulásnál scannel.

Add hozzá a mysql könyvtárat exception-nak, hogy arra ne akarjon scannelni minden műveletnél.

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

a visszatöltés idejére: innodb_flush_log_at_trx_commit = 0, sync_binlog = 0

Szerkesztve: 2022. 05. 17., k – 18:53

de ekkora eltérésnek azért gondolom nem kellene lenni.

De nincs kizárva sem. Elsőnek mérd meg a lemez io.t , mondjuk fio-val mindkét gépen, szinkron irást , aszinkron irást.