2011-01-08 8 views
5

同じマシンに2つのmysqlインスタンスがあります。インストールは/ usr/loca/mysql1と/ usr/local/mysql2にあります。mysqlのデフォルトのmy.cnfパスを変更する

私は別のmy.cnfファイルを/ etc/mysql1と/ etc/mysql2に置いています。ソースディストリビューションと--prefix =/usr/local/mysql1オプションを使用して自分のSQLの最初のインスタンスをインストールしました。 2番目は、同じディレクトリを/ usr/local/mysql2にコピーしpastinfしています。

/usr.local/mysql/libexecでmysqlデーモンを起動すると、/ etc/mysql1のmy.cnfファイルが読み込まれます。/usr/local/mysql2でmysqlデーモンを起動すると、同じmy.cnfファイルが読み込まれます。私はこれらの2つの場所にある.cnfファイルで定義されたポート番号と.sockファイルを別々に持っています。

mysqld起動時に--defaults-file =/etc/mysql2/my.cnfオプションを使用すると、2番目の場所にあるmy.cnfファイルを読み取ることができます。私はデーモンを起動するたびにこれを入力する必要はありません。

もし私が正しいmys.cnfファイルをどのmysqlデーモンに読み込ませるかをもっとインスタンス化するには? mysqldの背後にあるretionaleは、my.cnfファイルとリンクしています。

どのように各インスタンスのmy.cnfファイルの場所を事前に定義できますか。

+0

別々のmysqld(またはmysqlmanager)起動スクリプトを作成して別々に作成する – ajreal

+0

あなたのOSは何ですか? –

答えて

6

すでに発見したように、MySQLには設定ファイルの検索場所がコンパイルされています。これを変更して自分自身を再コンパイルすることもできますが、--defaults-fileオプションがmysqldにあり、完全に異なる設定パスを使用するように指示されています。 --data-dirと組み合わせると、同じバイナリとライブラリを扱う間に、別のポート(アドレスがあれば)にバインドされ、完全に別々のデータセットで動作するMySQLのインスタンスを複数起動することができます。

従来、ほとんどのオペレーティングシステムのディストリビューションでは、MySQLの「デフォルト」インスタンスを起動するための単一のinitスクリプトがバンドルされていました。つまり、「通常の」場所にインストールされているものと、標準の設定パスがあります。これは一般的なケースに対応するためですが、後は​​何かが異なるので、個別のインスタンスを起動するために別々のスクリプトを作成する必要があります。

多くのMySQLインスタンスを同じマシンにデプロイする予定がある場合(なぜか質問する必要があります)、それぞれを「発見」する何らかの方法を持つカスタムのinitスクリプトを作成することができます(おそらく、 "共通の"レイアウトを含むディレクトリを調べることによって)、それらをループして、それぞれを起動します。もちろん、同じinitスクリプトは、それぞれのinitスクリプトを探し出し、適切にシャットダウンする必要があります。

0

唯一の確実な方法は、接頭辞オプションでソースからコンパイルすることだと思います。そのどちらか、またはmysql2を--defaults-fileオプションで起動するbashスクリプトを作成し、それを使って起動してください。

しかし、あなたが行ったように別のインストールを「作成する」ことは良くありません。パッケージをコンパイルすると、PREFIXは実行可能ファイルにハードコードされます。したがって、リソースを探すたびに、コマンドラインオプションを指定しない限り、その接頭辞から開始します。

私があなただったら、新しいプレフィックスでソースから再コンパイルするだけです。

関連する問題