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は携帯電話のカメラとアルバムを呼び出す機能を実装します
textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...
目次前に書いてビジネスコードは環境変数を使用するwebpack.DefinePlugin プラグイン...
<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...
1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...
目次序文XA プロトコルMySQL XA で分散トランザクションを実装する方法序文MySQL が単一...
MySQLに何がインストールされているか確認する rpm -qa | grep -i mysql n...
この記事では、マスク レイヤーの中空化を実現する 4 つの方法を紹介します。みんなと共有し、自分用の...
日常の運用・保守作業では、nginx サービスが頻繁に使用され、nginx の高同時実行性によって生...
URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数...
Lottie は、Airbnb が開発した iOS、Android、React Native 向けの...
viteを使用してvue3プロジェクトを構築するターミナルで次のコマンドを実行すると、Vite を使...
これは主に CSS スタイルのコントロールと META タグです。コードをコピーコードは次のとおりで...
序文この記事は Meituan の大物によって書かれました。とても素晴らしいので、皆さんと共有したい...
この記事では、JavaScriptでキャンバスを使用して座標と線を描く具体的なコードを参考までに紹介...
MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...