web-dev-qa-db-ja.com

MySQLデータファイルを別のパーティションに移動する方法

ハードドライブを2つのパーティションに分割しているため、Ubuntuを簡単に再インストールして、ホームディレクトリのデータを失うことなく異なるバージョンを試すことができます。次のようなセットアップです。

20GB  -> /     (root)
180GB -> /home 

私は多くの開発作業を行っているため、/var/wwwフォルダーを/home/valorin/workspaceにシンボリックリンクしています。

しかし、MySQLデータファイルでもこれを行いたいと思っています。マシンを再インストールするたびに、完全なSQLdumpを実行してから、さらに作業を行う前にすべてのDBを復元する必要があることに悩まされています。

MySQLを壊さずにこれを行う最良の方法は何ですか?

28
Stephen RC

実際、この質問に対するUbuntu固有の潜在的な答えがあります。

Gergoesリンクで述べたように、これは基本的に/ etc/mysql/my.cnfを変更し、datadir =[mysqld]セクション。これまでのところ、答えの不特定の部分。

Ubuntuのややモダンなバージョンを実行していると仮定すると、 AppArmor がデフォルトでインストールされ、/ usr/sbin/mysqldのプロファイルが強制モード。そのデフォルトのプロファイルは新しいデータディレクトリを受け入れない可能性が高いでしょう。

新しいdatadirが/ home/data/mysqlになると仮定しましょう。

ファイル/ etc/apparmor.d/usr.sbin.mysqldを開くと、ルールの中にこれらの2行があります。

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

上記の例を想定すると、これらの2行で置き換えるか(おそらく望ましい)補完する必要があります。

/home/data/mysql/ r,
/home/data/mysql/** rwk,

MySQLサーバーを新しいdatadirで起動する前に、新しいapparmorプロファイルを明示的に再ロードする必要もあります。

$ Sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
31
andol

スーパーユーザーには、この問題を解決する方法についての手順ごとの素敵な手順があります

同じことを行うための別の命令セットがあります http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html

ここに再投稿されます。スーパーユーザーにできる場合は、オリジナルに投票してください。

パーミッションに関する一般的な混乱の後、問題はパーミッションとパスが正しくないことではなく、AppArmorがmysqlによる新しい場所への読み書きを妨げていることに気づきました。

これは私の解決策です:

まず、MySQLを停止して、いじっている間に奇妙なことが起こらないようにします。

$ Sudo stop mysql

次に、すべてのデータベースディレクトリを新しいホームに移動します。

$ Sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

ファイルは移動しないでください。ファイルはmysqlによって生成され、フォルダー(データベース)を移動するだけです。

次に、mysqlが新しいフォルダーを使用できるようにAppArmorに丁寧に依頼します。

$ Sudo vim /etc/apparmor.d/usr.sbin.mysqld

行を追加します。

/new-mysql-dir/ r,
/new-mysql-dir/** rwk,

次に、mydirにdatadirが移動したことを伝えます。

$ Sudo vim /etc/mysql/my.cnf 

行を変更します。

datadir=/var/lib/mysql

に:

datadir=/my-new-db-dir/

注:データベースのセットアップによっては、innodb-data-home-dirなども変更する必要がある場合があります。

次に、AppArmorを再起動して新しい設定を読み取ります。

$ Sudo /etc/init.d/apparmor restart

そして、新しいdatadirを使用してMySQLを再度起動します。

$ Sudo start mysql

お役に立てれば!

4
nelaaro

私がVirtualBoxを使用していて、MySQL datadirをホストシステムの共有フォルダーに移動する必要がある場合は、 http://vacilando.org/en/article/moving-mysql-dataの簡単なチュートリアルに従ってください。 -files-virtualbox-shared-folder

0
Vacilando

これは、Ubuntu固有ではありません。それにもかかわらず、ここに役立つかもしれないものがあります: http://developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location

0
Nathan Osman