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は携帯電話のカメラとアルバムを呼び出す機能を実装します
コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...
1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...
1. Get はサーバーからデータを取得するために使用され、Post はサーバーにデータを渡すために...
リレーショナル データベースでは、悲観的ロックと楽観的ロックがリソース同時実行シナリオのソリューショ...
目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...
Java環境変数を設定するここで、環境変数は etc/profile に設定され、つまり、すべてのユ...
目次1. データベース操作1.1 データベースの表示1.2 データベースを作成する1.3 データベー...
CentOS 7.3のインストール手順を図解しました。具体的な内容は次のとおりです。この記事では、v...
Tencent QQのホームページがリニューアルされ、Webフロントエンド開発がますます注目を集めて...
国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...
準備のメリットPrepare SQL が生成される理由。まず、MySQL サーバー上で SQL を実...
Vue foreach配列を記述し、jsで配列をトラバースする方法シナリオVueでAxiosを使用し...
目次1. ソート機能2. データベースを準備する3. データベースに関連するエンティティクラスの構築...
リアルタイム レプリケーションは、企業データをバックアップする最も重要な方法です。主に、ユーザーが送...
nginx プロセス モデルでは、トラフィック統計、トラフィック制御、データ共有などのタスクを完了す...