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