mysqldump 佔用大量空間
我有一台伺服器,
/
分區大小為 20GB。數據庫儲存在
/mnt/mysql-data
大小為 500GB 的分區中。現在問題來了。每當我執行
mysqldump
它時,它都會將分區填充/
到 100%。我已經tmpdir
將/mnt/mysql-data/tmp
. 我的數據庫總共大約 40GB,現在我想備份它們,/mnt/mysql-data/backups
但我無法繼續,因為/
分區已滿 100%。我的 mysqldump 命令是:mysqldump --all-databases > /mnt/s3share/backup.sql";
伺服器詳情:
- 10.2.22-MariaDB-log MariaDB 伺服器
- CentOS Linux 版本 7.7.1908(核心)
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
並且它的記憶體必須寫入,這可能是在創建 sql 轉儲時被填滿/tmp
的原因。/
但是,當我執行備份並觀察/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
導致 root 上所有不斷增長的儲存使用/
。將記憶體目錄更改為 後
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_% 變數和數據目錄。在其他地方可能還有類似表空間的東西。
如果做不到這一點,請在 mysqldump 執行時使用 du 查看 root 膨脹出現的目錄。