序文 MySQL クラスターを構築する場合、当然のことながら、データの一貫性を確保するために、データベースのマスターとスレーブの同期を完了する必要があります。マスタースレーブ同期には、1 つのマスターと複数のスレーブ、マスタースレーブの連鎖、複数のマスターと複数のスレーブなど、さまざまな方法があります。必要に応じて設定できます。ただし、マスターとスレーブの同期が必要な場合は、server-id の構成に注意する必要があります。そうしないと、マスターとスレーブのレプリケーション例外が発生します。 データベース データのレプリケーションとログ管理を制御するには、バイナリ ログ ファイル レコードとグローバル トランザクション ID に影響する server-id と server-uuid という 2 つの重要な構成があります。 サーバーID設定 マスター/スレーブ トポロジを使用する場合は、すべての MySQL インスタンスに一意のサーバー ID を指定してください。デフォルト値は 0 です。server-id=0 の場合、マスターはバイナリ ログを記録しますが、すべてのスレーブ接続を拒否します。スレーブは他のインスタンスへの接続を拒否します。 MySQL インスタンスの server-id はグローバル変数であり、直接表示できます。 mysql> '%server_id%' のような変数を表示します。 +---------------+-----------+ | 変数名 | 値 | +---------------+-----------+ | サーバー ID | 171562767 | +---------------+-----------+ セット内の 1 行 (0.00 秒) グローバル変数 server-id はオンラインで直接変更できますが、すぐには有効にならないため、変更後はサービスを再起動することを忘れないでください。再起動後、システム構成ファイルが再度読み込まれるため、以前の変更は無効になります。したがって、オンラインで変更するのではなく、構成ファイルを変更してサービスを再起動することをお勧めします。 #私の.cnf [mysqld] #レプリケーション ログ bin = mysql bin サーバーID=171562767 同期バイナリログ=1 binlog-ignore-db=mysql binlog-ignore-db=情報スキーマ サーバーIDの使用 サーバー ID は、連鎖マスター スレーブまたはマルチ マスター マルチ スレーブ トポロジで SQL ステートメントの無限ループを防ぐためにデータベース インスタンスを識別するために使用されます。
server-id を繰り返さない理由を説明するために、2 つの例を挙げてみましょう。 プライマリデータベースとスタンバイデータベースのサーバーIDが重複している場合 デフォルトでは replicate-same-server-id=0 であるため、スレーブ データベースはマスター データベースと同期されたすべてのデータをスキップし、マスター データとスレーブ データの間に不整合が生じます。 2つのスタンバイデータベースのサーバーIDが重複している場合 これにより、スレーブ データベースとマスター データベース間の接続が時々切断され、多数の例外が発生します。 MySQL の設計によれば、マスター データベースとスレーブ データベースはイベント メカニズムを通じて接続され、同期されます。新しい接続が行われたときに、サーバー ID が同じであることがわかった場合、マスター データベースは以前の接続を切断し、新しい接続を再登録します。データベース A がメイン データベースに接続されると、データベース B がそれに接続し、データベース A が切断されます。その後、データベース A が再接続し、このサイクルが繰り返され、大量の異常な情報が発生します。 サーバーID生成のルール サーバー ID は同じにすることはできないため、インスタンスが 10 個ある場合、それぞれが異なることをどのように確認すればよいでしょうか?一般的に使用される方法はいくつかあります。
上記の方法はすべて問題ありませんが、最大値 2^32-1 を超えないように注意し、値は 2 より大きいことが望ましいです。私が使用している方法は、IP アドレスの下 2 桁 + ローカル MySQL インスタンス番号ですが、Docker を使用して複数のインスタンスを管理している場合、これをどのように生成しますか? 何かエレガントな解決策があるかどうか考えていただけますか? サーバーUUID設定 MySQL サービスは、server-uuid 構成を自動的に作成して生成します。
シェル> cat ~/mysql/data/auto.cnf [自動] サーバーUUID=fd5d03bc-cfde-11e9-ae59-48d539355108 auto.cnf 構成スタイルは my.cnf に似ていますが、このファイルには auto 構成ブロックと server-uuid 構成行のみが含まれています。自動的に作成されるため、内容を変更しないでください。 マスター スレーブ トポロジでは、マスターとスレーブは互いの UUID を認識できます。Master_UUID フィールドを表示するには、マスターで show slave hosts を使用し、スレーブで show slave status を使用します。 server-uuid パラメータは server-id パラメータを置き換えるものではありません。これらは機能が異なります。マスターインスタンスとスレーブインスタンスを同期するときに、マスターインスタンスとスレーブインスタンスの server-uuid が同じである場合、エラーが報告され、システムが終了します。ただし、replicate-same-server-id=1 を設定することでエラーを回避できます (非推奨)。 参考文献
要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Linux システムで httpd の自動インストールと構成を Ansible で実装する方法
>>: Vite2とVue3を使用したウェブサイトの国際化を実現するプロセス全体
NGINX の全体的なアーキテクチャは、連携して動作する一連のプロセスによって特徴付けられます。メイ...
質問1 解決するサービスを開始します: service mysqld start; /sbin/ip...
目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...
1. はじめにWHMCS は、ユーザー管理、請求書の支払い、ヘルプ サービスなど、オンライン ビジネ...
目次1. React フックと純粋関数2. シンプルなmyUseState 3. myUseStat...
使用する仮想マシンは、サーバー環境をシミュレートする CentOS 8.4 です。外部ネットワークに...
目次データベース接続数が急増した理由は何ですか? 1. はじめに2. 知識ポイント3. 練習するIV...
序文MySQL の InnoDB エンジンがインデックスの保存に B+tree を使用する理由は、デ...
XML/HTML コードコンテンツをクリップボードにコピー<ボタンスタイル= "カ...
目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...
目次1. CentOS7+MySQL8.0、yumソースインストール2. MySQLにログインしてパ...
今日、私はクラスメートが問題を解決するのを手伝いました - Tomcat の起動が非常に遅く、約 5...
クエリ速度が遅くなる理由は多数ありますが、最も一般的な理由は次のとおりです。 1. インデックスがな...
ポップアップは、現在のウィンドウにメニューツールバーがあるかどうかとは関係ありません。ページにスクリ...
テーブル ヘッダーが固定されている場合は、それを 2 つのテーブルに分割する必要があります。1 つの...