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は携帯電話のカメラとアルバムを呼び出す機能を実装します
【歴史的背景】私は 3 年間 MySQL-DBA として働いてきましたが、MySQL が「基本的に利...
MySQL は強力なオープンソース データベースです。データベース駆動型アプリケーションの数が増える...
この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...
カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...
テーブルの共通プロパティ基本的な属性は、width (幅)、height (高さ)、border (...
目次1. Vスロットの紹介2. 匿名スロット3. 名前付きスロット4. スコープ付きスロット5. 動...
デスクトップ プラットフォームの Web レイアウトのメタ タグは誰もがよく知っています。これは常に...
Dockerのインストール手順をスキップする1. postgresqlイメージを取得する docke...
リアルタイム レプリケーションは、企業データをバックアップする最も重要な方法です。主に、ユーザーが送...
ドロップダウン メニューやスライド メニューを使用している Web サイトをたくさん見つけたので、私...
Docker を起動したら、利用できるオプションを見てみましょう。 公式のものがある場合は、もちろ...
イメージは hub.docker.com に保存できますが、ネットワーク速度が比較的遅いです。内部環...
mysqlは指定された期間内の統計データを取得します年別統計 選択 カウント(*)、 DATE_FO...
ビジネス上のニーズにより、急ぎの購入が発生することが多いため、ロード バランシング フロント エンド...
さて、質問させてください。MySQL で列を int(0) に設定すると何が起こりますか?この問題を...