Назад | Перейти на главную страницу

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";

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

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 Я вижу, как удаляются огромные файлы. Может ли это быть?

Хорошо, я смог решить эту проблему, переместив каталог кеша 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

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

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