Memindahkan / tmp ke drive terpasang yang berbeda


1

Saya telah memetakan datadir MySQL saya ke disk yang berbeda (dan lebih besar) dengan 900GB

[root@web ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/xvda1       40G   24G   14G  64% /
    tmpfs           7.4G     0  7.4G   0% /dev/shm
    /dev/xvdb1      886G  658G  184G  79% /mnt/cbsvolume1

/ Tmp terletak di disk 40GB yang lebih kecil

[root@web ~]# df -h /tmp
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       40G   24G   14G  64% /

Tampaknya MySQL menggunakan direktori / tmp dan karena itu saya kadang-kadang kehabisan ruang disk ketika mencoba melakukan operasi MySQL besar.

Bagaimana saya bisa mengubah /tmpagar juga menggunakan disk yang lebih besar?


Bagi saya sepertinya Anda /tmpbahkan tidak berada di disk.
Der Hochstapler

@ OliverSalzburg Saya punya perasaan kuat bahwa Anda benar, tetapi tidak yakin apa yang Anda maksudkan :) Bisakah Anda menguraikannya?
Noam

tmpfs dipasang di memori yang tidak stabil. Berarti itu berada di RAM Anda, bukan di hard drive Anda. Itu sebabnya konten hilang setelah Anda me-reboot mesin Anda. Yang sedang berkata, saya salah membaca output yang Anda posting di pertanyaan Anda. Saya membayangkan /tmpmenjadi tmpfs, yang tidak terjadi.
Der Hochstapler

Jawaban:


1

Sejauh yang saya tahu, isi /tmpdihapus pada reboot.

Namun, dalam kasus Anda, Anda dapat mencoba mengubah / menambahkan TMPDIRvariabel lingkungan di:

/etc/mysql/conf.d/local.cnf

Apakah itu, df -h /tmpmasih menunjukkan hal yang sama. Bagaimana saya memverifikasi itu 'berhasil'?
Noam

Keren. Dan apakah pengaturan ini sementara sampai reboot? Bisakah saya menambahkan baris ini ke semacam skrip booting dan membuatnya permanen? (btw saya juga percaya / tmp dihapus saat reboot, mysql hanya menggunakannya untuk tabel sementara dan semacamnya)
Noam

Saya benar-benar mencobanya, tetapi mysql masih menggunakan /tmpdari mount yang lebih kecil. Juga, saya tidak punya direktori /etc/mysql/mungkin di tempat yang berbeda?
Noam

Baca ini stackoverflow.com/questions/2482234/… (Anda dapat menggunakan my.cnffile juga)
Cornelius

1
Iya nih. Saya benar-benar melihat kesalahan yang saya dapatkan adalah: /usr/libexec/mysqld: Can't create/write to file '/mnt/cbsvolume1/newTmpDir/ibvxXVDh' (Errcode: 13)Jadi saya kira saya perlu menambahkan premisi ke direktori itu? Jadi saya juga melakukannya chown mysql:mysql /mnt/cbsvolume1/newTmpDirdan sepertinya berhasil. Terima kasih!
Noam

1

Ubah variabel lingkungan TMPDIR ke sistem file / direktori dengan lebih banyak ruang disk.

Edit file konfigurasi lokal /etc/mysql/conf.d/local.cnf. File ini berisi perubahan lokal Anda - dan tidak akan ditimpa jika Anda memutakhirkan mysql. Catatan file config dapat disimpan di lokasi yang berbeda - gunakan find untuk menemukan file config default my.cnf. Biasanya local.cnf akan disimpan di direktori yang sama.

sudo find / -name my.cnf     # look for path of config files

Edit local.cnf misalnya sudo vi /etc/mysql/conf.d/local.cnf

Tambahkan baris ini ke local.cnf:

[mysqld]
tmpdir = /your/newpath

Kemudian mulai kembali mysql.

Dari dokumentasi MySQL :

B.5.4.4 Di mana MySQL Menyimpan File-File Sementara

Di Unix, MySQL menggunakan nilai variabel lingkungan TMPDIR sebagai nama jalur direktori tempat menyimpan file sementara. Jika TMPDIR tidak disetel, MySQL menggunakan standar sistem, yang biasanya / tmp, / var / tmp, atau / usr / tmp.


Bisakah Anda menunjukkan cara terbaik untuk berubah dan jika saya harus menghentikan mysql sebelumnya?
Noam

Lihat jawaban yang diedit. Anda tidak perlu menghentikan mysql sebelum melakukan perubahan.
tersangka

Terima kasih. Saya agak bingung tentang perbedaan antara ini dan export TMPDIR=<path>saran. Juga, saya tidak punya /etc/mysql/direktori, mungkinkah itu terletak di tempat yang berbeda?
Noam

Saya tidak merekomendasikan menggunakan ekspor - kecuali jika Anda berencana untuk memulai mysql dari shell yang sama yang mengeluarkan exportperintah. Gunakan findseperti yang dijelaskan dalam jawaban yang diedit.
tersangka
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.