web-dev-qa-db-ja.com

MySQL InnoDBクラスターをシングルプライマリモードからマルチプライマリモードに変更するにはどうすればよいですか?

Mygoalは、ラボ環境で、MySQL InnoDBクラスターをマルチプライマリモードでセットアップすることです

私は多くを読みましたが、この設定を機能させることができません。

Ubuntu 16.04.3サーバーLTS x 3 SQL0-SQL2

Ubuntu 16.04.3サーバーLTS x 2 REP0-REP1

REP0がベアメタル上にあり、REP1がオフラインであることを除いて、すべてのサーバーインスタンスは仮想マシンにあります。

OracleからMySQLサーバー8.0をインストールAPT repo using mysql-apt-config_0.8.10-1_all.deb

これらのサーバーは、多くの構成変更が機能しているセットアップを見つけようとして上下し続けています。

すべてのボックスでLegacy Authentication Methodを使用してMySQLサーバー8.0を設定します。

現在の/etc/mysql/my.cnfは、Justin Ellingwood @ DigitalOcean に基づいています。

これは、 SQL0/etc/mysql/my.cnfです。このマシンは、かつてはシングルプライマリセットアップのプライマリであり、正しく機能しませんでした。

他の/etc/mysql/my.cnfファイルは、# Host specific replication configurationセクションが変更されたこのファイルと非常に似ています。

現在解決しようとしているエラーは/var/log/mysql/error.logからのものです。

[ERROR] Plugin group_replication reported: 'It is not allowed to run single primary mode with 'enforce_update_everywhere_checks' enabled.'

はい、マルチプライマリモードが必要なため、my.cnfにこれらを設定しています。シングルプライマリモードで実行したくありません。

loose-group_replication_single_primary_mode = OFF
loose-group_replication_enforce_update_everywhere_checks = ON

これらがマルチプライマリモードになり、エラーにならないようにするには、どこで、どのように、他に何を変更する必要がありますか?

3
jc__

InnoDBクラスターのセットアップと管理に MySQL ShellとそのAdminAPI を使用しない理由は何ですか?

AdminAPIを使用すると、マルチプライマリクラスタを非常に簡単に作成できます。例:

var cluster = dba.createCluster("myCluster", {multiPrimary: true})

また、シェルを使用して管理する実行中のグループレプリケーショングループが既にある場合は、単に " adopt "にすることができます。

var cluster = dba.createCluster("myCluster", {adoptFromGR: true})

また、8.0.14以降、実行中のInnoDBクラスターをシングルプライマリモードからマルチプライマリモード「ライブ」に変更できます。 AdminAPIはその操作のための関数を提供します:

<Cluster.>switchToMultiPrimaryMode()>

また、実行中のクラスターをシングルプライマリモードに戻すこともできます。

<Cluster.>switchToSinglePrimaryMode([instance])

また、クラスターのメンバーを新しいプライマリとして選出する場合も同様です。

<Cluster.>setPrimaryInstance(instance)

これらの新機能を発表したブログ投稿をご覧ください。

https://mysqlserverteam.com/mysql-innodb-cluster-changing-cluster-topology-modes-live/

詳細については、公式の serguide を確認してください。

乾杯、

ミゲル

1
Miguel Araújo

これは[〜#〜] hack [〜#〜]であり、マルチマスタークラスターを機能させます。

これは[〜#〜]ではありません[〜#〜]良い答えですが、私は動作しているクラスターがあります...

最初に3 VM=を削除して再作成しました。JustinEllingwood @ DigitalOceanの指示を使用しました。

...これらはすべてのインスタンスでテストデータベースを読み取り/書き込みで新規インストールしたためです。

REP0では、ベアメタルマシン。

Sudo apt-get --purge remove sql*

はい、テーブルを削除します

Sudo apt-get update

oracleリポジトリが表示されない...

readd repos

Sudo dpkg -i /opt/mysql_InnoDB_cluster/mysql-apt-config_0.8.10-1_all.deb

Sudo apt-get update

リポジトリは現在存在しています。

Sudo apt-get install mysql-server mysql-Shell

SELECT:レガシー認証方法を使用(MySQL 5.x互換性を維持)

この時点で、Justin Ellingwood @ DigitalOceanからの指示を使用しました。

REP0が読み取り/書き込みメンバーになりました。

これは質問に答えます[〜#〜] [〜#〜]しません。

シングルマスターからマルチマスタークラスターに変更するには、どのテーブルを空にする、削除する、または再作成する必要がありますか?

0
jc__