mysqldump, занимая много места

У меня есть сервер, а размер раздела / составляет 20 ГБ.

Базы данных хранятся в / mnt / mysql- Размер раздела data составляет 500 ГБ.

Вот проблема. Всякий раз, когда я запускаю mysqldump , он заполняет раздел / до 100%. Я уже переместил tmpdir в / mnt / mysql-data / tmp . Все мои базы данных составляют около 40 ГБ, теперь я хочу создать их резервную копию в / mnt / mysql-data / backups , но я не могу продолжить, потому что раздел / заполняется до 100%. моя команда mysqldump: mysqldump --all-databases> /mnt/s3share/backup.sql";

Сведения о сервере:

  • 10.2.22-MariaDB-log Сервер MariaDB

  • CentOS Linux, выпуск 7.7 .1908 (Core)

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  217M  7.6G   3% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/xvda2       24G  2.4G   20G  11% /
/dev/xvda1      976M  168M  757M  19% /boot
tmpfs           1.6G     0  1.6G   0% /run/user/1000
/dev/xvdc1      500G  123G  378G  25% /mnt/mysql-data
tmpfs           1.6G     0  1.6G   0% /run/user/1001
MariaDB [db_inbox]> show global variables like "%tmp%";
+----------------------------+----------------------+  
| Variable_name              | Value                |  
+----------------------------+----------------------+  
| default_tmp_storage_engine |                      |  
| encrypt_tmp_disk_tables    | OFF                  |  
| encrypt_tmp_files          | OFF                  |  
| innodb_tmpdir              |                      |  
| max_tmp_tables             | 32                   |  
| slave_load_tmpdir          | /mnt/mysql-data/tmp  |  
| tmp_disk_table_size        | 18446744073709551615 |  
| tmp_memory_table_size      | 16777216             |  
| tmp_table_size             | 16777216             |  
| tmpdir                     | /mnt/mysql-data/tmp  |  
+----------------------------+----------------------+  
10 rows in set (0.00 sec)                              

обновление №1:

Я забыл упомянуть, что резервные копии *. Sql записываются в папку / mnt / s3share / backups / , которая монтируется как s3fs , и его кеш должен записывать в / tmp , и это может быть причиной того, что / заполняется во время создания дампа sql . Однако, когда я запускаю резервную копию и наблюдаю за изменениями в / tmp , он не показывает никакого роста, но когда я выполняю команду lsof в / tmp Я вижу, как удаляются огромные файлы. Может ли это быть?

1
задан 30 April 2020 в 04:15
2 ответа

ОК, я смог решить эту проблему, переместив каталог кэша s3bucket из /tmp в /mnt/mysql-data/tmp.

Я не знал, что fuse.s3fs писал в /tmp и нет способа отследить, какой файл растет, используя du -h /tmp

код, который я выполнял, был mysqldump --all-databases > /mnt/s3share/backup. sql, где s3share смонтирован с помощью fuse.s3fs и имеет каталог кэша, нацеленный на /tmp. Вот почему я думал, что mysqldump был причиной растущего использования хранилища в корне /.

после изменения каталога кэша fuse.s3fs на /mnt/mysql-data/tmp, проблема была решена.

это была моя команда монтирования до /tmp:

datastore /mnt/s3share fuse _netdev,allow_other,use_cache=/tmp,passwd_file=$PASSWDFILE 0 0

затем вот новая команда монтирования /mnt/mysql-data/tmp:

datastore /mnt/s3share fuse _netdev,allow_other,use_cache=/mnt/mysql-data/tmp,passwd_file=$PASSWDFILE 0 0 0

1
ответ дан 24 April 2021 в 00:40

Посмотрите на переменные innodb_% и datadir. Там может быть что-то вроде табличного пространства, которое все еще находится где-то в другом месте.

Если это не удается, посмотрите на каталог, в котором появляется корневая пачка, используя du во время работы mysqldump.

1
ответ дан 24 April 2021 в 00:40

Теги

Похожие вопросы