web-dev-qa-db-ja.com

NetAppを使用したNFS上のMySQL5.1.34

これはまだ悪い考えですか?古いバージョンのMySQLはNFSではパフォーマンスが悪いことを知っています。問題はfsnc()やO_DIRECTの使用にあると思います。問題がほぼ解決された場合、特に大規模な(数千万のレコードを持つ複数のテーブル)InnoDBデータベースの周りに一般的な落とし穴/落とし穴がありますか?最大20〜50回の読み取り/秒が表示される可能性があります

4
shrisha

あなたにとって良いニュースの最初の部分は、あなたが一年前に同じ質問をしたよりも、エーテル空間に今 より多くの情報 があるということです。私はこれを苦い経験から知っています。

Netappの公式見解では、MySQLは3つのプロトコルすべてでサポートされています。

ONTAP  MySQL Enterprise  NFS        iSCSI      FCP
7G     5.X               Supported  Supported  Supported
7G     4.X               Supported  Supported  Supported

MySQL Enterprise versions 4.X and 5.X are supported on all NetApp fabric
attached storage models running any release of Data ONTAP 7G for any server
platform supported by MySQL that is listed in the NetApp Host compatibility
matrix for each protocol.

良いニュースの2番目の部分は、MyISAMを言わなかったことです。そうでなければ、それは、お粗末なパフォーマンスと裏付けとなる情報がないことからなる、はるかに異なった、より暗い話になるでしょう。ブロックベースのiSCSIまたはFCPを使用する以外に選択肢はあまりありません。それらがうまく機能しないというわけではありませんが、ファイルベースとは少し異なる魚のやかんです。

代わりに、Netappは3つのストレージプロトコルすべてにわたってMySQL 5.0のいくつかの OLTPベンチマーク を公開しています。結果は、InnoDBエンジンが良好に機能し、Oracleで見られるプロトコルの違いと一致していることを示しています。 FCPは、スループットの点で最前線に立っています。 iSCSIは9%、NFSはFCPより16%遅れていました。これは、私たちが予想していたほど大きな違いではありません。

さらに役立つのは、同じドキュメントで、ベンチマークの数値を達成するために実行したNFSおよびInnoDB固有の手順が詳しく説明されていることです。これには、innodb_buffer_pool_sizeinnodb_flush_method、NFSの属性キャッシュタイムアウト、ソースボリュームのno_atime_updateの変更、および(Richardが上記で述べたように)ログの異なるマウントポイントの指定が含まれます。

個人的には、ローカルディスクなどの別のストレージにログを保存することはお勧めしません。ログは、すでにディスクに記録されているデータと密接に関連しています。それらを完全に分離すると、転倒に備える可能性があります。さらに、スナップショットを実行する場合は、MySQLを実行しているマシンを変更するか、ローカルディスクの信頼性がファイラーよりも低いことがわかります。

そうは言っても、あなたができる次善の策はそれを吸って見ることです。ドキュメントのベストプラクティスに基づいて環境をセットアップし、独自のデータを使用していくつかのベンチマークを実行します。現在のローカルディスクと比較して、パフォーマンスを評価します。

-

注:最初のリンクは現在制限されています。すでにNetappの顧客であるかどうかはわかりません。ただし、2番目のリンクは表示できるはずです。

6
Dan Carley

NFS4は、使用できる場合に最適です。私は少なくともnoatimeでマウントします。ローカルディスク上のログファイルの場所を指定することも検討する必要があります。ローカルストレージがない場合(VMで一般的)、プライマリストレージとは異なるネットワークインターフェイスを経由するマウントポイントにログを保存しようとする場合があります。

1
Bruno Bronosky

個人的には、NetApp for MySQLからディスクをマウントするときに、NFSの代わりにiSCSIを使用します。信じられないほど効率的で、ファイルシステムからLUNに直接アクセスできます。

0
Kevin Kuphal

Berkleydbを使用していない限り、MySQL/InnoDBはNFSに対して正常に機能します。 Netapp NFSのドキュメントに何が記載されているかはわかりませんが、「async」オプションを指定してNFSボリュームをマウントすると、書き込みがディスクに到達するのを待ってアプリケーションがブロックされることはありません。

0
robbyt

MySQL InnoDBコミットのパフォーマンスは、基盤となるIOがデータをディスクに同期できる速度に大きく依存します。これはネットワーク遅延の影響を大きく受けるため、NFS上でMySQLを実行すると、サーバーに関係なく大きな打撃を受けますネットワークが可能な限り高速であっても、ローカルディスクよりもはるかに低速になる可能性があります(ここでは、ローカルディスクがバッテリーバックアップのレイドコントローラーであると想定しています)。

一方、読み取りパフォーマンスは、ほとんどの場合、データベースのどれだけがRAMに収まるかに基づいています。データベース全体をRAM(または使用パターンによってはそのほとんど)に収めることができれば、innodb_buffer_poolをより大きく設定するだけなので、パフォーマンスは非常に良好になります。データであり、理論的には、NFSで読み取りを行う必要はありません。

0
MarkR