MySQLデータベースを別のドライブに移動するにはどうすればよいですか?


34

ローカルマシンでMySQL 5.5を使用して、大量の政府データを分析しています。デフォルトのドライブ(Win7 C:ドライブ)にあるローカルデータベースを作成しました。大容量のeSATA外付けドライブであるE:ドライブにデータを保存したいと思います。

どのような手順を実行する必要がありますか?

mysql 

dBをsqlファイルとしてエクスポートしてからファイルを保存することはできません。e:その後、dBを復元したい場合は、このファイルをインポートできます

@tq-それは機能しません。彼は、MySQLサーバーのデータディレクトリを変更したいと考えています。彼がそれをエクスポートしてインポートしても、それは同じドライブ上にあります!

データベースファイルを外部ドライブに移動する際の注意点は、コンピューターに接続したままにしておく必要があります。そうしないと、データファイルが見つからないためデータベースがクラッシュします
Stephen Senkomago Musoke

回答:


35
  1. mysqlをシャットダウンします。
  2. 現在のデータディレクトリ内のすべてのファイルを新しい場所に移動します(手順3の場所- datadirパラメータを確認してください)。
  3. my.iniファイルを見つけます(mysqlインストールディレクトリにあります)。datadir新しい場所を指すようにパラメーター値を変更します。
  4. mysqlを起動します。

これにより、mysqlを起動しようとしたときにエラーが発生しました(権限の問題)。私はここに投稿した解決策に落ち着きました。
snapfractalpop

1
@snapfractalpopの質問はWindows用です
アダム

@adam windowsは質問の本文に記載されていますが、windows onlyの質問としてタグ付けされておらず、windowsが見出しに記載されていません。他の非Windowsユーザーもこの質問に出くわす可能性があるため、コメントにリンクを投稿しました。
snapfractalpop

/のディレクトリパスのディレクトリ区切り文字として\ではなく、使用する必要があることがわかりましたdatadir。私は、Windows 10上でWAMPserverを使用しています
スティーブ

ProgramDataディレクトリは、ファイルエクスプローラーで非表示になっている場合があります。隠しファイルを表示するように設定を変更するまで、存在しないと思いました。
ウェストエース

6

あなたはウィンドウを求めていますが、ここではlinux / ubuntuの方向を探しているここで終わる人々のためのいくつかの良い方向があります:

仮定:

  • mysqlデータがexternal / usb / alternateドライブにあり/mountpoint/var/lib/mysql、おそらく死んだコンピューターまたは古いインストールからのものです
  • ローカルの新しいUbuntuインストールに移動したい /var/lib/mysql
  • でMySQLを停止します
    sudo /etc/init.d/mysql stop
  • 現在の(クリーンな)MySQLデータディレクトリのバックアップを作成します
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup
  • 次に、次のコマンドを使用して、古いデータディレクトリを古いドライブからコピーします。
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    ここでmountpoint、マウントへのパスです。
  • 次に、MySQLを再起動します。
    sudo /etc/init.d/mysql start

運が良ければ、MySQLが再起動し、古いデータベースが戻ってくるはずです。

ソースmb_webguy@ubuntuforums.org


3
(!)configはまだ古い場所を指しているため、これは機能しません
-ADOConnection

4

解決策1:

  1. まず、 `mysqldumpを使用してデータをバックアップします。
  2. 公式パッケージからMysqlサーバーをインストールする場合、サーバーのbinディレクトリからプログラムMySQLINstanceConfig.exeを実行することで実行できます。
  3. データをインポートする

MySQLINstanceConfig.exe

2番目の解決策(推奨されませんが、同じマシンで動作します)

  1. Mysqlサーバーを停止します。
  2. データをデータディレクトリから新しいディレクトリにコピーします
  3. my.cnfファイルを開きます(私の場合は「C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini」)
  4. datadir = "C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data \"のような行を見つけて、新しい場所へのパスを変更します
  5. サーバーを起動します

バージョン5.6から、MySQLInstanceConfig.exeは配布されなくなりました。この機能はインストーラーに置き換えられています。http://bugs.mysql.com/bug.php?id=66306


データを移動するための同等のLinuxプログラムはありますか
Ron Piggott

2番目の方法でデータを移動した後、MariaDB(バージョン5.5)を起動できませんでした。サービスユーザーに新しいdatadirへのアクセスを許可すると、サービスが開始され、DBに接続できます。ただし、テーブルへのアクセスは失敗します:[ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.。アクセス許可が正しく設定されていることを確認するにはどうすればよいですか?
Bram

2

Windowsの場合、MySQL Installer 1.4.6(2015-04-07)の時点で、my.iniファイルの場所を指定するレジストリキーでデータの場所を指定できるため、データがデフォルト以外の場所に最初にインストールされた場合my.iniファイルはではありませんC:\ProgramData\MySQL\MySQL Server x.x\

レジストリ値の場所は(少なくともMySQL 5.6以降)です。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationは、REG_SZMySQLアプリケーションファイルがあるフォルダーを指します。デフォルトでは:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationは、REG_SZあるフォルダーを指しますmy.ini。デフォルトでも:C:\Program Files\MySQL\MySQL Server x.x\

また、my.iniファイルパスは、このレジストリキーの下HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXImagePath REG_EXPAND_SZ値にあるserviceコマンドに含まれて います。

この文字列のデフォルト値は次のとおりです。 "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

結論として、このシナリオでデータファイルを移動するには、@ ITCutiesによって投稿された手順にいくつかの追加を加える必要があります。

完全な手順は次のとおりです。

  1. mysqlをシャットダウンします。
  2. 上記のDataLocationレジストリ値を検索して、現在のmy.iniファイルの場所を見つけます。ファイルを移動my.iniする場合は、DataLocationパスを更新し、my.iniファイルをこの新しいパスに移動します。
  3. my.iniファイルの場所を変更する場合は、上記のサービスコマンドレジストリキーのパスを更新する必要があります。
  4. my.iniファイルを開き、datadirパラメーターを見つけます。このdatadirパスからデータを保存するパスにファイルを移動し、datadirこの新しいパスでパラメーターを更新します。
  5. mysqlを起動します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.