web-dev-qa-db-ja.com

同じdatadirフォルダーを指す異なるポートを使用する異なるサービス

mysqla.ini(ポート番号= 3306)設定と...\dataのdatadirフォルダーを使用してサービスMySQLaを既にインストールしたとします。

それでは、mysqlb.ini(ポート番号= 3307)を設定して別のサービスMySQLbをインストールし、...\dataにdatadirフォルダーを共有することは可能ですか?

システムスキーマ(mysql、information_schema、performance_schema)との競合はありますか?

Datadirを別のフォルダー(...\dataaと...\datab)に配置しようとしましたが、正常に機能しています。

1
Azleen Ismail

InnoDB

InnoDBアーキテクチャに注意してください(写真提供:Percona CTO Vadim Tkachenko)

InnoDB Architecture

データベースが読み取り/書き込みの場合、InnoDBが複数のインスタンスを許可できない理由について書きました

唯一の選択肢は、InnoDBを読み取り専用モードで起動することです(これについて言及している私の唯一の投稿を参照してください 読み取り専用データディレクトリでmysqldを起動する方法は? および MySQL5.6ドキュメントReadOnly InnoDB設定 )。

MyISAM

データベースがすべてMyISAMであるか、InnoDBとMyISAMが混在している場合、MyISAMテーブルはクラッシュ状態になる可能性が非常に高くなります(残念ながら、これは単一のmysqldインスタンスにも当てはまります)。

MyISAMテーブルを開くたびに、MyISAMテーブルのヘッダーにカウンターがあり、MyISAMテーブルが処理する開いているファイルの数を監視することに注意してください(私のMar 15, 2012の答えを参照してください MySQLを使用する理由テーブルがクラッシュしますか?どうすればそれを防ぐことができますか? )。単一のmysqldインスタンスがクラッシュした場合、テーブルはクラッシュしたと見なされます。これにより、MyISAMテーブルを修復する必要があることを示す警告がエラーログに蓄積されます。これが単一のmysqldインスタンスの場合である場合、複数のインスタンスで発生する可能性がはるかに高くなります。これは、mysqldインスタンスが innodb_read_only および read_only を有効にして開始された場合でも当てはまります。

あなたの質問

MysqlスキーマにはいくつかのMyISAMテーブルが含まれています。彼らは小さい。それらがクラッシュした場合でも、それらに対してREPAIR TABLEを実行してすばやく修正できますが、修復できない場合、認証の問題に対処する可能性は100万分の1です。

.iniについておっしゃっていたので、Windowsを使用していると思います。 MySQLに関して言えば、Windowsでのファイル処理のロックは、Linuxよりも厳密になる傾向があります。そのため、InnoDBは、読み取り専用モードではより煩雑になるか、遅くなる可能性があります。

結論

  • データベースが読み取り/書き込みの場合、それは問題外です
  • データベースが読み取り専用の場合
    • データベースにMyISAMテーブルがある場合、ファイルハンドル数の破損、さらにはデータの破損の対象となる可能性が高くなります。
    • データベースがすべてInnoDBの場合、それは可能です。
0
RolandoMySQLDBA

番号! 同じファイルにMySQLの異なるインスタンスからアクセスさせようとしないでください。コードには、それらの間のアクセスを調整する方法があります。 (もしそうなら、MySQLの速度が遅くなります。)

1
Rick James