MySQL PXC gcache 계산

MySQL PXC gcache 계산

내 서버에 대한 올바른 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하고 그 기능을 알아낼 수 있는 테스트(또는 개발!) 환경이 있어야 합니다 .

관련 정보