オンラインで Group Replication の設定が変更できる3つの新機能
- Changing a Group’s Primary Member
- Changing a Group’s Mode
- Using Group Replication Group Write Consensus
前々回、1. Changing a Group’s Primary Member の検証を行い、前回、2. Changing a Group’s Mode の検証 を行いましたので、今回は、3. Using Group Replication Group Write Consensus を検証してみたいと思います
Using Group Replication Group Write Consensus とは
グループレプリケーション内で並行して実行できるコンセンサス・インスタンスの最大数を確認及び設定する機能となります
この、最大数はグループのイベント・ホライズンと呼ばれ、グループが並行して実行できるコンセンサス・インスタンスの最大数で、パフォーマンスを調整することが可能になります
環境
OS・MySQL バージョン
バージョン | |
---|---|
OS | Oracle Linux Server release 7.5 |
MySQL | 8.0.13 MySQL Community Server – GPL |
Group Replication 情報
1 2 3 4 5 6 7 |
mysql> SELECT group_replication_get_write_concurrency(); +-------------------------------------------+ | group_replication_get_write_concurrency() | +-------------------------------------------+ | 10 | +-------------------------------------------+ 1 row in set (0.00 sec) |
デフォルト値は 10 となっています
検証
値を変更してみる
200
という値に変更する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> SELECT group_replication_set_write_concurrency(200); +-----------------------------------------------------------------------------------+ | group_replication_set_write_concurrency(200) | +-----------------------------------------------------------------------------------+ | UDF is asynchronous, check log or call group_replication_get_write_concurrency(). | +-----------------------------------------------------------------------------------+ 1 row in set (0.01 sec) mysql> SELECT group_replication_get_write_concurrency(); +-------------------------------------------+ | group_replication_get_write_concurrency() | +-------------------------------------------+ | 200 | +-------------------------------------------+ 1 row in set (0.00 sec) |
特に問題もなく、 変更できています
操作を実施するメンバーは、PRIMARY メンバーでなければいけないといった制約はありません
また、設定した際のメッセージにも出力されていますが、非同期で他のメンバーに伝搬しますので、各メンバーで、group_replication_get_write_concurrency() を実行すれば、設定値の伝搬具合を確認することが可能です
検証時はネットワーク負荷も無い状態でしたので、瞬時に伝搬されました
2. 250
という値に変更する
1 2 |
mysql> SELECT group_replication_set_write_concurrency(250); ERROR 1123 (HY000): Can't initialize function 'group_replication_set_write_concurrency'; Argument must be between 10 and 200. |
エラーメッセージにも出力されていますが、設定可能な値は、10 から 200 の範囲のようです
マニュアル にもきちんと書かれていました
まとめ
具体的に、設定変更に伴い、パフォーマンスにどれだけ影響を及ぼすのか?といった値まで示すことができていませんが、低速なネットワークを利用されていたり、遠隔地とのグループレプリケーション構成を組まれている場合には、この機能の利用も考えてみてはいかがでしょうか