以下の内容はhttps://next4us-ti.hatenablog.com/entry/2024/12/26/105554より取得しました。


addInstanceがIP allowlistが原因で失敗する

はじめに

この記事は MySQL Advent Calendar 2024 15日目の記事です。

(なんか、いつの間にか15日の人のが消えていたので代わりに埋めてみました)

何をしてどうなった?

MySQL Shellを使って、既存のグループレプリケーションaddInstance()を追加しようとして、以下のようなエラーで失敗した。

エラーメッセージ

エラーログに以下のようなメッセージが出ます。

[GCS] Connection attempt from IP address ::ffff:xxx.xxx.xxx.xxx refused. Address is not in the IP allowlist.

理由

group_replication_ip_allowlistで追加可能なアドレスを絞っていて、追加しようとしたインスタンスのIPが含まれていなかった。

そんなのmy.cnfに設定した覚えない!と思ってるのに、SHOW GLOBAL VARIABLES;実行すると設定されている場合、createCluster()、addInstance、rejoinInstance()とかで過去にipAllowlistというオプション使ったんじゃないかなと思います。

ipAllowListオプションについてはコチラ

対応方法

グループのメンバーが通信に使用するすべてのIPアドレスを、group_replication_ip_allowlistに追加します。

例えば、my.cnfなどに

group_replication_ip_allowlist = '10.11.172.10,10.11.172.11,10.11.172.12'

と書いてあり、追加したいのが10.11.172.13だとすれば、

mysql> SET GLOBAL group_replication_ip_allowlist = '10.11.172.10,10.11.172.11,10.11.172.12,10.11.172.13';
-- my.cnfにも再起動時のため追加しておく

または

mysql> SET PERSIST group_replication_ip_allowlist = '10.11.172.10,10.11.172.11,10.11.172.12,10.11.172.13';
-- こっちは mysqld-auto.cnf に自動で書き込まれるのでmy.cnfの対応不要

上記の例のように、IPv4アドレスで設定している場合、エラーログに IPv4 アドレスの前にIPV4-mapped IPv6 アドレスの「::ffff:」が付く形で表示されますが、パラメータ設定時は普通の書き方でOKです!

メンバーの再起動は不要ですが、メンバー全てに対して行う必要があることに注意してください。

関連ドキュメント

終わりに

実はこれ書いているのアドカレ終わった12月26日w

次は 社内の人間よりMySQLに詳しい気がする、自他ともに認めるAPI @yoku0825 さんです。




以上の内容はhttps://next4us-ti.hatenablog.com/entry/2024/12/26/105554より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14