sql >> データベース >  >> RDS >> MariaDB

別のユーザーアカウント(macOS)からのmySQLインスタンスの回復

    私は自分の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
    

    そして、それはほとんどそれが行われる方法です。そして、データベースを自分のラップトップにエアドロップして完了しました。


    1. WiXからSQLExpressをブートストラップしますか?

    2. MySQLエラーを取り除く方法「プリペアドステートメントは再準備する必要があります」

    3. リレーショナルデータベースで継承モデリングを行う方法は?

    4. ClusterControlCLIからPostgreSQLデータベースを管理する方法