Mysql現在の設定をファイルにエクスポート


11

my.cnfファイルを失い、現在実行中のmysqlインスタンスからコピーをエクスポートする方法があるかどうか疑問に思っていました。

ありがとう!

回答:


16

3つのオプション

オプション1:mysqlクライアント内から

mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt

これにより、すべてのオプションがテキストファイルにキャプチャされます。

オプション2:Linuxコマンドラインから

ps -ef | grep mysqld | grep -v grep

これにより、mysqld_safeから設定されたmysqldで開始されたオプションが表示されます。

オプション3:サーバーに直接質問する

mysqld --help --verbose

「mysqld --help --verbose」画面の下部に、my.cnfからロードされた、またはデフォルト設定のmysqldの現在の設定が表示されます。


-1申し訳ありませんが、これは意味がありません。SHOW VARIABLESをテキストファイルにダンプし、プロセスリストをグレープしてその結果を何もせずに、mysqldにヘルプフラグを読んだと言うのはなぜですか?
コープ

@Coops-これらは3つの別個のものです。1つ目は、SHOW VARIABLESをテキストファイルにキャプチャします。2番目では、mysqlの起動時に/etc/init.d/mysqlで指定されているオプションを確認できます。3番目では、mysqldが現在動作しているものを画面の下半分に表示できます。これらの表示から/etc/my.cnfでこれらのオプションを設定するというレッグ作業を行うのはsamspot次第です。/etc/my.cnfを自動化および再生成するための何かを作成すべきですか?
-RolandoMySQLDBA

最初の行は「次のすべてを行う」ことで、質問への回答を得るための段階的なガイドを提供することを提案します。また、各ステップが何をするのか、それがどのように質問に答えるのかを説明しないため、混乱が増します。:
コープス

私が最初に答えを書いた方法に起因する混乱のためにすみません。
RolandoMySQLDBA

my.cnfを再生成するのが最良のケースですが(mysqlでこれができると期待していました)、これは回復するための本当に素晴らしい情報です。この情報をグーグルで検索しようとしましたが、データベースのバックアップに関する記事しか見つかりませんでした。ありがとう!
samspot

3

これらの指示は、centos 7.1のストックmariadb向けです。

ここでは、現在または将来のマシンの現在の設定を新しいインストールにバックアップまたは複製する方法を説明します。

設定のコピー元のマシンで、次を実行できます。

/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt

別のマシンにmariadb-serverをインストールして実行できます:

/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt

次に、両方のファイルを1つのディレクトリに配置します。この例では、「/ a /」です。

次に実行します:

comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)

出力がない場合、2つのファイルは同一です。つまり、両方のマシンのすべての設定がデフォルトになっています。

出力がある場合、一部の行はインデントされず、一部の行はインデントされます。

インデントされていない行は、最初のファイル(ここでは/a/mysql_current_settings.txt)にのみ存在します。

インデント行は、2番目のファイル(ここでは/a/mysql_default_settings.txt)にのみ存在します。

これで、mysqldを起動したコマンドラインで設定されたいくつかの設定を除き、すべての設定がわかりました。これらの設定は、/ etc / my.cnf、/ etc / my.cnf.d / *ファイル、カスタムスクリプト、またはエイリアスなどから取得できます。いずれの場合も、次のコマンドで確認できます。

ps -ef | grep mysqld

これで、新しいインストールで古いインストールとして構成するために変更する必要がある設定が非常に少なくなりました。


ここで、他の詳細について説明します。

centos 7.1では、次のコマンドは、mysqldを起動したコマンドラインで設定される一部の設定を除き、現在のすべての設定を表示します。

/usr/libexec/mysqld --help --verbose

合計で、以下を示します。

最初の部分では、「mysqld」の開始時に最初のパラメーターとして使用できる設定。

2番目の部分では、コンパイル時に設定が行われます。

3番目の部分では、現在の設定。

出力の最後の行に「実行中のMySQLサーバーが使用している値を確認するには」と入力しても、次のように入力します。

    mysqladmin variables -uroot -p

このコマンドは、/ etc / my.cnfで変更してmysqlを再起動しても、fe、bind-addressを表示しません。

また、次のコマンドは「bind-address」ではなく多くの設定を表示します。

mysql -uroot -p -e"SHOW VARIABLES;"

centos 7.1では、mysqldは$ PATHにないことに注意してください。


2

現在のmy.cnfを生成する私のお気に入りの方法は次のとおりです。

{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log

ただし、これはMac OS Xでは確実に機能しません。

これにより、my.cnfにインポートできるように、コメントアウトされたクリーンな変数ログが出力されます。

元のソース:http : //www.askapache.com/mysql/view-mysql-variables-my-cnf.html


注意事項:1. bsdmainutilsをインストールする必要がある2.警告:サーバーではなくmysqlクライアントのバージョンを書き込む
-gadelat

サーバーバージョンの場合、コマンドはmysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'です。私はクライアントとサーバーの両方が一緒にインストールされていると思うので、それは重要ではありません。{{{1and の目的は何1}}}ですか?
beppe9000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.