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.