Masalah

Client punya server MySQL yang disknya hampir penuh, yang jadi masalah

  1. Server tidak mau di upgrade
  2. MySQL server harus tetap jalan, tidak bisa down
  3. Menggunakan formula (dump & delete) mysqldump lalu menggunakan command sql untuk delete tidak bisa digunakan karena malah membuat MySQL service down
  4. Mau hapus tanpa dump terlebih dahulu tidak bisa, akan tetap membuat MySQL down

Yang sudah dilakukan untuk bikin free disk

  1. Hapus kernel-kernel lama

  2. Vacuum journalctl log

Lumayan, tapi hanya bisa buat free space ratusan MB saja


Solusi

Backup dan archive dengan percona pt-archiver

Jika data lama itu tidak diperlukan, saya biasa menggunakan

sudo pt-archiver \
	--source h=localhost,D=NamaDatabase,t=NamaTabel,u=root,p=PasswordRoot \
	--where "xxx" \
	--purge \  
	--limit 1000 \  
	--commit-each \  
	--no-check-charset \  
	--progress 10000 \  
	--statistics

Jika data ingin kamu backup terlebih dahulu

sudo pt-archiver \
  --source h=localhost,D=NamaDatabase,t=NamaTabel,u=root,p=PasswordRoot \
  --where "xxx" \
  --limit 1000 \
  --commit-each \
  --no-check-charset \
  --progress 10000 \
  --statistics \
  --file '/tmp/backup-%Y-%m-%d-%T.sql' \
  --output-format sql

Setelah melakukan ini, disk kamu tidak akan bertambah.

Tapi data_free di tabel kamu yang akan bertambah, gunakan SHOW TABLE STATUS LIKE 'NamaTable'\G untuk melihat data_free di tabel