MySQL データベースのホットスタンバイにおける問題点の分析

MySQL データベースのホットスタンバイにおける問題点の分析

以前、MySQL データベースのデュアルマシン ホット スタンバイの設定方法を紹介しました。ご興味のある方はご参照ください。このセクションでは、重要なリンクと注意が必要な領域をまとめ、分析することに重点を置いています。

I. はじめに

MySQL バージョン: 5.7.20

最初のメインサーバー IP:192.168.71.139

2番目のメインサーバーのIP:192.168.71.141

2. 構成

最初のプライマリサーバー 192.168.71.139

1: /etc/mysql/my.cnf ファイルを変更します。ここでの # はコメントであることに注意してください。設定ファイルには書き込まないでください。

server-id = 141 # サーバー ID。繰り返すことはできません。IP の最後の 3 桁を使用することをお勧めします。
ログ bin = mysql bin
binlog-ignore-db = mysql,information_schema #binlogログを書き込むライブラリを無視する
auto-increment-increment = 2 #フィールド変更の増分値
auto-increment-offset = 1 #初期フィールドIDは1です
slave-skip-errors = all #すべてのレプリケーションエラーを無視する

2: MySQLにログインし、他のサーバーにレプリケーションを許可するアカウントを作成する

'password' で識別される 'mysql account'@'%' に *.* のレプリケーション スレーブ権限を付与します。

3: show master statusを使用してステータスを照会する

2番目のプライマリサーバーは192.168.71.139です

1: /etc/mysql/my.cnf ファイルを変更します。ここで、server-id は 139 であり、残りは変更しません。

ステータスを照会するには、show master statusを使用します。

この時点で、両方のサーバーでmysqlを再起動する必要があります。

192.168.71.141 で同期ステートメントを実行する

master_log_fileの値は139サーバから取得され、show master statusを実行した後のFileフィールドに表示されます。

master_log_fileの値は139サーバから取得され、show master statusを実行した後のPositionフィールドに表示されます。
マスターをmaster_host='192.168.71.139'、master_user='master2'、master_password='123456'、master_log_file='mysql-bin.000002'、master_log_pos=154に変更します。

192.168.71.139で同期ステートメントを実行する

master_log_fileの値は141サーバから取得され、show master statusを実行した後のFileフィールドに表示されます。

master_log_fileの値は141サーバから取得され、show master statusを実行した後のPositionフィールド

マスターをmaster_host='192.168.71.141'、master_user='master1'、master_password='123456'、master_log_file='mysql-bin.000002'、master_log_pos=154に変更します。

これで設定は終了です。MySQLを再起動してMySQLにログインし、 show slave status\Gで設定状況を確認します。Slave_IOが起動できず、以下のエラーが発生していることがわかります

マスターとスレーブの MySQL サーバー UUID が同じであるため、スレーブ I/O スレッドが停止します。レプリケーションが機能するには、これらの UUID が異なる必要があります。

ログには、マスターとスレーブのUUIDが重複していることが示されています。2つのサーバーがクローン化されているため、 /var/lib/ mysql/auto.cnfを変更する必要があります。

ここでは最後の文字のみを変更しました。変更しすぎると、mysql を起動できなくなるためです。変更が完了したら、MySQLを再起動し、MySQLにログインして、以下に示すようにshow slave status\Gを実行します。

3: テスト

任意のサーバーで次のSQLを実行します

テーブル tab141(id int 主キー)を作成します。

テーブル tab139(id int 主キー) を作成します。

139サーバーで次のSQLを実行します

tab139の値(1)に挿入します。

141サーバーで次のSQLを実行します

tab141の値(2)に挿入します。

結果は次のとおりです。

ご質問がございましたら、下のコメント欄でお気軽にご相談ください。

以下もご興味があるかもしれません:
  • MySQL バックアップとリカバリ ホット スタンバイ (3)
  • Linux システムで MySQL ホット バックアップを実装するための詳細な手順 (MySQL マスター スレーブ レプリケーション)
  • Mysqlデータベースデュアルマシンホットスタンバイの構成方法
  • MySQLデュアルマシンホットバックアップの実装手順

<<:  VMware 仮想マシンの 3 つのネットワーク方式と原則 (概要)

>>:  Vueがビデオアップロード機能を実装

推薦する

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

vue3のテレポート瞬間移動機能の使い方を詳しく解説

vue3テレポート瞬間移動機能の使用は参考用です。具体的な内容は次のとおりです。テレポートは通常、瞬...

MySQL の接続数が多すぎるエラーの原因と解決策

目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

ビューポートの基本原理と詳細な使用方法

1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...

あまり使われていない、または誤解されている HTML タグ 10 個

ここでは、あまり使われていない、または誤解されている 10 個の HTML タグを紹介します。あまり...

XAML でボタンを円として再描画する方法

XAML レイアウトを使用する場合、インターフェイスを Metro 風にするために、一部のボタンでは...

js 実行コンテキストとスコープの概要

目次序文文章1. JavaScriptコードの実行プロセスに関連する概念2. 実行コンテキストと実行...

Dockerfile を使用して Java ランタイム環境のミラーを作成する方法

現在の環境は次のとおりです。セントロス7.5 docker-ce 18.06.1-ce 1. まずc...

JQueryはアニメーション効果の非表示と表示を実装します

この記事では、アニメーション効果の非表示と表示を実現するためのJQueryの具体的なコードを参考まで...

MySQL で不明なフィールド名を回避する方法

序文この記事では、DDCTF の 5 番目の質問、つまり不明なフィールド名をバイパスする手法を紹介し...

位置固定オフセット問題を解決する方法の詳細な説明

質問CSS 固定配置の position:fixed は非常に使いやすいです。ブラウザのビューポート...

MySQLのデフォルトのソートルールに基づく落とし穴

MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...

LinuxとGNUシステムの関係の詳細な説明

目次私たちが毎日実行している Linux システムとは何でしょうか? LinuxカーネルとGNUシス...

Vueはドラッグ可能なツリー構造図を実装します

目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...