У меня есть сервер, а размер раздела /
составляет 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
Я вижу, как удаляются огромные файлы. Может ли это быть?
ОК, я смог решить эту проблему, переместив каталог кэша 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
Посмотрите на переменные innodb_% и datadir. Там может быть что-то вроде табличного пространства, которое все еще находится где-то в другом месте.
Если это не удается, посмотрите на каталог, в котором появляется корневая пачка, используя du во время работы mysqldump.