web-dev-qa-db-ja.com

OLTPのXtraDBを使用した専用Perconaサーバーのチューニング

OLTP DBのハードウェア仕様

  • ハイパースレッディングを備えたデュアルクアッドコアxeon
  • 24GB RAM
  • ハードウェアRAID10 BBU

ソフトウェア仕様

  • デフォルトのLVMパーティショニングを使用したUbuntu 10.04LTSの標準インストール
  • XtraDBがインストールされたPerconaサーバー

私の優先事項は、データの整合性/保護とそれに続くパフォーマンスです。

質問

  • RAIDカードには、設定すべきまたは設定すべきでない設定がありますか?私はBBUを持っているので、ライトバックを正しく設定する必要がありますか?
  • Ext4は大丈夫ですか、それともデータ用に別のxfsボリュームを作成する必要がありますか?
  • カーネルスケジューラは何に設定する必要がありますか?だめ?締め切り?
  • ハードウェア/ OS /ファイルシステムレベルで調整すべき他の設定はありますか?
6

「Percona Server」という言葉を頭に置いたとき、私に最初に飛びつくのは、「DBサーバーには複数のCPUがありますか?」最近では、それは当たり前のことです。残念なことに、ほとんどの人はMySQLまたはPercona Serverを構成してこれらの複数のCPUを呼び出すことを忘れています。

MySQL 5.1とInnoDB 5.1プラグイン、MySQL 5.5、Percona Serverには、スレッドを増やすオプションがあります。これらのオプションと、調整したい他のInnoDB機能を以下に示します。

innodb_thread_concurrency InnoDBが開いたままにできる並行スレッドの数の上限を設定します。これに設定する最適なラウンド数は、(2 X CPUの数)+ディスクの数です。 2011年5月に行ったPercona NYC Conferenceから直接学んだように、これを0に設定して、実行している環境に最適なスレッド数を見つけるようにInnoDBストレージエンジンに警告する必要があります。

innodb_concurrency_tickets は、並行性チェックを免除できないスレッドの数を設定します。この制限に達すると、スレッドの同時実行チェックが再び標準になります。

innodb_commit_concurrency は、コミットできる同時トランザクションの数を設定します。デフォルトは0なので、これを設定しないと、任意の数のトランザクションを同時にコミットできます。

innodb_thread_sleep_delay InnoDBキューに再び入る前にInnoDBスレッドが休止できるミリ秒数を設定します。デフォルトは10000(10秒)です。

innodb_read_io_threads および innodb_write_io_threads (両方ともMySQL 5.1.38以降)は、指定された数のスレッドを読み取りと書き込みに割り当てます。デフォルトは4で、最大は64です。

innodb_replication_delay innodb_thread_concurrencyに達した場合、スレーブにスレッド遅延を課します。

innodb_read_ahead_threshold 非同期読み取りに切り替える前に、設定されたエクステント数(64ページ[ページ= 16K])の線形読み取りを許可します。

私がもっと多くのオプションに名前を付ければ、時間は私を逃れるでしょう。それらについては MySQLのドキュメント で読むことができます。

ギアをRAIDに切り替える: RAID10に固執してください。他の冗長構成、特にRAID5を維持する方が簡単です。 。また、RAIDカードのファームウェアが最新であることを確認してください。そうしないと、RAIDファームウェアがOSカーネルと競合して、ディスクがクラッシュしたり、全体的なスループットが低下したりする可能性があります。

はどうかと言うと Is ext4 ok or should I create a separate xfs volume for the data?、ext3はファイルごとに2TBの最大サイズ制限を設定することに注意してください。 TBのデータを処理していない場合は、ext3またはext4を使用して汗を流さないでください。

MysqldはOSと競合しないため、個別のデータボリュームはディスクパフォ​​ーマンスを向上させます。

3
RolandoMySQLDBA