ホームページ  >  記事  >  データベース  >  MySQL 8.0.2 の新しいレプリケーション機能の詳細な紹介

MySQL 8.0.2 の新しいレプリケーション機能の詳細な紹介

黄舟
黄舟オリジナル
2017-09-11 11:25:401720ブラウズ

翻訳者: Zhishutang Xingyao チーム

MySQL 8.0.2 レプリケーションの新機能

MySQL 8 はますます改良されており、これにより MySQL レプリケーション R&D チームにも熱意が高まりました。私たちは、新しい興味深い機能を導入することで、MySQL レプリケーションを全体的に改善するために熱心に取り組んできました。さらに、コミュニティからの提案やフィードバックにも耳を傾けました。したがって、最新バージョン (MySQL 8.0.2) のマイルストーン リリースを皆さんと一緒に目撃できることを光栄に思い、注目すべき変更点のいくつかをまとめました。これらの新機能に関する洞察を共有しているので、以下のブログをフォローしてください。

主に次の点で MySQL グループ レプリケーションを強化しました:

  • グループを脱退するメンバーに変更を許可しない: グループ メンバーがグループを脱退するたびに、脱退するメンバーは自動的に super_read_only を設定します。これにより、偶発的な事故が防止されます。 DBA、ユーザー、またはルーター/プロキシ/ロードバランサーなどによる変更。グループ レプリケーションから離脱したメンバーは変更できないというデフォルトに加え、サーバーの起動時に super_read_only パラメータを設定してグループ レプリケーション プラグインを開始することもできます。グループ レプリケーション操作が成功すると、super_read_only の値が自動的に調整されます。マルチマスター モードでは、すべてのノードは super_read_only パラメーターを設定しません。シングルマスター モードでは、マスター ノードを除き、他のすべてのノードは super_read_only を ON に設定します。残念ながらグループ レプリケーションの開始に失敗した場合、super_read_only パラメータは設定されず、書き込み操作はできなくなります。これらの最新の変更は、MySQL 5.7.19 および MySQL 8.0.2 にも適用されます。これらすべての大きな部分は、私たちがコミュニティからのフィードバックに耳を傾け、それを開発し、強化したことにあります。 --ここで Kenny Gryp に感謝します

  • パフォーマンス スキーマで詳細情報を表示できます: パフォーマンス スキーマの既存のテーブルで、関連する統計情報の可読性が向上しました。 「replication_group_members」テーブルと「replication_group_member_stats」テーブルも拡張され、グループ メンバーのロール情報、グループ メンバーのバージョン、トランザクション カウンター (ローカル/リモート) を明確に確認できるようになりました

  • を割り当てることでメイン データベースの選択を指定します。 weights : ユーザーは、グループ メンバーの重みを指定することでマスター データベースの選択を制御できます。既存のマスター ノードがグループ レプリケーションを終了すると、最も高い重みを持つノードがマスター ノードに昇格します。

  • フロー制御メカニズムにいくつかの微調整項目が追加されました。ユーザーはフロー制御コンポーネントをより細かく調整できるようになりました。各メンバーの最小クォータ、グループ全体の最小コミット クォータ、プロセス制御ウィンドウなどを定義できます。

MySQL 8.0.1 では、MySQL レプリケーション コア フレームワークに多くの魅力的な機能が追加されました。 MySQL 8.0.2 では、これに基づいて、主に次のような大幅な改善が加えられています:

  • ディスクがいっぱいの場合でも、レシーバー (IO) スレッドの管理が強化されました: この機能は、レシーバーと他のスレッドとの関係を改善します 内部の改善調整を効率化し、相互の競争を減らします。エンド ユーザーにとって、これは、ディスクがいっぱいになって受信スレッドがブロックされた場合でも、SHOW SLAVE STATUS などの監視操作がブロックされなくなることを意味します。また、新しいスレッド状態 (受信側スレッドがディスク領域リソースを待機している) も導入されます。さらに、ディスクがいっぱいで、受信側スレッドが未完了の作業を続行できるようにディスク領域を解放できない場合、今度は、次のことが可能になります。手動で停止すれば、通常は問題ありません。ただし、その時点で書き込みトランザクションがクリアされ、リレー ログが一貫した状態にない場合は、受信スレッドがリレー ログをポーリングし、ディスク領域が使用可能になるのを待つときに特別な注意を払う必要があります。

  • バイナリ ログにさらに多くのメタデータ情報を記録します。グローバル トランザクション ログ イベントにトランザクション長を追加します。これは今後の最適化作業に非常に役立ち、バイナリ ログの可読性も向上します。

MySQL レプリケーションの内部を調べている場合は、クリーンアップ作業を行って、基本コンポーネントに興味深いサービスを追加したことを喜んで共有します:

  • グループ メンバー イベントは伝播可能内部の他のコンポーネントに送信します。新しい基盤となるサービス アーキテクチャを活用することで、グループ レプリケーション プラグインはサーバー内の他のコンポーネントにメンバー関連のイベントを通知できるようになりました。たとえば、グループ メンバーに役割の変更や仲裁での負けなどを通知します。他のコンポーネントはこの情報に応答でき、ユーザーはこれらのイベントを記録および検出する独自のコンポーネントを開発することもできます。

  • XCom の内部構造からノードに関する冗長な情報を削除します (正確性を厳密に保証する標準的な Paxos 実装): XCom の構造からいくつかの冗長な情報を削除しました。これにより、XCom がよりシンプルになり、発生するエラーが少なくなり、簡単になります。どのノードがクラスターに参加するかクラスターから離脱するかを監視し、以前の情報をシステムに保持します。

  • XCom コアと新しいコーディング スタイルに対するいくつかの改善: Paxos 実装のソース コードを見ると、修正されたコードが読みやすく理解しやすくなっていることがわかります。

  • 古いバージョンのバイナリ ログ変換のためのいくつかのソース コードを削除しました: このクリーニング作業では、古いバージョンの My データベースによって生成されたいくつかのバイナリ ログを削除し、それらを新しいバージョンで認識できるいくつかのコードに変換しました (現在は MySQL5.0 以降のバージョンのみをサポートしています)。

もう 1 つの興味深い点は、MySQL 8.0.2 で次のレプリケーションのデフォルトを変更しました:

  • レプリケートされたメタデータ情報はデフォルトで INNODB システム テーブルに保存されます: これにより、MySQL レプリケーション機能が変更されます。強力であり、INNODB トランザクションの機能を使用して、レプリケーションがクラッシュしたときに指定された場所にリカバリし、自動的にリカバリすることが正確であることを確認できます。さらに、新機能ではメタデータをテーブル形式で保存する必要もあります (グループ レプリケーションやマルチソース レプリケーションなど)。これは MySQL 8 の新しいデータ ディクショナリと一致します。

  • 行データに基づくハッシュ スキャンはデフォルトで有効になっています。これは広く認識されていないアプローチかもしれませんが、スレーブ データベースに主キー制約のないテーブルがいくつかある場合、パフォーマンスが向上します。この場合、この変更により、すべての行を更新するために必要なテーブル スキャンの数が削減されるため、行ベースのレプリケーションを使用するときのパフォーマンスの低下が最小限に抑えられます (slave_rows_search_algorithms パラメータのデフォルトは TABLE_SCAN、INDEX_SCAN、HASH_SCAN)。

  • transaction-write-set-extraction パラメータはデフォルトで有効になっています。書き込みセット抽出を使用し、ユーザーのグループ レプリケーションを開始するか、マスター サーバー上で WRITESET ベースの依存関係を使用してマスターを追跡します。

  • バイナリログはデフォルトで有効になっています 有効期限:expire-logs-days はデフォルトで 30 (30 日) に設定されています

ご存知のとおり、私たちは非常に忙しかったです。実際、MySQL 8.0.2 マイルストーン リリースがリリースされました。レプリケーションの面では、多くの興味深い機能が追加されることを非常に楽しみにしています。

これらの機能を紹介および説明するための専用ブログが用意されています。テスト用に自分でダウンロードすることもできます (ダウンロード アドレス)。注意する必要があるのは、MySQL 8.0.2 または DMR バージョンです。自己責任で使用してください。皆様からのフィードバックを歓迎し、感謝しておりますことを忘れないでください。バグ レポート、機能レポート、メーリング リストのコピー、またはこの (または後続の) ブログ投稿にコメントを残してフィードバックをお寄せください。 MySQL 8 はますます改良され、さらにエキサイティングになります。

以上がMySQL 8.0.2 の新しいレプリケーション機能の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。