1. はじめに MySQL グループ レプリケーション (略して MGR) は文字通り MySQL グループ レプリケーションを意味しますが、実際には現在 MySQL 5.7 および MySQL 8.0 バージョンのみをサポートする高可用性クラスタ アーキテクチャです。 これは、2016 年 12 月に MySQL によって正式にリリースされた新しい高可用性および高スケーラビリティ ソリューションであり、高可用性、高スケーラビリティ、高信頼性の MySQL クラスタ サービスを提供します。 これは、グループ レプリケーションの概念に基づいた新しい高可用性クラスター アーキテクチャでもあり、MariaDB Galera Cluster と Percona XtraDB Cluster によって完全に参照されています。 MySQL グループ レプリケーションは、Paxos をベースとする XCom 上に構築されています。XCom インフラストラクチャのおかげで、ノード間のデータベース ステート マシンのトランザクションの一貫性が理論上も実践上も保証されます。 一般的なマスター スレーブ レプリケーションの概念を拡張して、複数のノードが一緒にデータベース クラスターを形成します。トランザクションの送信には、半数以上のノードの同意が必要です。ノード間のトランザクションの一貫性を確保するために、クラスター内の各ノードでデータベース ステート マシンが維持されます。 アドバンテージ: ネイティブ レプリケーションと Paxos プロトコルに基づく、一貫性の高いグループ レプリケーション テクノロジー。 高い耐障害性、自動検出メカニズムを備えています。ダウンタイムが発生すると、問題のあるノードが自動的に削除され、他のノードは正常に使用できます (zk クラスターと同様)。異なるノード間でリソース競合が発生した場合は、先着順で処理され、自動ブレインスプリット保護メカニズムが組み込まれています。 高いスケーラビリティを備え、ノードはいつでもオンラインで追加および削除でき、新しいノードが他のノードと一致するまですべてのノードのステータスが自動的に同期され、新しいグループ情報が自動的に維持されます。 高い柔軟性、直接プラグインのインストール (5.7.17 以降には .so プラグインが付属)、シングルマスター モード、マルチマスター モード。シングルマスター モードでは、マスター データベースのみが読み取りと書き込みが可能で、その他のスレーブ データベースは super_read_only ステータスで追加され、読み取りのみ可能で書き込みはできません。障害が発生した場合、マスターが自動的に選択されます。 欠点: まだ新しすぎて、あまり安定していません。パフォーマンスは PXC よりわずかに劣ります。少なくとも同じコンピュータ ルーム内では、非常に高いネットワーク安定性が必要です。 2. 環境の紹介 MySQL バージョン: 8.0.15 データベースポート: 3306 クラスターレプリケーションポート: 33006 MGR プラグイン: 10.115.88.18: シングルマスター 10.115.88.19: から 10.115.88.20: から 3. MySQL 8.0.15をインストールする 3.1.1 ダウンロードアドレス: https://cdn.mysql.com//ダウンロード/MySQL-8.0/mysql-8.0.15-linux-glibc2.12-x86_64.tar 3.1.2: データベースをインストールする 解凍 tar -xf mysql-8.0.15-linux-glibc2.12-x86_64.tar -C /home/work 解凍されたディレクトリに入る cd /home/work tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql rm -rf *.xz 権限を付与してデータディレクトリを作成する cd /home/work tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql rm -rf *.xz chown -R 作業:作業 mysql mkdirデータ chown work:作業データ cd /home/work/mysql cd /home/work mkdir /home/work/relaylog chown -R work:work relaylog cd /home/work/mysql mkdir run chown -R work:work run my.cnfファイルを追加する [クライアント] デフォルトの文字セット=utf8 ソケット=/home/work/mysql/run/mysql.sock [mysqld] ユーザー = 仕事 ポート = 3306 ベースディレクトリ=/home/work/mysql データディレクトリ=/home/work/data ソケット=/home/work/mysql/run/mysql.sock pid ファイル = /home/work/mysql/run/mysqld.pid # さまざまなセキュリティリスクを防ぐために、シンボリックリンクを無効にすることをお勧めします シンボリックリンク=0 小文字のテーブル名 = 1 サーバーID = 183306 ログ bin = mysql bin ログ bin インデックス = binlogs.index binlog_format = 行 binlog_rows_query_log_events = オン binlog_checksum = なし スレーブパラレルタイプ = LOGICAL_CLOCK スレーブ並列ワーカー = 4 スレーブ_preserve_commit_order = 1 #GITD gtid_mode = オン 強制GTID一貫性 = 1 ログスレーブ更新 = 1 binlog_gtid_simple_recovery = 1 リレーログ = /home/work/リレーログ/リレー.log リレーログインデックス = /home/work/relaylog/relay.index master_info_repository = テーブル リレーログ情報リポジトリ = テーブル plugin_load="group_replication=group_replication.so" #MGR : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 名前解決をスキップ 外部ロックをスキップ 文字セットサーバー=utf8 小文字テーブル名=1 イベントスケジューラ=オン log_bin_trust_function_creators=オン 最大接続数 = 3000 外部ロック = FALSE 最大許容パケット = 32M ソートバッファサイズ = 8M 結合バッファサイズ = 2M スレッドキャッシュサイズ = 300 #クエリキャッシュサイズ = 64M #クエリキャッシュ制限 = 4M 読み取りバッファサイズ = 8M innodb_buffer_pool_size = 8096M innodb_log_file_size = 128M innodb_log_files_in_group = 2 innodb_log_buffer_size = 2M innodb_flush_log_at_trx_commit = 1 同期バイナリログ = 1 [mysqld_safe] ログエラー=/home/work/data/err.log データベースを初期化する bin/mysqld --initialize --basedir=/home/work/mysql --lower-case-table-names=1 --datadir=/home/work/data/ --user=work 起動ファイルをコピーする cp サポートファイル/mysql.server /etc/init.d/mysqld 環境変数を追加する echo 'export PATH=/home/work/mysql/bin:$PATH' >>/etc/profile ソース /etc/profile データベースの起動 /etc/init.d/mysqld を起動します データベースのパスワードを変更する 'dashuaige' によって識別されるユーザー 'root'@'localhost' を変更します。 権限をフラッシュします。 4. MGRマスターを構成する 4.1.1 my.cnfファイルの設定 binlog を次のように変更します。 サーバーID = 103306 ログ bin = mysql bin ログ bin インデックス = binlogs.index binlog_format = 行 binlog_rows_query_log_events = オン binlog_checksum = なし スレーブパラレルタイプ = LOGICAL_CLOCK スレーブ並列ワーカー = 4 スレーブ_preserve_commit_order = 1 GTID を次のように変更します。 gtid_mode = オン 強制GTID一貫性 = 1 ログスレーブ更新 = 1 binlog_gtid_simple_recovery = 1 リレーログ = /home/work/リレーログ/リレー.log リレーログインデックス = /home/work/relaylog/relay.index master_info_repository = テーブル リレーログ情報リポジトリ = テーブル MGRプラグインを追加 plugin_load="group_replication=group_replication.so" MGRパラメータを変更する : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : データベースを起動する /etc/init.d/mysqld を再起動 4.1.2 各ホストのホスト解像度を設定する [root@bj1-10-115-88-18 mysql]# cat /etc/hosts 127.0.0.1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト4 ローカルホスト4.ローカルドメイン4 ::1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト6 ローカルホスト6.ローカルドメイン6 10.115.88.18 bj1-10-115-88-18 10.115.88.19 bj1-10-115-88-19 10.115.88.20 bj1-10-115-88-20 4.1.3 mgrの最初のマスターノードを構成する 10.115.88.18 ホスト上の mysql で次の手順が実行されます。 ステップ1: レプリケーション用のユーザーを作成する sql_log_bin=0 を設定します。 'repuser123' によって識別されるユーザー repuser@'%' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを repuser@'%' に付与します。 'repuser123' によって識別されるユーザー repuser@'127.0.0.1' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを repuser@'127.0.0.1' に付与します。 'repuser123' で識別されるユーザー repuser@'localhost' を作成します。 repuser@'localhost' に *.* 上のレプリケーション スレーブ、レプリケーション クライアントを付与します。 sql_log_bin=1 を設定します。 ステップ2: レプリケーションに使用するユーザーを構成する チャネル 'group_replication_recovery' のマスターを master_user='repuser'、master_password='repuser123' に変更します。 ステップ3: mysqlグループレプリケーションプラグインをインストールする 注意: my.cnf に plugin_load="group_replication=group_replication.so" と記述した場合、plugin group_replication soname 'group_replication.so' をインストールする必要はありません。 プラグインを表示してインストールが成功したかどうかを確認します。 ステップ4: グループを作成する(正式には、レプリケーショングループを初期化することです) グローバル group_replication_bootstrap_group を on に設定します。 グループレプリケーションを開始します。 グローバル group_replication_bootstrap_group を off に設定します。 performance_schema.replication_group_members から * を選択します。 5. 残りの2つのノードを設定します。 すべてのスレーブ ホスト上の mysql で次の手順が実行されます。 ステップ1: レプリケーション用のユーザーを作成する sql_log_bin=0 を設定します。 'repuser123' によって識別されるユーザー repuser@'%' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを repuser@'%' に付与します。 'repuser123' によって識別されるユーザー repuser@'127.0.0.1' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを repuser@'127.0.0.1' に付与します。 'repuser123' で識別されるユーザー repuser@'localhost' を作成します。 repuser@'localhost' に *.* 上のレプリケーション スレーブ、レプリケーション クライアントを付与します。 sql_log_bin=1 を設定します。 ステップ2: レプリケーションに使用するユーザーを構成する チャネル 'group_replication_recovery' のマスターを master_user='repuser'、master_password='repuser123' に変更します。 ステップ3: mysqlグループレプリケーションプラグインをインストールする 注意: my.cnf に plugin_load="group_replication=group_replication.so" と記述した場合、plugin group_replication soname 'group_replication.so' をインストールする必要はありません。 プラグインを表示してインストールが成功したかどうかを確認します。 ステップ4: 先ほど作成したレプリケーショングループに参加する グループレプリケーションを開始します。 performance_schema.replication_group_members から * を選択します。 次のエラーが発生します これはbinlogによって発生したエラーです。以下を実行してください マスターをリセットします。 グループレプリケーションを開始します。 performance_schema.replication_group_members から * を選択します。 MGR ステータスを確認します。 MGRマスターの読み取りおよび書き込みステータスを表示します MGRの2つのスレーブの読み取りおよび書き込みステータスを確認します これで、MySQL 8.0.15 で MGR シングル マスターと複数のスレーブを構成する方法についての記事は終了です。MySQL MGR シングル マスターと複数のスレーブに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Vueは携帯電話のカメラとアルバムを呼び出す機能を実装します
コードをコピーコードは次のとおりです。 <iframe id="myFrameId&...
デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...
目次1. ルートパスワードを忘れてしまい、データベースにアクセスできない: DBA にとって、スーパ...
1. 以前のバージョン yum 削除 docker docker-client docker-cli...
ホワイトリストルールの構文:基本ルール wl:ID [否定] [mz:[$URL:target_ur...
ここで、次のような項目をフォームに追加したいとします: 現在いる都市を参照します。ここで私たちが話し...
目次導入建築ESXIの利点vSphere とは何ですか? 2. 仮想マシンの利点3. 仮想マシンを使...
知識への依存Go クロスコンパイルの基礎Dockerの基礎Dockerfileカスタムイメージの基本...
目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...
Cudaがインストールされているかどうかを確認してくださいアナコンダプロンプトに入力nvcc -V...
この記事では、電子商取引プラットフォームで商品の詳細を表示する一般的な例を紹介します。たとえば、ある...
目次意味コンストラクタ本体は異なる戻り値なし戻りオブジェクト非オブジェクトを返すプロパティバインディ...
月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...
エラーメッセージ:エラー 2002: ソケット '/tmp/mysql.sock' ...
最近友人からDockerを触ったことがあるかと聞かれました。あまり自信がなかったので答えられませんで...