web-dev-qa-db-ja.com

MySQLがInnoDBクラスターにインスタンスを追加するときにserverIDが一意でないと誤って言っている

2番目のインスタンスをMYSQL Innodbクラスターに追加すると、次のエラーが表示されます

ERROR: Cannot add instance 'XXX' to the cluster because it has the same server ID of a member of the cluster. Please change the server ID of the instance to add: all members must have a unique server ID.
Cluster.addInstance: Access denied for user 'XXX'@'XXX' (using password: YES) (RuntimeError)

ただし、2つのサーバーIDを確認すると、それらが異なることを確認できます

サーバー1

mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3     |
+---------------+-------+
1 row in set (0.00 sec)

サーバー2

show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.00 sec)

お知らせ下さい?

3
Wize

クラスターの管理に別のアカウントを使用していますか?つまり、アカウントを使用してクラスターを作成し、インスタンスを追加するために別のアカウントを使用していますか?それとも、パスワードが異なる同じアカウントですか?

その場合は、それがこの問題に遭遇する理由です。クラスターの管理に使用するアカウントには、すべてのクラスターメンバーで同じ資格情報が必要です。

Dba.configureInstance()を使用してclusterAdminアカウントを作成することをお勧めします。詳細は docs を参照してください。

現在のエラーメッセージは誤解を招きやすく、紛らわしいものです。これは間もなく改善され、ドキュメントもこの要件の概要を示すように改善されます。

乾杯、ミゲル

0
Miguel Araújo

サーバーIDを変更した後、サーバーを再起動しましたか? server-idは動的ですが、次の警告があります マニュアル上

サーバーIDが0に設定されている場合、バイナリロギングが行われますが、サーバーIDが0のマスターはスレーブからの接続を拒否し、サーバーIDが0のスレーブはマスターへの接続を拒否します。サーバーIDを動的にゼロ以外の値に変更することはできますが、変更してもレプリケーションがすぐに開始されないことに注意してください。レプリケーションスレーブを初期化するには、サーバーIDを変更してからサーバーを再起動する必要があります

私はあなたの問題かもしれない野生の推測を与えています、それはレプリケーションを設定するときに人々が一度苦しむ非常に一般的な問題だからです。

編集:Re "興味深いことに、mysqlはmy.cnfファイルのserver_idを無視し、独自のファイルを選択しています。

次に、サーバーIDが正しく読み取られない構成の問題があります。--print-defaultsを使用して、ライブで適用されているファイルとオプションをデバッグし、パスが正しいアクセス許可、ファイルの存在を確認し、構成定義の重複を回避してください/意図しないインクルード。

3
jynus