MySQLデータベースの異なる場所?


18

特定のデータベースをディスク上の別の場所に保存するようにMySQLを構成できますか?

まだ新しいデータベースをデフォルトの場所に移動したいのですが、いくつかのコンピューター間で同期を維持できるように、Dropboxフォルダーに保存したい特定のデータベースがあります。

これどうやってするの?


1
ちなみに、これを逆に行うことは可能です。データベースをそのまま残し、Dropboxからシンボリックリンクます。Dropboxは実際にはシンボリックリンクを理解せず、通常どおりシンボリックリンクを同期します。
TRiG

回答:


27

もちろんできます!root permisson付与する必要があります。lnのマニュアルページをお読みください。

MySQLは、データベースデータをで区切られたディレクトリに保存します/var/lib/mysql。最初に、選択したデータベースのファイルを配置するディレクトリを作成する必要があったと思います。ルート許可を付与し、MySQLデーモンを停止します。

# /etc/init.d/mysql stop

データを新しいフォルダーにコピーします。

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

MySQLデータファイルから古いディレクトリを削除します:(警告!常にSQLダンプを最初に作成してください!!!

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

MySQLデータディレクトリに戻るシンボリックリンクを作成します:(注意してください!最初にlnのマニュアルページを読んでください!!!

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

その後、準備ができて、MySQLを起動します。

# /etc/init.d/mysql start

警告!新しいディレクトリがMySQLで書き込みおよび読み取り可能でない場合、動作しません!たとえば、一般的な問題:新しいデータディレクトリをホームフォルダーに配置し、ホームフォルダーが他のユーザーによって読み取り保護されている(例:drwxrwx --- your yourdir)。

その方法について他のことを知りたいかどうか尋ねてください!


2
ありがとう!私はシンボリックリンクも考慮しませんでした。mysql内でそれを行う方法について考えるのに忙しすぎました。
コリン

8
/etc/apparmor.d/*mysqld新しいディレクトリも含めるように編集する必要があります。次にsudo service apparmor reload、MySQLを再起動する前に。
キーズクック

3
@KeesCook装備のヒントを本当にありがとう、それは私を夢中にさせた!! それはそれを置く方が良いように見えます/etc/apparmor.d/local(私のインストールにusr.sbin.mysqldがすでにそこだ)しかし、単一の追加が/full/path/to/new/database/dir/** rwk,私のためにそれをやった...
トビアスJ

どうもありがとう、ここで防具を編集する詳細も役に立ちます。起動時に自動的にマウントされないドライブにデータベースを配置しようとして速度が低下し、それにアクセスするにはルートユーザーが必要でした。仕事を拒否しました。編集されたfstabように、このようにドライブが起動後にファイルシステムにマウントされたことが、今ではすべてが動作します。
カルダモン

3

Ubuntuを使用している場合は、AppArmour構成ファイル/etc/apparmor.d/usr.sbin.mysqldにもエントリを追加する必要があります。追加しないと、ファイルやフォルダーを変更しても、許可エラーを記録し続けることに注意してください許可。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.