MySQL veritabanları için farklı konumlar?


18

MySQL'i belirli bir veritabanını diskte ayrı bir yerde saklayacak şekilde yapılandırabilir miyim?

Yine de yeni veritabanlarının varsayılan konuma gitmesini istiyorum, ancak birkaç bilgisayar arasında senkronize kalabilmek için Dropbox klasörümde saklamak istediğim belirli bir veritabanı var.

Bunu nasıl yapabilirim?


1
Bu arada, bunu başka şekilde yapmak mümkündür. Olduğu gibi veritabanı bırakın ve sembolik bir link için Dropbox dan o. Dropbox sembolik bağlantıları gerçekten anlamıyor ve bunları normal şekilde senkronize ediyor.
TRiG

Yanıtlar:


27

Tabi ki yapabilirsin! Kök izin vermelisin . Oku ln manuel sayfaları.

MySQL, veritabanı verilerini ayrılmış dizinlerde saklar /var/lib/mysql. Bence, önce seçilen veritabanının dosyalarını koymak istediğiniz bir dir yapmak zorunda kaldı. Kök izin verin, MySQL deamon'u durdurun:

# /etc/init.d/mysql stop

Verilerinizi yeni klasörünüze kopyalayın:

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir

Eski dizininizi MySQL veri dosyalarından kaldırın: ( Uyarı! DAİMA önce SQL dökümü yapın !!! )

# rm -R /var/lib/mysql/DATABASENAME

MySQL veri dizinine bir symlink yapın: ( Dikkat edin! Önce ln'nin man sayfasını okuyun !!! )

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME

Bundan sonra hazırsınız, MySQL'inizi başlatın:

# /etc/init.d/mysql start

Uyarı! Yeni yönünüz MySQL tarafından yazılmaz ve okunamazsa, bu işe yaramaz! Örnek, ortak sorun: yeni veri dizininizi ana klasörünüze yerleştirirsiniz, ana klasörünüz başkaları tarafından korunur (ör: drwxrwx --- siz sizdirsiniz).

Bu yöntemle ilgili başka şeyler bilmek istiyorsanız sorun!


2
Teşekkürler! Simgeleri bile düşünmedim, mysql içinde yapmanın yollarını düşünmekle çok meşguldüm.
Colin

8
/etc/apparmor.d/*mysqldYeni dizini de içerecek şekilde düzenlemek istersiniz . Ardından sudo service apparmor reloadMySQL'i yeniden başlatmadan önce.
Kees Cook

3
@ KeesCook bariz ipucu için çok teşekkürler, bu beni deli ediyordu !! /etc/apparmor.d/localGerçi koymak daha iyi gibi görünüyor (kurulumumda zaten bir usr.sbin.mysqld var), benim için bir tane ekledi /full/path/to/new/database/dir/** rwk,...
Tobias J

Çok teşekkürler, burada apparmor düzenlemenin bazı ayrıntıları da yararlıdır. Ben otomatik olarak önyükleme bağlanmayan bir sürücüye veritabanı koymak çalışırken yavaşladı ve erişmek için gerekli kök kullanıcı. Çalışmayı reddetti. Düzenlenen fstabgibi bu böylece tahrik ön-yüklemesinden sonra dosya sistemi monte edildiğini, şimdi her şey çalışıyor.
kakule

3

Ubuntu kullanıyorsanız, AppArmour yapılandırma dosyasına /etc/apparmor.d/usr.sbin.mysqld dosyasına da bir giriş eklemeniz gerektiğini lütfen unutmayın, aksi takdirde dosyaları ve klasörü değiştirseniz bile yazma izni hataları almaya devam edersiniz. izinleri.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.