私のサーバーの正しいgcacheを計算する方法を見つけようとしています。
https://www.percona.com/blog/2014/09/08/calculate-correct-size-percona-xtradb-clusters-gcache/
その記事では、計算に必要な値を取得するために次のことを行う方法について説明しました。
show global status like 'wsrep_received_bytes';
show global status like 'wsrep_replicated_bytes';
select sleep(60);
show global status like 'wsrep_received_bytes';
show global status like 'wsrep_replicated_bytes';
私の質問は、プロダクションブロックでselect sleep(60)を実行すると、MySQLのすべての読み取りが行われますか(mysqldスレッドを使用中にして)?本番環境で最適なgcache値を計算する方法は?
ベストアンサー1
MySQLはマルチスレッドです。 sleep(60)は接続(スレッドも可能)を占めますが、サーバー全体をブロックしません。最大接続数と同時に実行されるスレッド数は で設定されますmy.cnf
。 (本番環境ではProxySQLなどを設定することもできます。)
接続が失われるのを心配している場合は、これを防ぐ簡単な方法は、切断して休止状態にしてから再接続することです。たとえば、シェルでは次のようになります。
#!/bin/sh
mysql -e "show global status like 'wsrep_received_bytes'; show global status like 'wsrep_replicated_bytes';"
sleep 60
mysql -e "show global status like 'wsrep_received_bytes'; show global status like 'wsrep_replicated_bytes';"
ほとんどのプログラミング/スクリプト言語を使用して同様の操作を実行できます。
警告:MySQLを調整する前に、MySQLの詳細を知る必要があるようです。特に本番環境ではさらにそうです。そのためには、このようなことを試み、sleep
その機能を理解するためのテスト(または開発!)環境が必要です。