デフォルトのMySQLデータディレクトリを別のパスに変更することはできますか?以前の場所からデータベースにアクセスできますか?
デフォルトのMySQLデータディレクトリを別のパスに変更することはできますか?以前の場所からデータベースにアクセスできますか?
回答:
次のコマンドを使用してMySQLを停止します。
sudo /etc/init.d/mysql stop
/var/lib/mysql
次のコマンドを使用して、既存のデータディレクトリ(デフォルトではにあります)をコピーします。
sudo cp -R -p /var/lib/mysql /newpath
次のコマンドでMySQL構成ファイルを編集します。
sudo gedit /etc/mysql/my.cnf # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
のエントリを探しdatadir
、パス(である必要があります/var/lib/mysql
)を新しいデータディレクトリに変更します。
ターミナルで、次のコマンドを入力します。
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
で始まる行を探し/var/lib/mysql
ます。/var/lib/mysql
新しいパスで行を変更します。
ファイルを保存して閉じます。
次のコマンドでAppArmorプロファイルを再起動します。
sudo /etc/init.d/apparmor reload
次のコマンドでMySQLを再起動します。
sudo /etc/init.d/mysql restart
MySQLにログインすると、以前と同じデータベースにアクセスできます。
alias /var/lib/mysql/ -> /newpath/,
素早く簡単:
# Create new directory for MySQL data
mkdir /new/dir/for/mysql
# Set ownership of new directory to match existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql
# Set permissions on new directory to match existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql
# Stop MySQL before copying over files
service mysql stop
# Copy all files in default directory, to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/
/etc/my.cnf
ファイルを編集し、以下の[mysqld]
行を追加します。
datadir=/new/dir/for/mysql/
CageFS(CloudLinuxの有無にかかわらず)を使用していて、MySQLディレクトリを変更する場合は、このファイルに新しいディレクトリを追加する必要があります。
/etc/cagefs/cagefs.mp
次に、次のコマンドを実行します。
cagefsctl --remount-all
現在のデータを新しいディレクトリにコピーしてmy.cnf
、MySQL を変更する必要があります。
[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/
サーバーが稼働していないときは、データベースをコピーする必要があります。
ln -s
静的シンボリックlynx を使用している場合、それはうまくいきませんか
my.cnf
最初に、mysqlサーバーを停止する必要があります。例えば
# /etc/init.d/mysql stop
その後、古いデータディレクトリ(/ var / lib / mysqlなど)をコピーする必要があります。新しいディレクトリへの特権
# cp -R -p /var/lib/mysql /new/data/dir
これで/etc/mysql/my.cnf
、新しいデータを変更してサーバーを再起動できます
# /etc/init.d/mysql restart
私のようにdebianを使用していて、mysqlディレクトリをホームまたは/ home / ...のパスに移動する場合、解決策は次のとおりです。
mariadbのドキュメントで解決策を見つける1日。これが一部の人に役立つことを願っています!
私は自分のマシンにデータベースを保持したいが、外付けハードドライブにもデータがあり、2つの使用を切り替えたいと考えていました。
Macを使用していて、Homebrewを使用してMySQLをインストールしている場合は、これでうまくいくはずです。それ以外の場合は、datadir
マシンのMySQL を適切な場所に置き換えるだけです。
#cd to my data dir location
cd /usr/local/var/
#copy contents of local data directory to the new location
cp -r mysql/ /Volumes/myhd/mydatadir/
#temporarily move the old datadir
mv mysql mysql.local
#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql
次に、元に戻す場合は、次のようにします。
mv mysql mysql.remote
mv mysql.local mysql
そして、ローカルデータベースを再び使用しています。お役に立てば幸いです。
最初にmysqldを停止します
mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
次に、/etc/mysql/my.cnf
スタートmysqldのdatadirを変更します。
注:
#1:おそらくSELinux設定を調整する必要があります(問題が発生した場合はSELinuxを無効にして試してください)。Apparmor(Ubuntu)にも問題がある可能性があります。
最初にmysqlを停止します
sudo service mysql stop
mysqlデータを新しい場所にコピーします。
sudo cp -rp /var/lib/mysql /yourdirectory/
apparmorを使用している場合は、次のファイルを編集して次の操作を行います
sudo vim /etc/apparmor.d/usr.sbin.mysqld
where / var / lib /を/ yourdirectory /に置き換え、ファイルに存在しない場合は以下を追加します
/yourdirectory/mysql/ r,
/yourdirectory/mysql/** rwk,
コマンドでファイルを保存します
:wq
ファイルmy.cnfを編集します
sudo vim /etc/mysql/my.cnf
where / var / lib /を/ yourdirectory /に置き換えて、次のコマンドで保存します
:wq
最後にmysqlを起動します
sudo service mysql start
@ raid0の詳細、最適化ici
このソリューションはWindows 7でWorkbenchを使用して機能します。これを行うには、管理者権限が必要です。それはあなたが本当にあなたのデータを保存したい場所への(ショートカットのような)ジャンクションを作成します
Workbenchを開き、INSTANCE-Startup / Shutdownを選択しますサーバーを停止します
https://bitsum.com/junctionmaster.phpからJunction Masterをインストールします
C:\ ProgramData \ MySQL \ MySQL Server 5.6に移動します
[データ]を右クリックして[移動してからフォルダにリンク]を選択します。警告の宛先を「引用符なしの新しいデータディレクトリ」に指定します。[移動してリンク]をクリックします。
ここで「引用符なしの新しいデータディレクトリ」に移動します。
[データ]を右クリックし、[セキュリティ]タブをクリックします。[編集]をクリックします。[タイプ]の[ネットワークサービスの追加]をクリックし、[名前の確認]をクリックします。[OK]をクリックします。
Workbenchに戻り、サーバーを起動します。
この方法は、Windows 7 EnterpriseでMySQL Workbench 6.2を使用して動作しました。
あなたがWindowsユーザーであり、ここに上陸してすべての回答がLinuxユーザーに対するものであることが判明した場合、失望しないでください!私のように時間を無駄にさせません。
解決策の前に少しでたらめな話:
MySQLはDataディレクトリを使用して、作成したさまざまなデータベースのデータを保存します。結局のところ、データベースクラスで学んだデータベースの約束が損なわれていないことを保証するために、アプリケーションとファイル形式にいくつかの追加のジャグラリを加えたファイルの形式でそれらを保存する必要があります。
ここで、将来作成する可能性のある大規模なデータベースを格納するのに十分なスペースがあることを確認したいので、Hey!空き容量の多い別のドライブに配置したい。
したがって、次のことを行います。
ステップ-1:MySQLサービスを停止します。
Window Key + R - will open Run
servies.msc - will open services manager
Locate MySQL80 (80 is for version 8.0, look for the one you've).
Stop it. (Right click, Stop)
ステップ-2:現在のデータディレクトリを見つける
Goto C:\ProgramData\MySQL\MySQL Server 8.0
デフォルトでは、ここにという名前のフォルダが存在するはずです。Data
これは、MySQLがデフォルト設定で使用するフォルダです(別の適切な場所が見つからない場合)が、それを確認してみましょう。
my.ini
ファイルを見つける、そこにあるはずです。
それをエディターで開きます(Notepad ++の可能性があります)。
CTRL + Fをdatadir
実行して、ファイルを見つけます。
ここで言及されているのは、MySQLが現在データディレクトリとして使用している実際の場所です。これは変更したいものです。
ステップ-3:新しいデータディレクトリに置き換えます。
新しいデータディレクトリをW:__ MySQL_Dataにしたいとします。レッツ・チェンジ
datadir
の値my.ini
はこの値にファイル。覚えておく必要がないように、前の値をコメントにしておいてください。
# Path to the database root
# datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
datadir=W:/__MySQL_Data
を使用xcopy
して、デフォルトdatadir
をにコピーしますW:\
。コマンドプロンプトを起動(ウィンドウ+ R、cmd、Enter)
>> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0" "W:\" /E /H /K /O /X
コピーしたフォルダーの名前を、変更した新しいdatadir
値に変更します。ここに:W:/__MySQL_Data
なぜ単にコピーしないのですか?それはCOOLではないので、コピーしたフォルダの権限を失わないようにするのに役立ちます。これにより、を再起動したときにMySQL80
、「ローカルコンピュータのMySQL80サービスが開始して停止しました。一部のサービスは、他のサービスやプログラムでは使用されていません。」-礼儀:マイクロソフト
ステップ-4:サービスの再起動
Well, go back to the Services Manager to Start again,
"MySQL80" that you stopped, to restart it again.
ステップ-5:完了!仕事に戻りましょう!!
マシンをアップグレードして、ボックス間を移動するとき、私はしばしばこれを行う必要があります。/ var / lib / mysqlをより適切な場所に移動することに加えて、古いMySQLインストールから古いDBテーブルを復元する必要があることがよくあります。これを行うためには...
MySQL /home
が別の物理ディスクからマップされたため、MySQLをディレクトリに移動する必要がありました。ライブをより簡単にするために、my.cnfでディレクトリを変更/home/mysql
する代わりに、元のディレクトリの代わりに新しいディレクトリをマッピングしました/var/lib/mysql
。それは私たちにとって魅力のように機能します(CentOS 7.1でテスト済み)。
新しいディレクトリを作成し、正しい権限を設定します。
mkdir -p /home/mysql
chmod 755 /home/mysql
chown mysql:mysql /home/mysql
実行中の場合はMySQLを停止します。
systemctl stop mysql
データディレクトリを移動します。
mv -f /var/lib/mysql/* /home/mysql
永続的なマウントを作成して実行します。
echo "/home/mysql /var/lib/mysql none bind 0 0" >> /etc/fstab
mount -a
サーバーを再起動します。
systemctl start mysql
これをプログラムで実行したい場合(geditを使用した手動のテキスト入力なし)は、上記のuser1341296の回答に基づくDockerfileのバージョンです。
FROM spittet/ruby-mysql
MAINTAINER you@gmail.com
RUN cp -R -p /var/lib/mysql /dev/shm && \
rm -rf /var/lib/mysql && \
sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \
/etc/init.d/mysql restart
こちらのDockerハブで入手できます:https : //hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/
最初に、あなたはあなたの設定ファイルがどこにあるか知っているべきですか?あなたの設定ファイルはどこですか?
apt-getまたはyum installでインストールした場合。
設定ファイルは
/etc/mysql/my.cnf
データファイルが現れるかもしれません
/ var / lib / mysql
そして、あなたがすべきことは
そして、仕事が完了しました。
しかし、それをaptまたはyumでインストールしなかった場合、ディレクトリはこれが気に入らない可能性があり、mysqlファイルは
mysqlはどこですか
SuSE 13.1では、これはmysqlデータディレクトリを/ home / example_user /などの別の場所に移動し、よりわかりやすい名前を付けるために正常に機能します。
/ var / lib /内:
# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql
私はmysqlを再起動しました:
# systemctl restart mysql.service
しかし、それさえ必要なかったのではないかと疑っています。
ある環境では、mysqlデータディレクトリを新しい場所に変更しましたが、mysqlサーバーの再起動中に時間がかかっていました。そのため、ポートを確認したところ、他のプロセスがmysqlポートでリッスンしていることがわかりました。そのため、プロセスを終了してmysqlサーバーを再起動しましたが、うまくいきました。
以下の手順に従って、データディレクトリを変更しました。 Linuxのmysqlデータディレクトリを変更する
上記のステップは基礎と基本です。私はそれらを追跡しましたが、それでも「mysqlは起動に失敗しました」というエラーを受け取りました。
新しいフォルダにmysqlデータを格納するには、フォルダに権限と所有権mysql:mysqlがあることを確認する必要があります。
これに加えて、たとえば/ data / mysql /がある場合、mysqlの親ディレクトリの権限と所有権を確認する必要があります。ここで、/ data /ディレクトリはroot:rootである必要があります。/ mysqlの親ディレクトリの所有権を変更した後、「mysqlが起動に失敗しました」のエラーを修正しました。私のVMのOSはRHEL 7.6です。
SE linuxを使用している場合は、/ etc / selinux / configを編集し、SELINUX = enforcingをSELINUX = permissiveに変更して、permissiveモードに設定します。
datadir
プロパティ