OceanBaseにおいて、RS(Root Service)はクラスタのリソース管理や分散戦略の実行を担うコアサービスとして、クラスタ内で極めて重要な役割を担っています。一方、RSに計算・ストレージリソースを提供するSYSテナント自体も、マルチレプリカによる自己選挙方式によって高可用性を実現しています。大規模な環境や高負荷な環境では、稀に(極端な状況やハードウェア障害などにより)SYSテナントのキュー滞留に起因する問題が発生することがあります。本節では、このような状況における応急処置の戦略と手法について解説します。
緊急時の対処方法
sys テナントのキューが積み残された場合、以下の方法で対処を試すことができます。
sysテナントリソースの拡張
各テナントに割り当てられるリソースの確認方法は以下のとおりです
obclient> SELECT a.tenant_name,a.tenant_id,b.name unit_config,c.name pool_name,b.max_cpu,b.min_cpu FROM OCEANBASE.DBA_OB_TENANTS a, OCEANBASE.DBA_OB_UNIT_CONFIGS b, OCEANBASE.DBA_OB_RESOURCE_POOLS c WHERE a.tenant_id=c.tenant_id AND b.unit_config_id = c.unit_config_id ORDER BY a.tenant_id desc;以下のコマンドを実行して、
sysテナントのCPUおよびメモリリソースを拡張します。ALTER RESOURCE UNIT unit_config_name min_cpu = 2,max_cpu = 2,memory_size = '2G',max_iops = 10000,min_iops = 10000;注意
OceanBase V3.2以降では、
resource unit設定の変更はCPUおよびメモリの設定のみが実際に有効であり、ディスクやIOPSなどの他のIOパラメータは一時的に無効となり、デフォルトで十分です。
stop serverの実行
sys テナントのキューが積み残された場合、stop server を実行してRS/SYSテナントが存在するマシンを隔離することができます。
obclient> ALTER SYSTEM STOP SERVER "xx.xx.xx.xx:2882";
問題ノードの再起動
問題のあるRSが存在するOBノードを再起動します。詳細については、OBServerノードの再起動を参照してください。