私は自分のMacが修理されるまで、一時的に友人のMacを使用していました。そこで今週初めに、必要なデータベースがたくさんある彼のMacのユーザーアカウントを削除しました。そのアカウントを削除する前にほとんどのユーザーデータをバックアップしていましたが、すぐにデータベースのバックアップを逃したことに気付きました。幸いなことに、おそらくこれの理由は、データベースデータディレクトリが一般的にユーザーアカウントの外部にあることです。この記事では、友達のユーザーアカウントを使用してこのDBデータを取得する方法の箇条書きについて説明します(または、新しいアカウントを作成して同じ手順を実行することもできます)。
-
brew install mariadb
を実行して、mariadbがまだインストールされていることを確認します 。利用可能であることがわかりましたが、homebrewは別のユーザーアカウントから作成されたため、インストールディレクトリにアクセスできませんでした。したがって、最初に実行してこれを回復します:
sudo chown -R $(whoami) /usr/local/bin
コマンドがアクセスできないフォルダーを示すエラーダンプをスローした場合は、各フォルダーに対して同じコマンドを実行できます。 brew upgrade mariadb
も実行しました 新しいmariadbインストールでデータを最新の状態に保つため(ただし、データベースをバックアップするまで、これを一般的に実行することはお勧めしません)。
- 次に、mariadbが使用するデータディレクトリを特定し、その上でchownを実行する必要があります。これは、以下を実行することで実行できます:
brew services list
これにより、実行中のサービスとその実行構成のリストが表示されます。 mariadbタスクの構成を開き、パラメーター--datadir
を確認するだけです。 XML内-引数ブロック内にある必要があります。私の場合、これは--datadir=/usr/local/var/mysql
でした。 。次に、そのパスをコピーして実行します。
sudo chown -R $(whoami) /usr/local/var/mysql
この時点で、データディレクトリを自分のMacにコピーして、データベースを直接開いてみませんか?ここでの問題は、フォルダに .ibdしかないことです。 および.frm mySQLによって実際にインポートできないファイル。したがって、このデータディレクトリを使用してmysqlサーバーを再度実行してから、エクスポートする必要があります。
- 次に、mysqlをスムーズに起動できるように、進行中のmysqlサーバーを停止する必要がありました。私はこれを実行して行います:
brew services stop mariadb
ps aux | grep mysql
最後のコマンドは、実行中の他のmysqlインスタンスがないことを確認することです。コマンドがmysqlを実行しているプロセスを返す場合は、kill -9コマンドを使用してそれらを強制終了するか、Activity Monitorを開き、検索を使用してmysqlをフィルタリングし、手動で強制終了する必要があります。
これで、次を使用して新しいmysqlインスタンスを開始できます。
brew services start mariadb
または、自作サービス構成のXMLファイルに記載されているbinフォルダーにあるプログラムを呼び出すこともできます。つまり、最初のプログラム文字列を取得して、mysqld_safe
を置き換えます。 mysql.server start
へ コマンドを実行します。私の場合、次のコマンドを実行してこれを実行しました。
/usr/local/opt/mariadb/bin/mysql.server start
SUCCESSを返します!サービスが正常に開始された場合。それ以外の場合は、エラーログを確認する必要があります(/usr/local/var/mysql
にありました) 私のためのフォルダ)何がうまくいかなかったのかを理解し、グーグルで解決します。
これでほぼ完了です。これで、通常どおりにデータベースをバックアップできます。私はこれを実行して行います:
mysql -u root -p<password>
show databases
そして、これはすべてのデータベースのリストを提供します。次に、バックアップするデータベースごとに次のようにバックアップコマンドを実行します。
mysqldump -u root -p<password> dbname > dbname.sql
そして、それはほとんどそれが行われる方法です。そして、データベースを自分のラップトップにエアドロップして完了しました。